2020-08-13 DQL语言

DQL语言

DOL(Data Query Language 数据查询语言)

  • 查询数据库数据,如SELECT语句
  • 简单的单表查询或多表的复杂查询和嵌套查询
  • 数据库语言中最核心,最重要的语句
  • 使用频率最高的语句
    SELECT语法
    在这里插入图片描述
    查询所有学生信息
SELECT * FROM student;//查询所有列,效率低,不推荐

查询指定列(学号 姓名)

SELECT studentno , studentname FROM student;

为列取别名(as,也可以省略)

SELECT studentno AS 学号,studentname AS 姓名 FROM student;
SELECT studentno  学号,studentname  姓名 FROM student;

为表取别名

SELECT studentno 学号,studentname 姓名 FROMR student AS s;

使用as,为查询结果去一个新名字

SELECT CONCAT('姓名:',studentname) AS 新姓名 FROM student; 

去除重复项 (DISTINCT)

SELECT DISTINCT studentno FROM result;

select查询中可以使用表达式

SELECT @@auto_increment_increment
SELECT VERSION();
SELECT 100*3-1 AS 计算结果;

满足条件的查询(where)

SELECT studentno,studentresult 
FROM result
WHERE studentresult>=95 AND student<=100;

#模糊查询
SELECT studentno,studentresult 
FROM result
WHERE studentresult BETWEEN 95 AND 100;

#精确查询
SELECT studentno,studentresult
FROM result
WHERE studentno=1000;

模糊查询 between and\ like \ in \ null
like 结合使用的通配符 : %(0到任意字符) _(一个字符)

SELECT studentno,studentresult
FROM student
WHERE studentname LIKE '李%';
//李后面一个字
SELECT studentno,studentresult
FROM student
WHERE studentname LIKE '李_';
//李后面两个字
SELECT studentno,studentresult
FROM student
WHERE studentname LIKE '李__';
//姓名含有有"李"字的
SELECT studentno,studentresult
FROM student
WHERE studentname LIKE '%李%';
//姓名含有有"%"字的
SELECT studentno,studentresult
FROM student
WHERE studentname LIKE '%\%%';
//使用自己的转义符
SELECT studentno,studentresult
FROM student
WHERE studentname LIKE '%:%%' ESCAPE ':';

模糊查询: in null 这个里面只要包含就可以

select studentno,studentname
from student
where studentno in(1000,1001,1002,1003);

和null去比较必须写is null
区别空字符串和null

select studentname from student where address='' or address is null;//空字符串和null

连接查询(利用表和表之间的关系查询来自不同表的数据)

  • 内连接 inner join :查询两个表中的结果集中的交集
  • 外连接 outer join
    • 左外链接: left join 以左表作为基准,右边表来一一匹配,匹配不上的,返回左表的记录,右表匹配不上的null来填充
    • 右连接 right join 以又表作为基准,左边表来一一匹配,匹配不上的,返回又表的记录,左表匹配不上的null来填充
  • 自连接
  • 等值连接: 等同于内连
  • 非等值连接 返回(左边行数)m*n(右边行数)
    在这里插入图片描述

查询参加考试的同学信息(学号,学生姓名,科目编号,分数)
思路:分析需求,确定查询的列来源于哪两个表,连接查询
,再确定使用哪一种连接查询

select student.studentno,studentname,subjectno,studentresult
from student s
inner join result r
no r.StudentNo=s.StudentNo

自连接

#1.先创一个表
create table if not exists category(
	categoryid int(10) unsigned not null auto_increment,
	pid int(10) not null,
	categoryName varvhar(50) not null,
	primary key(categoryid)
);
#2.插入数据
insert into category
values(2,1,"美术设计"),
(3,1,"软件开发"),
(4,3,"数据库基础"),
(5,2,"ps基础"),
(6,2,"色彩搭配"),
(7,3,"PHP基础"),
(8,3,"java基础");
#编写sql语句,将栏目的父子关系呈现出来,(父栏目名称,子栏目名称)
#把category表看做两张一模一样的表,然后将这两张表连接查询(自连接)
select a.categoryNa '父栏目' ,b.categoryName '子栏目'
from category a, category b
where a.categoryId =b.pid
#排序
order by studentresult desc,studentno   #默认为升序(asc)
#desc(降序)
# 可以按多个排序

分页显示(写在最后面)

limit 0,5;  #从哪条记录开始(起始行,从0开始) 要显示几行
limit 5,5; #第二页
limit (pageno-1)*pagesize,pagesize  # (当前页码-1)*页容量  
group by #分组 写在where后面
having #过滤分组满足的次要条件
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值