DQL语言
DQL数据查询语言
SELECT语法
查询所有学生信息(所有列,效率低)
select * from student;
查询指定列(学号,姓名)不区分大小写
SELECT studentno,studentname FROM student;
取别名 关键字as,也可以用空格
SELECT studentno AS 学号,studentname AS 姓名 FROM student;
- 使用as也可以为表取别名,在多表查询时用于区分
SELECT studentno AS 学号,studentname AS 姓名 FROM student AS s;
- distinct去除重复项,默认为all
- select查询中可以使用表达式
满足条件的查询
select studentno,studentresult from result
where studentresult between 95 and 100;
比较运算符
-
like接合使用的通配符:%(0到任意个字符) _ (一个字符)
select StudentNo,StudentName from student where studentname like '李%';
-
转义符 \ 能不能使用我自己的转义符号呐
-
in 在多个值匹配相同的字符
-
null 空不能用=,和null必须写is或者is not
- 注意:如果默认为非空,删除内容后不是null,而是=’'来进行匹配
链接查询
-
内连接 .
inner join
查询两个表中的结果集中的交集 -
SELECT s.`StudentNo`,`StudentName`,`SubjectNo`,`StudentResult` FROM `student` s INNER JOIN `result` r ON r.`StudentNo`=s.`StudentNo`
-
外连接
outer join
-
左外连接
left join
以左表作为基准,右边表来一一匹配,匹配不上的,返回左表的记录,右表以null填充 -
右外连接
right join
与上面相反
-
-
自连接
CREATE TABLE categorg(
category_id INT(11) AUTO_INCREMENT PRIMARY KEY,
category_name VARCHAR(10),
pid INT(10)
);
INSERT INTO `categorg`(`category_name`,pid)
VALUES('软件开发',0),('美术设计',0),
('数据库继承',1),('ps基础',2),('色彩搭配',2),
('php基础',1),('一起学java',1);
select
a.`category_name` as '父栏目',
b.`category_name` as '子栏目'
from
`categorg` a
join `categorg` b
on b.`pid`=a.`category_id`
where a.pid = 0 ;
- 等值连接 非等值连接
等值连接
SELECT s.`StudentNo`,`StudentName`,`SubjectNo`,`StudentResult`
FROM `student` s,`result` r
WHERE r.`StudentNo`=s.`StudentNo`;
小知识点
round() 四舍五入
rand()随机数
用in进行子查询
SELECT * FROM student WHERE `StudentNo` IN (SELECT ROUND(RAND()*2+1011));
笛卡尔集合,非常消耗内存,不建议使用