4.1 DQL
(Data Query Language:数据查询语言)
所有查询操作都用它 Select
简单的查询,复杂的查询都能做
数据库中最核心的语言,最重要的语句
使用频率最高的语句
4.2 指定查询字段
查询全部学生 select 字段 from 表
SELECT * FROM student
– 查询指定字段
SELECT id
,pwd
FROM student
– 别名 给结果起一个名字 AS 可以给字段去别名 也可以给表起别名
SELECT id
AS 艾迪 FROM student AS s
– 函数 Concat(a,b) 拼接字符串
SELECT CONCAT(‘姓名:’, name
) AS 新名字 FROM student
语法:select 字段… From 表
去重 distinct
– 查询一下有那些同学参加了考试
SELECT * FROM t_score – 查询全部的考试成绩
– 发现重复数据 去重
SELECT DISTINCT courseno
FROM t_score
数据库的列(表达式)
SELECT VERSION() – 查询系统版本 (函数)
SELECT 100*3-1 AS 计算机结果 – 用来计算 (表达式)
SELECT @@auto_increment_increment – 查询自增的步长 (变量)
– 学员考试成绩 +1 分查看
SELECT score
+1 AS 学生成绩提分后 FROM t_score
数据库中的表达式: 文本值 ,列,null,函数,计算表达式,系统变量…
select 表达式
from 表
4.3 where 条件子句
作用:检索数据中符合条件的值
逻辑运算符
搜索条件由一个或者多个表达式组成!结果 布尔值
运算符 语法 描述
and && a and b a&&b 逻辑与,两个都为真,结果为真
or || a or b a| | b 逻辑或,其中一个为真,结果为真
Not ! not a ! a 逻辑非,真为假,假为真!
尽量使用英文字母
– 查询成绩在90~100之间的成绩
SELECT courseno
,score
FROM t_score
WHERE score>=90 AND score<100
– 模糊查询(区间)
SELECT courseno
,score
FROM t_score
WHERE score BETWEEN 90 AND 100
– 除了001号学生之外的同学的成绩
SELECT courseno
,score
FROM t_score
WHERE courseno != 001;
模糊查询:比较运算符
– ============================== 模糊查询 =================================
– 查询姓李的同学
– like结合 %(代表0到任意个字符) _(一个字符)
SELECT stuname
FROM t_student
WHERE stuname
LIKE ‘李%’
– 查询姓李的同学后面只有一个字
SELECT stuname
FROM t_student
WHERE stuname
LIKE ‘李_’
– 查询名字中有 哈 字的同学
SELECT stuname
FROM t_student
WHERE stuname
LIKE ‘%哈%’
– in 是一个或多个具体的值 不能使用like里面的% _
– 查询0001 003 号学员
SELECT stuno
FROM t_student
WHERE stuno
IN (0001,003)
– not null
– 查询某一项为空的在学生表
SELECT stuno
FROM t_student
WHERE stuno
IS NULL
– 查询某一项不为空的在学生表
SELECT stuno
FROM t_student
WHERE stuno
IS NOT NULL
4.4 联表查询
– =========================联表查询 join ===================================
– 查询参加了考试的同学
/* 长一些的sql语句先有思路
思路:
1.分析需求,分析查询的字段来自哪些表,(连接查询)
2.确定使用哪种连接查询? 7种
确定交叉点(这两个表中哪个数据是相同的)
*/
join (连接的表) on (判断的条件) 连接查询
where 等值查询
两个查询方式结果一致
SELECT s.stuno,score,stuname
FROM t_score AS s
INNER JOIN t_student AS r
WHERE s.stuno = r.stuno
– Right join
SELECT s.stuno,score,stuname
FROM t_score s
RIGHT JOIN t_student r
ON s.stuno = r.stuno
– Left join
SELECT s.stuno,score,stuname
FROM t_score s #左表
LEFT JOIN t_student r #右表
ON s.stuno = r.stuno
操作 描述
inner join 如果表中至少有一个匹配,就返回行
left join 即使右表中没有匹配,也会从左表中返回所有的值
right join 会从右表中返回所有的值,即使左表中没匹配
– From a left join b #a为基准
–From a right join b #b为基准