查询列
选择所有列 在select关键字后面加*,表示选择所有列。 语法:
select * from 表名;
选择指定列 语法:
select 列名1,列名2 from 表名;
查询行
语法:
select 列1, 列2 from 表名 where 条件表达式;
满足条件表达式的行都会被保留。where语句紧跟from子句。
注意:
- 条件表达式中的不等于可以用
!= , <> 表示。 - 可以用
between ... and 指定范围,包含上限和下限。 - 可以用
in 指定某值在某集合中。 - 可以用
like 执行有效搜索串值的通配符搜索,其中% 表示零个或多个字符,_ 表示一个字符,具体可以看下面的例子4。 - 查询null时,需要使用
is 或is not null 。 - 逻辑表达式可以用
or 、and 、not 表示,其含义和python语言的逻辑表达式一样。 - 优先级规则:
算术运算 、not 、and 、or 。
例子1: 从student表中筛选ssex为男 的名字。
SELECT sname, ssex from student WHERE ssex='男';
例子2: 在book表中查询价格在20到30之间的书籍名称。
SELECT bname, bprice from book
WHERE bprice BETWEEN 20 AND 30;
例子3: 在student表中查询属于物理系或数学系学生的名称。
SELECT DISTINCT sname, sdept from student
WHERE sdept in ('物理系', '数学系');
例子4: 在product表中查询product_name包含联想的名称。
SELECT product_name from product
WHERE product_name LIKE '%联想%';
例子5: 查询sc表中grade为null的cno。
SELECT cno, grade from sc
WHERE grade is NULL;
例子6: 在student表中查询性别为男且sdept是计算机系的所有数据。
SELECT * from student
WHERE ssex='男' AND sdept='计算机系';
查询中的算术运算符
语法:
select 列名, 表达式, ... from 表名;
只需要在列后面添加算数表达式即可。如下,查询产品打九折以后的价格。
SELECT product_name, price, price*0.9 from product;
查询中的取别名
列别名 语法:
select 列名 as 列别名 from 表名 where 条件表达式;
或者
select 列名 列别名 from 表名 where 条件表达式;
例子: 将product表中的product_name取别名为name
SELECT product_name as name from product;
表别名 语法:
select 表别名.别名 from 表名 as 表别名;
或者
select 表别名.别名 from 表名 as 表别名;
例子: 查询product表中product_name,并把表名取别名为p,product_name取别名为name
SELECT p.product_name as name from product as p;
查询中的去重
语法:
select distinct 列名1, 列名2 from 表名;
注意:选多个列的话,去重时去重的是多个列公共的行。 例子: 将student表中的ssex列去重
SELECT DISTINCT ssex from student;
order by排序
单列排序
注意:order by 需要位于SQL语句的最后。 SELECT 语句的执行顺序如下:
- FROM 子句
- WHERE 子句
- SELECT 子句
- ORDER BY 子句
order by 默认升序,也可以用关键字acs 升序、desc 降序。 语法:
select 列名1, 列名2, ... from 表名 order by 列名 asc;
例子: 查询student表中的sname和sage列,且按sage降序排列。
SELECT sname, sage from student
ORDER BY sage DESC;
多列排序 语法:
select 列名1, 列名2, ... from 表名 order by 列名1, 列名2...;
排序顺序是,列名1, 列名2,也就是先按列名1排序,在列名1排序好后,列名1中若有相同的数据,则在按列名2排序。
例子: 在orders表中,查询status, total_money的数据,其中status升序,total_money降序。
SELECT status, total_money from orders
ORDER BY status ASC, total_money DESC;
使用别名排序 语法:
select 列名 as 别名 from 表名 order by 别名;
例子: 查询student表中的sname和sage列,其中sage列取别名为age,且按sage降序排列。
SELECT sname, sage as age from student
ORDER BY age DESC;
|