DQL语言(一)

DQL语言

DQL数据查询语言

SELECT语法

查询所有学生信息(所有列,效率低)

在这里插入图片描述

select * from student;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vMoGHcIC-1597365958916)(C:\Users\ZMZDMX\AppData\Local\Temp\1597282545165.png)]

查询指定列(学号,姓名)不区分大小写

SELECT studentno,studentname FROM student;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WTIC91oA-1597365958917)(C:\Users\ZMZDMX\AppData\Local\Temp\1597282678305.png)]

取别名 关键字as,也可以用空格

SELECT studentno AS 学号,studentname AS 姓名 FROM student;
  • 使用as也可以为表取别名,在多表查询时用于区分
SELECT studentno AS 学号,studentname AS 姓名 FROM student AS s;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Ui0pUQT-1597365958919)(C:\Users\ZMZDMX\AppData\Local\Temp\1597283717143.png)]

  • distinct去除重复项,默认为all
  • select查询中可以使用表达式

满足条件的查询

select studentno,studentresult from result
where studentresult between 95 and 100;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fZsYRPFC-1597365958919)(assets/1597284776731.png)]

比较运算符

  • like接合使用的通配符:%(0到任意个字符) _ (一个字符)

    select StudentNo,StudentName
    from student
    where studentname like '李%';
    
  • 转义符 \ 能不能使用我自己的转义符号呐

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rTlfxc1p-1597365958920)(assets/1597285518082.png)]

  • in 在多个值匹配相同的字符

  • null 空不能用=,和null必须写is或者is not

    • 注意:如果默认为非空,删除内容后不是null,而是=’'来进行匹配

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zGav6GmO-1597365958921)(assets/1597286568438.png)]

链接查询

  • 内连接 .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 与上面相反

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-otBGBEMY-1597365958922)(assets/1597288792447.png)]

  • 自连接



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));

笛卡尔集合,非常消耗内存,不建议使用
在这里插入图片描述

case 字段 when 值 then 操作 else 操作 end;

在这里插入图片描述

多个情况 case 字段 when 值 then 操作 when 值 then 操作 else 操作 end;

全连接 union:联合并去重 union all:联合不去重

猜你喜欢

转载自blog.csdn.net/zmzdmx/article/details/107996647