1、DQL查询数据(最重点)
1.1DQL(data query language)
- 所有的查询操作都用它
- 简单的查询,复杂的查询都能做
- 数据库中最核心的语言,最重要的语句
- 使用频率最高
select 语法
SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias]
[left | right | inner join table_name2] -- 联合查询
[WHERE ...] -- 指定结果需满足的条件
[GROUP BY ...] -- 指定结果按照哪几个字段来分组
[HAVING] -- 过滤分组的记录必须满足的次要条件
[ORDER BY ...] -- 指定查询记录按一个或多个条件排序
[LIMIT {[offset,]row_count | row_countOFFSET offset}];
-- 指定查询的记录从哪条至哪条
注意:[]括号代表可选的,{}括号代表必选的
指定查询字段
-- 查询全部学生select 字段 FROM 表
SELECT *FROM student
SELECT *FROM result
-- 查询指定字段
SELECT `studentno`,`studentname` FROM student
-- 别名,给结果起一个名字 AS 可以给字段起别名,也可以给表起别名
SELECT `studentno`AS 学号,`studentname`AS 姓名 FROM student AS a
-- 函数Concat(a,b)
SELECT CONCAT('姓名: ',studentname)AS 新名字 FROM student
有时,列名字不是那么见名知意,我们起别名 AS 字段名 as别名 表名 as
去重 distinct
去除SELECT查询出来的结果中重复的数据,只显示一条
-- 查询哪些同学有成绩
SELECT *FROM result -- 这是全部成绩
SELECT `studentno` FROM result -- 查询有哪些同学参加了考试
-- 发现重复数据。去重
SELECT DISTINCT`studentno`FROM result
数据库的列(表达式)
SELECT VERSION()-- 查询系统版本(函数)
SELECT 100-3*23-- 用来计算(表达式)
SELECT @@auto_increment_increment-- 查询自增的步长(变量)
-- 学员考试成绩+1分
SELECT `studentno`,`studentresult`+1 AS '提分后' FROM result
数据库中的表达式:文本值,列,null,函数,计算表达式,系统变量…
2、where条件字句
作用:检索数据中符合条件的值
所有的条件由一个或者多个表达式组成!结果 布尔值
模糊查询:比较运算符
| 运算符 |语法 | 描述|
|–|–|–|–|
|IS NULL | a is null| 如果操作符为null,结果为真 |
| IS NOT NULL |a is not null | 如果操作符不为null,结果为真|
| BETWEEN |a between b and c | 若a在b和c之间,结果为真| |
| Like |a like b |sql 匹配,如果a匹配b,则结果为真 | |
|In |a in(a1,a2,a3…) | 假设a在a1,或者a2…其中的一个值中,结果为真| |
| | | | |
-- 模糊查询
-- LIKE结合%(代表0到任意个字符) _(一个字符)
SELECT `studentname`,`studentno`FROM`student`
WHERE studentname LIKE'刘%'
-- 查询姓刘的同学,名字后面只有一个字的
SELECT `studentname`,`studentno`FROM`student`
WHERE studentname like'刘_'
-- 查询姓刘的同学,名字后面只有2个字的
SELECT `studentname`,`studentno`FROM`student`
WHERE studentname like'刘__'
-- 查询姓刘的同学,名字后面只有一个字的
SELECT `studentname`,`studentno`FROM`student`
WHERE studentname like'刘_'
-- 查询名字中有嘉的 %嘉%
SELECT `studentname`,`studentno`FROM`student`
WHERE studentname like'%嘉%'
-- ========In(具体的一个或者多个值)=========
-- 查询1001,1002,1003号学员
SELECT `studentname`,`studentno`FROM`student`
WHERE studentno IN (1001,1002,1003)
-- 查询在北京的学生
SELECT `studentname`,`studentno`FROM`student`
WHERE address IN('山东烟台')
-- null NOT NULL
SELECT `studentname`,`studentno`FROM`student`
WHERE address IS NULL
-- 查询有出生日期的同学 不为空
SELECT `studentname`,`studentno`FROM`student`
WHERE borndate IS NOT NULL
count() 是个聚合函数 作用是求表的所有记录数
select * from 表名 这个是查询表的所有记录
select count(*) from 表名 这个是查询表的所有记录数
SELECT count(*) FROM t_address WHERE uid=?