一、基本查询
1、字段查询
# 基本查询语法 SELECT 字段1,字段2,... From 表名 #表达式直接查询 SELECT 1+1 #也可以使用伪表 SELECT 1+1 FROM dual; #查询所有字段 SELECT * FROM student; #查询指定字段 SELECT id,name from student;
2、别名查询
#as可以省略 SELECT id as stuId FROM user; #别名有空格 使用双引号 SELECT id as "stu id" FROM user;
注意:这里别名使用单引号也不会报错,是因为mysql sql语法不是很严谨,但是别用单引号,但是如果是插入语句,字符串型和日期时间类型数据使用单引号('')表示,而不建议使用双引号
3、去重查询
使用distinct,并且distinct只能放在开头,只对一个字段查重:表示选取该字段一列不重复的数据
多个字段去重:表示选取多个字段不重复的所有记录
SELECT distinct id as stuid FROM user; SELECT distinct id,username as stuid FROM user;
4、空值运算
select id,ifnull(username,'无') from user;
5、着重号``
#查询字段和mysql关键字一样 使用着重号 select id,`order` from user;
6、表结构使用describe 表名或者desc 表名
7、查询常量
select '哈喽',id,username from user;
2、表结构查询
表结构使用describe 表名或者desc 表名
3、条件过滤查询
使用where过滤数据
select id,username from user where id > 10 and id < 30;
二、运算符查询
1、算数运算符
sql中+就表示加法运算,没有连接作用 会将字符串转成数值
select 100+"1" 结果式101
select 100+"a" 结果式100 将a看作0处理
select 100/0 分母为零 结果式null
select 100+null null参与运算结果式null
2、比较运算符
表达式左右相等结果1 不相等为0
3、逻辑运算符
逻辑运算结果返回1或0或null
or运算符优先级低于and优先级
4、位运算符
5、运算符优先级
6、非符号运算符
三、排序和分页
1、排序
使用order by对结果排序 asc升序 desc降序,如果没有使用排序默认就是数据添加的顺序,使用了order但没有排序规则使用的order后列的升序
列的别名也可以在order by后面,但是where后面不能用别名,原因是sql执行顺序有关
SELECT user_name userName
FROM `user`
WHERE user_name="abc"
ORDER BY userName
是先执行from 和where此时还不知道别名,所以where后面不能用别名,order最后执行此时已经有别名了,所以可以使用别名
2、分页
每页显示pageSize条记录 此时显示第pageNo页
公式:LIMIT (pageNo-1) * pageSize , pageSize
limit格式严格来说:
limit 位置偏移量 条目数
但是limit 0 ,条目数 等价于 limit 条目数
写的顺序
先select -from-where-order-limit
表里有107条记录 只想显示第32 33条数据怎么办?
select * from user limit 31,2
但是mysql8.0可以使用offset
select * from user limit 2 offset 31
拓展