1.DQL查询语句
通过特定的sql语句,请求服务器,查到符合规则的数据。把结果集返回。
返回的结果集是一张虚拟的表,查询不会改变数据库中的数据
1.1一般查询
语法格式:
select 字段1,字段2 ... from 表名
单列查询
select name from student;
多列查询
select id,name from student;
查询所有列,* 表示通配符
select * from student;
行排重,重复名称的只显示一条
select distinct name from student;
单表带列排序查询
语法格式:select 字段1,字段2 ...from 表名 order by 字段 asc|desc
asc 升序 不写的话默认是升序
desc 降序 需要降序必须给出
如果id相等,那么按照name排序
SELECT * FROM student ORDER BY class_id,stu_name ;
单表查询结果分页LIMIT
limit后面可以有一个参数,可以有两个参数
一个参数时代表:
假如参数是n,那么就返回前n行查询的结果
假如有两个参数,为n和f,那么从第n个结果开始,返回f个结果
结果集是有索引的,索引从0开始
使用limit可以对结果集分页,可以实现分页查询的效果
select * from tableName limit 5; --返回前5行
select * from tableName limit 0,5; --同上,返回前5行(从0开始,查5个返回去)
select * from tableName limit 5,10; --返回6-15行(从5开始,查10个返回去)
定义表别名:当给表定义别名后,表内的字段前要加别名.
select t.STUDENT_ID from student_tbl t 或
select t.STUDENT_ID from student_tbl as t
定义列别名
select STUDENT_ID as 学生id from student_tbl 或
select STUDENT_ID 学生id from student_tbl
1.2复杂查询
where条件查询
语法格式:
select 字段1,字段2 ... from 表名 [where 条件表达式语句]
select * from student where name=‘zhangsan’
select * from student where student_id between'10002' and '10005';
where条件用于确定选择哪行,只有满足where条件的记录才会被选择出来
where子句后面的操作符
默认情况下 and优先级比or优先级高 上面语句如果不加()是这样结合的:classid=1 or (classid=2 and address = beijing)
IN操作
in操作是查询某个字段是否在in的值里面。
in 和 or 都能实现同样的查询结果,但or效率比较低,建议用in。
NOT IN 操作
![](https://i-blog.csdnimg.cn/blog_migrate/40ebe764cc0ffd924761391af759d469.png)
模糊查询like
% 表示任何字符出现任意次数
下划线的用途与%一样,但它只匹配单个字符,而不是多个字符
定义别名
定义表别名:当给表定义别名后,表内的字段前要加别名.
select t.STUDENT_ID from student_tbl t 或
select t.STUDENT_ID from student_tbl as t
定义列别名
select STUDENT_ID as 学生id from student_tbl 或
select STUDENT_ID 学生id from student_tbl
聚合函数--用于纵向操作
Mysql没有连接符,由concat函数代替
select CONCAT(STUDENT_ID, STUDENT_NAME) from student_tbl
求和函数——sum()
求和函数用于对数据求和,sum()函数只能作用于数值型数据。
计数函数——count()
COUNT(要计数的字段)函数进行计数使用,忽略NULL值
max()/min()函数 最大/最小值
列字段类型可以是数值、字符串、日期时间 数据类型
均值函数——avg()
avg()只能作用于数值
![](https://i-blog.csdnimg.cn/blog_migrate/5ae74c82161d9396a3f3447d073c8ff1.png)