WHERE
语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
用于选取数据时添加条件。可以使用的运算符如下:
如果条件为文本值,需要加上单引号,若为数值,不可以加引号。
查找在1993年及以后出生的学生:
select*from students where birthday >='19930101';
AND和OR
如果有多个条件,使用AND和OR进行连接。如果使用到多个AND和OR,可以添加括号"()"来组合复杂的表达式。
比如查找1班在1992年或1994年出生的学生:
select*from students where((birthday >='19920101'and birthday <='19921231')or(birthday >='19940101'and birthday <='19941231'))andclass=1;
LIKE
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
语法:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
同样的,可以使用 NOT LIKE 来返回不符合指定模式的结果。
支持的通配符如下:
比如要查找姓“李”的学生:
select*from students where name like '李%';
IN
IN 操作符允许我们在 WHERE 子句中规定多个值。
语法:SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)
同样的,使用 NOT IN 返回不包含在集合的数据。
要确定学生中有没有指定名单上的人:
操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
语法:SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。某些数据库会列出介于 "Adams" 和 "Carter" 之间的人,但不包括 "Adams" 和 "Carter" ;某些数据库会列出介于 "Adams" 和 "Carter" 之间并包括 "Adams" 和 "Carter" 的人;而另一些数据库会列出介于 "Adams" 和 "Carter" 之间的人,包括 "Adams" ,但不包括 "Carter" 。
使用AND、OR组合可以查找出1993年出生的学生,使用BETWEEN同样可以,而且更简洁:
select*from students where birthday >='19930101'and birthday <='19931231';
ORDER BY 语句用于根据指定的列对结果集进行排序。该语句默认按照升序对记录进行排序。 使用 DESC 关键字可以反序排列记录。
如果要排序的是多个字段,结果的顺序由靠前的字段优先决定。
下面分别以生日排序以及生日+班级id反序排序:
select*from students order by birthday;
select*from students order by birthday,class desc;
TOP
TOP 子句用于规定要返回的记录的数目。
语法:
• SQL Server:SELECT TOP number | percent column_name(s) FROM table_name
• MySQL:SELECT column_name(s) FROM table_name LIMIT number
• Oracle:SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
要取年龄最小的3个学生信息,可以这样:
通过使用 SQL,可以为列名称和表名称指定别名(Alias)。
语法:
• 表: SELECT column_name(s) FROM table_name AS alias_name
• 列:SELECT column_name AS alias_name FROM table_name
比如取学生的名字可以这样指定别名:
select name as'名字'from students;
语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
用于选取数据时添加条件。可以使用的运算符如下:
如果条件为文本值,需要加上单引号,若为数值,不可以加引号。
查找在1993年及以后出生的学生:
select*from students where birthday >='19930101';
AND和OR
如果有多个条件,使用AND和OR进行连接。如果使用到多个AND和OR,可以添加括号"()"来组合复杂的表达式。
比如查找1班在1992年或1994年出生的学生:
select*from students where((birthday >='19920101'and birthday <='19921231')or(birthday >='19940101'and birthday <='19941231'))andclass=1;
LIKE
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
语法:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
同样的,可以使用 NOT LIKE 来返回不符合指定模式的结果。
支持的通配符如下:
比如要查找姓“李”的学生:
select*from students where name like '李%';
IN
IN 操作符允许我们在 WHERE 子句中规定多个值。
语法:SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)
同样的,使用 NOT IN 返回不包含在集合的数据。
要确定学生中有没有指定名单上的人:
select*from students where name in('李青','安妮','王老五');
BETWEEN操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。
语法:SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
不同的数据库对 BETWEEN...AND 操作符的处理方式是有差异的。某些数据库会列出介于 "Adams" 和 "Carter" 之间的人,但不包括 "Adams" 和 "Carter" ;某些数据库会列出介于 "Adams" 和 "Carter" 之间并包括 "Adams" 和 "Carter" 的人;而另一些数据库会列出介于 "Adams" 和 "Carter" 之间的人,包括 "Adams" ,但不包括 "Carter" 。
使用AND、OR组合可以查找出1993年出生的学生,使用BETWEEN同样可以,而且更简洁:
select*from students where birthday >='19930101'and birthday <='19931231';
select*from students where birthday between '19930101'and'19931231';
ORDER BYORDER BY 语句用于根据指定的列对结果集进行排序。该语句默认按照升序对记录进行排序。 使用 DESC 关键字可以反序排列记录。
如果要排序的是多个字段,结果的顺序由靠前的字段优先决定。
下面分别以生日排序以及生日+班级id反序排序:
select*from students order by birthday;
select*from students order by birthday,class desc;
TOP
TOP 子句用于规定要返回的记录的数目。
语法:
• SQL Server:SELECT TOP number | percent column_name(s) FROM table_name
• MySQL:SELECT column_name(s) FROM table_name LIMIT number
• Oracle:SELECT column_name(s) FROM table_name WHERE ROWNUM <= number
要取年龄最小的3个学生信息,可以这样:
select*from students order by birthday desc limit 3;
通过使用 SQL,可以为列名称和表名称指定别名(Alias)。
语法:
• 表: SELECT column_name(s) FROM table_name AS alias_name
• 列:SELECT column_name AS alias_name FROM table_name
比如取学生的名字可以这样指定别名:
select name as'名字'from students;