数据库的基本查询

225 阅读3分钟

最基本的查询语句是由SELECT和FROM关键字组成的

SELECT * FROM t_emp;

SELECT empno,ename  FROM t_emp;

SELECT语句屏蔽了物理层的操作,用户不必关心数据的真实存储,交由数据库高效的查找数据

若SELECT子句中使用了表达式,那么这列的名字就默认为表达式,因此需要一种对列名重命名的机制

SELECT 

  empno,

  sal*12 AS “income”

FROM t_emp;

数据分页

如果结果集的记录很多,则可以使用LIMIT关键字限定结果集数量。

SELECT... FROM... LIMIT  起始位置,偏移量;

数据分页的简写用法

如果LIMIT子句只有一个参数,它表示的是偏移量,起始值默认为0

SELECT empno,ename FROM t_emp LIMIT 10;等价于

SELECT empno,ename FROM t_emp LIMIT 0,10;

子句执行顺序:FROM SELECT LIMIT

结果集排序

如果没有设置,查询语句不会对结果集进行排序,如果想让结果集按照某种顺序排列,就必须使用ORDER BY子句。

SELECT ... FROM ... ORDER BY 列名 [ASC|DESC]; 升序/降序,默认升序

如果排序列是数字类型,数据库就按照数字大小排序,如果是日期类型就按照日期大小排序,

如果是字符串就按照字符集序号排序。

如果两条数据排序字段内容相同,排序最后可以参照主键大小,还可以规定首要和次要排序条件

ORDER BY子句书写的时候放在LIMIT子句的前面

子句执行顺序:FROM SELECT ORDER BY LIMIT

去除重复记录

SELECT DISTINCT 字段 FROM ......;

使用DISTINCT的SELECT子句中只能查询一列数据,如果查询多列,去除重复记录就会失效

DISTINCT关键字只能在SELECT子句中使用一次,且必须出现在第一个字段之前

条件查询

SELECT ... FROM ... WHERE 条件 [AND|OR] 条件 ....;

WHERE语句中的条件运算会用到数学运算符、比较运算符、逻辑运算符和按位运算符

任何数字与NULL运算,值都为NULL

函数IFNULL(字段名或NULL,想要返回的数字)

第一个日期减去第二个日期 相差天数 DATEDIFF(expr1,expr2)

获取当前的日期 SELECT NOW();

比较运算符 IN 包含 deptno IN(10,30,40)

IS NULL  为空  comm IS NULL 千万不能用= NULL

IS NOT NULL 不为空 comm IS NOT NULL

BETWEEN AND 范围 sal BETWEEN 2000 AND 3000

LIKE 模糊查询 ename LIKE “A%” %代表零到多个字符,可加前后任意位置,还可加_,代表单个字符

REGEXP 正则表达式 ename REGEXP ”[a-zA-Z]{4}“四个英文字符的名字

"^[\\u4e00-\\u9fa5]{2,4}$"2到4个汉字的名字

逻辑运算符

AND 与

OR  或

NOT 非 NOT deptno=20

XOR 异或

二进制位运算的实质是将参与运算的两个操作数,按对应的二进制数逐位进行逻辑运算

&  位与

|   位或

~ 位取反

^ 位异或

<< 左移

>> 右移

WHERE子句中,条件执行的顺序是从左到右的,应把索引条件,或者筛选掉记录最多的条件写在最左侧

子句执行顺序:FROM WHERE SELECT ORDER BY LIMIT