5.执行查询 8 V7 j3 I' H# N* r1 i5 E( j# {& ~
查询是使用最多的SQL命令。查询数据库需要凭借结构、索引和字段类型等因素。大多数数据库含有一个优化器(optimizer),把用户的查询语句转换成可选的形式,以提高查询效率。
4 A5 @. P% q% y# C/ o 值得注意的是MySQL不支持SQL92标准的嵌套的where子句,即它只支持一个where子句。其基本语法如下:
2 K8 Y7 f+ L& W$ v/ s SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] 8 E" A' z7 y0 }, v, c, b
[DISTINCT | DISTINCTROW | ALL] % R; s% D# h% d# k
select_expression,... % n5 H- I6 d2 K Q
[INTO {OUTFILE | DUMPFILE} ';file_name'; export_options] ) f+ f0 L' d, t& o% R
[FROM table_references
: ]2 Q4 L5 h$ a* {! T2 Y! ]; g6 l [WHERE where_definition] 7 }. F8 O, D# U/ q6 @# f
[GROUP BY col_name,...]
( H; x! b7 e: d' P8 U9 q: t- n [HAVING where_definition] 4 l8 F0 G# d9 R$ I+ W a7 w
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] & c5 ]+ L% Z7 W% K
[LIMIT [offset,] rows] # N: k, W. H& ?& O1 K
[PROCEDURE procedure_name] ] 5 v/ a' J/ J* z
其中where从句是定义选择标准的地方,where_definition可以有不同的格式,但都遵循下面的形式:
- G' i9 g4 M. y 字段名操作表达式
6 T7 d1 f& n4 V; Y. F- ?! B 字段名操作字段名 " L! p) x/ R4 p& q% R
在第一种形式下,标准把字段的值与表达式进行比较;在第二种形式下,把两个字段的值进行比较。根据所比较的数据类型,search_conditio/ j0 I" R4 a* O$ b- t
n中的操作可能选以下几种: ) p& ~; C4 J3 Y: ~
= 检查是否相等
# u* \, @9 A4 ^* m9 U != 检查是否不等
, ?/ p2 _3 t H, l% L1 x v2 G > (或>=) 检查左边值是否大于(或大于等于)右边值 ! t3 _7 w& c6 g( o- g: P
< (或<=) 检查左边值是否小于(或小于等于)右边值 7 T. N+ A& K0 e/ u4 i
[not] between 检查左边值是否在某个范围内 & a5 |5 @) x2 ?" |& y) E
[not] in 检查左边是否某个特定集的成员
1 i1 p2 S9 ^/ k1 ~$ K' a( F6 o. G5 c [not] like 检查左边是否为右边的子串
1 P/ n% ]9 i) }, A is [not] null 检查左边是否为空值 ; m3 B. f7 L% ~5 j/ J& L, Z
在这里,可以用通配符_代表任何一个字符,%代表任何字符串。使用关键字<AND>、<OR>和<NOT>可以生成复杂的词,它们运行检查时使用布尔( R6 r5 Z4 Q, K6 Y4 Y- C# l
表达式的多重标准集。 , |( w* e& r& z5 \9 r6 g `6 p% P: ?
例: . Z8 g' A ]' f3 Q' o
mysql> select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name; 5 U2 Q$ t* H/ Q( \
mysql> select college, region, seed from tournament
1 ^+ s6 w( E: U) \! e( T ORDER BY region, seed;
1 j# f( d# }2 @; d& _, \+ t" U+ v" ] mysql> select col_name from tbl_name WHERE col_name > 0;
0 L8 k. D8 C/ N$ E' e 6.修改表中数据 ; t% n5 h% L3 x% w, @
在使用数据库过程中,往往要修改其表中的数据,比如往表中添加新数据,删除表中原有数据,或对表中原有数据进行更改。它们的基本语法如下: 6 [( ]- @$ z' r( A
数据添加:
_7 ~1 c' k9 b& b! _; \ insert [into] table_name [(column(s))] 2 R! ]7 g7 y4 R
values (expression(s))
9 v J4 `. U. u) j' l t/ Q 例: D! q; a: ~+ j( {, N2 H; a; q, g
mysql> INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2); " v, s. w& y8 z/ b
数据删除:
# x$ e& n/ y7 G( ~/ P, @ 删除 from table_name where search_condition
" P6 H& p: o5 V4 c( p1 R 数据更改: 2 A0 @1 ^7 m4 Y
更新 table_name . f! y1 @# K) ?' c$ T
set column1=expression1,
+ |& f7 r# t% L9 q column2=expression2,… % K* L& ^- O! ^- }, T* O& `+ Z
where search_condition
# C7 M7 D. z0 k9 h0 H 7.数据库切换 9 y9 z9 h1 s1 u+ x$ }, u$ y
当存在多个数据库时,可以用下面的命令定义用户想使用的数据库: " |6 A4 w2 b0 D0 I y
use database_name 7 _, a% V5 i/ f2 m5 q4 V1 u2 q
8.统计函数
. U: t7 _9 b4 S SQL有一些统计函数,它们对于生成数据表格很有帮助。下面介绍几个常用的统计函数: ; X( L/ I8 x3 W$ Q4 q
sum (exepression) 计算表达式的和 * s' }9 n; e( F2 M
avg (exepression) 计算表达式的平均值 9 p3 i* L$ V) R. o7 f: `
count (exepression) 对表达式进行简单的计数 6 a3 y2 f Z# U/ f9 O
count (*) 统计记录数 9 k6 L* s" K* e4 ^/ B4 l
max (exepression) 求最大值
% q0 c9 n; T# G* m; } min (exepression) 求最小值 1 b# G p1 H) f( _3 \
其中exepression为任何有效的SQL表达式,它可以是一个或多个记录,也可以是别的SQL函数的组合。* ?% Q1 E& ~" p5 N
* k& b+ e0 t3 R7 h I |