数据库中主要操作:查询
查询的基本语法
select * as 别名 from 表名;
from关键字后面写表名,表示数据来源于是这张表
select后面写表中的列名,如果是*表示在结果中显示表中所有列
在select后面的列名部分,可以使用as为列起别名,这个别名出现在结果集中
如果要查询多个列,之间使用逗号分隔
在select后面列前使用distinct可以消除重复的行
select distinct gender from students;
条件 where
使用where子句对表中的数据筛选,结果为true的行会出现在结果集中
语法如下:
select * from 表名 where 条件;
where 后面条件可以用到比较运算符 逻辑运算符
-
比较运算符
等于=
大于>
小于<
大于等于>=
小于等于<=
不等于!=或<>
例如
查询编号大于3的学生
select * from students where id>3;
查询学生叫张三
select * from students where name = '张三';
-
逻辑运算符
and 与
or 或
not 非 -
模糊查询
like
%表示任意多个任意字符
_表示一个任意字符
查询姓黄的学生
select * from students where name like '张%';
查询姓黄并且名字是一个字的学生
select * from students where name like '张_';
查询姓黄或叫靖的学生
select * from students where name like '张%' or name like '%张%';
-
范围查询
关键字 in between
in表示在离散值之间选取
select * from students where id in(1,2,3,4); 查询学生表中id=1,2,3,4信息
between ... and...表示在连续值中选取
select * from students where id between 3 and 8;
-
空查询 null
null 与 ' ' 有区别,null表示什么也不存储,' '存啦空格字符串
is null 判断为空
is not null 判断非空
统计函数
为了快速统计数据,提供5个聚合函数
count(*) 表示统计总行数,()里面也可写成列名,统计这一列行数
select count(*) from students;
max(列名) 此列最大值
min(列名) 此列最小值
sum(列名) 列求和
avg(列名) 列平均值
分组
关键字 group by
按照列名分组,该列中相同数据分到一组,分组后可以做统计运算
select 列1,列2 , ...,统计函数 ... from 表名 group by 列1,列2...
分组后的数据筛选
关键字 having
对比where与having
here是对from后面指定的表进行数据筛选,属于对原始数据的筛选
having是对group by的结果进行筛选
语法:
select 列1,列2,聚合... from 表名
group by 列1,列2,列3...
having 列1,...聚合...
排序
关键字 order by
为了方便查看数据,可以对数据进行排序
语法:
select * from 表名
order by 列1 asc|desc,列2 asc|desc,...
将行数据按照列1进行排序,如果某些行列1的值相同时,则按照列2排序,以此类推
默认按照列值从小到大排列
asc从小到大排列,即升序
desc从大到小排序,即降序
查询男生学生信息,按学号降序
select * from students
where gender=1
order by id desc;
获取部分行
关键字 limit
当数据量过大时,在一页中查看数据是一件非常麻烦的事情
语法
select * from 表名
limit start,count
从start开始,获取count条数据
start索引从0开始
网友评论