SQL学习-表操作(单表行查询)

一、无条件查询——select

1.1 全部

语法:select * from 表名;

select * from student;

1.2 去重后——distinct

语法:select distinct 列1名,列2名 from 表名;

select distinct class from student;

1.3 别名处理后——as

语法:select 列名1 as ‘列名1别名’, 列名2 as ‘列名2别名’ from 表名

select name as '姓名', sex as '性别' from student;

1.4 运算符处理后

语法:select 字段处理句 from 表名;

运算符含义运算符含义
+加法-减法
*乘法/除法
%求余
select name, price as '人民币', price/6 as '美元' from myshopping;

1.5 统计函数处理后

语法:select 统计函数(列名) from 表名
注意:无数据时,count()返回值为0,其它都为null。

统计函数含义统计函数含义
count()总行数avg()单列值的平均值
sum()单列值的总和now()当前时间
max()单列值的最大值min()单列值的最小值
select avg(stu_grade) as '平均成绩' from stu_info;
-- 结果:统计平均成绩。

1.6 拼接处理后——concat

语法:select 字段1,concat(字段2,字段3) from 表名;

select name,concat('¥',price) as '人民币', concat('$',price/6) as '美元' from myshopping;

二、条件查询——where

2.1 运算符

语法:where 列名 运算符 值

类型运算符
关系运算符>、 >=、 <、 <=、 !=(<>)、 =;
逻辑运算符AND(&&)、OR ( || ) 、NOT( ! ) 、XOR
select * from stu_info where (age >= 18 and clazz = 'C1') and code = '01'

2.2 通配符——like

语法:where 列名 like ‘字符+通配符’

通配符作用
%替代多字符
_替代一个字符
[charlist]字符列中,任何一字符
[^charlist] 或者 [!charlist]不在字符列中
-- 以a开头的列值
select * from stu_info where name like 'a%';
-- 以a结尾的列值
select * from stu_info where name like '%a';
-- 含a的列值
select * from stu_info where name like '%a%';

2.3 离散型——in

语法:where 列名 in (列值1,列值2,…)

select * from stu_info where name in ('张三', '李四');
-- 结果:获取到name='张三'和name='李四'的所有学生信息。

2.4 区间型——between and

语法:where 列名 between 列值1 and 列值2
遵循 [列值1, 列值2) 原则

select * from stu_info where id between 1000 and 1500;
-- 结果:获取id∈[1000,1500)的所有学生信息。

2.5 空值型——is null

语法:where 列名 is null

select * from t_department where employee_number is null;
-- 结果:获取没有员工的部门。

三、排序行数分组查询

3.1 排序——order by

3.1.1 单字段排序

语法:order by 列名 ASC | DESC
说明:ASC升序排列(默认值),DESC降序排列。

select * from stu_info order by class DESC;
-- 结果:按班级降序排列。

3.1.2 多字段排序

语法:order by 列1名 ASC | DESC,列2名 ASC | DESC,

select * from stu_info order by class DESC, name ASC;
-- 结果:按班级降序排列,在班级内部按姓名升序排列。

3.2 行数限制后——limit

3.2.1 数量限制

语法:limit 数字

select * from stu_info limit 5;
-- 结果:选取前五个学生信息。

3.2.2 起始位置+数量 限制

语法:limit 起始位置,数量
注意:起始位置从0开始计数,同数组。

select * from stu_info limit 10,5;
-- 结果:从第11名~第15名,共5名学生的学生信息。

3.3 分组查询——group by

3.3.1 单字段分组查询

3.3.1.1 简单分组

语法:select 列名 from 表名 group by 定组列名
说明:意义不大

select * from stu_info group by class;
3.3.1.2 统计分组——group_concat()

语法:select 列1名, group_concat(列2名) from 表名 group by 列1名
group_concat(列2名)作用:把列1值相同的所有列2值放在一个单元格内。

select class, group_concat(name) as '班级学生姓名' from stu_info group by class;
-- 查询姓名相同的同学信息。
select * from stu_info where name = 

3.3.2 多字段分组查询

语法:select 列1名,列2名 from 表名 group by 定组列1名,定组列2名

select dept_ID, name from t_employee group by dept_ID, emp_ID;

3.3.3 限制分组查询 ——having

语法:select 列1名,列2名 from 表名 group by 定组列1名,定组列2名 having condition;

select 
dept_ID as '部门ID',avg(salary) as '部门平均工资', group_concat(name) as '部门成员', count(name) as '部门人数' from t_employee 
group by dept_ID 
having avg(salary) > 2000;

四、小结

完整语法

  1. select 结果展现列名处理
  2. from 表名
  3. where 条件语句
  4. group by 分组依据
  5. having 分组条件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值