DQL(Data QueryLanguage )数据查询语言,基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块。
一、DQL概述
1.1、什么是DQL
DQL:数据查询语言,用于从数据库表中查询数据,并不会修改数据,只是一种显示数据的方式。由select语句构成。
1.2、记录查询格式
1 | 格式: |
格式说明:
select */字段列表: 查询完后需要展示的字段
from 数据库表名: 指定要查询的数据库表
[where 条件表达式]: 查询满足条件的记录
二、记录查询
2.1、简单查询
查询表中的记录和列
1 | 格式: |
案例:
查询student表中的所有记录,显示所有列
1 | #显示所有记录 |
查询student表中的所有记录,显示所有姓名、性别列
1 | #显示所有记录,显示列为姓名、性别 |
2.2、别名查询
别名有二种:字段别名、表别名
作用:
字段别名查询出记录显示新的名字,并不影响表的结构。
表别名取了一个新的名字,可以代替表名使用。
字段别名
1 | 格式: |
案例:
查询student表中的sname和sex,以别名’姓名’和’性别’显示
1 | #使用字段别名显示姓名、性别 |
表别名
1 | 格式: |
案例:
查询student表中的sname和sex,以别名’姓名’和’性别’显示,并为student表取了一个别名 s
1 | #使用字段别名显示姓名、性别,表别名没有具体表现 |
注意:
表别名一般用于多表查询,单表查询中没有具体体现。
2.3、清除重复记录查询
1 | 格式: |
案例:
去掉性别重复的记录
去掉性别和姓名同时重复的记录
1 | #查看所有记录 |
2.4、运算查询
字段与固定值运算
1 | 格式: |
注意:
运算的字段必须是数值型
案例:
查询student表中年龄减10岁,并显示sname和age
1 | mysql> select age-10 as age ,sname from student; |
字段与字段运算
1 | 格式: |
注意:
运算的字段必须是数值型
案例:
查询student表中age与id的和,并显示出来age和id
1 | mysql> select age+id,age,id |
三、条件查询
3.1、条件查询前准备
新建学生信息表(students)
字段:学生ID(sid)、学生姓名(sname)、学生性别(sex)、学生年龄(age)、英语成绩(english)、数学成绩(math)、入学时间(entertime)、备注(remark)
1 | create table students( |
记录:
1 | insert into students values |
3.2、基础比较运算符
1 | 格式: |
注意:
在SQL中“<>”,表示不等于,mysql中也可以用“!=”表示
在SQL中没有“==”
案例:
查询学生信息表中英语成绩大于80的学生信息
1 | mysql> select * from students where english>80; |
查询学生信息表中英语成绩小于80的学生信息
1 | mysql> select * from students where english<80; |
查询学生信息表中年龄大于等于19岁的学生信息
1 | mysql> select * from students where age>=19; |
查询学生信息表中年龄小于等于19岁的学生信息
1 | mysql> select * from students where age<=19; |
查询学生信息表中数学成绩等于88的学生信息
1 | mysql> select * from students where math=88; |
查询学生信息表中年龄不等于18岁的学生信息
1 | mysql> select * from students where age<>18; |
查询学生信息表中年龄大于等于20岁的学生的姓名和性别
1 | mysql> select sname,sex from students where age>=20; |
3.3、提高比较运算符
1 | 格式: |
注意:
包含头尾
案例:
查询学生信息表中英语成绩80到90岁之间的学生信息
1 | mysql> select * from students where english between 80 and 90; |
案例:
查询学生信息表中sid为1,3,5的信息
1 | mysql> select * from students where sid in(1,3,5); |
查询学生信息表中sid除了1,3,5的信息
1 | mysql> select * from students where sid not in(1,3,5); |
注意:
1 | mysql通配符 |
案例:
查询学生信息表中姓’张’的学生信息
1 | mysql> select * from students where sname like '张%'; |
查询学生信息表中包含’红’字的学生信息
1 | mysql> select * from students where sname like '%红%'; |
查询学生信息表中姓’王’的二个字的学生信息
1 | mysql> select * from students where sname like '王_'; |
注意:
不能写成:字段名=null
案例:
查询学生信息表中age为null学生信息
查询学生信息表中english为null学生信息
1 | mysql> select * from students where age is null; |
查询学生信息表中english不为null学生信息
1 | mysql> select * from students where english is not null; |
3.4、逻辑运算符
1 | 格式: |
案例:
查询学生信息表中english大于85的男生的学生信息
1 | mysql> select * from students where english>85 and sex='男'; |
查询学生信息表中年龄大于等于20岁或数学成绩大于85的学生信息
1 | mysql> select * from students where age>=20 or math>85; |
查询学生信息表中除了年龄大于等于20岁或数学成绩大于85的学生信息
1 | mysql> select * from students where not (age>=20 or math>85); |