SQL基本知识
在B站学习了黑马程序员的javaweb+AI,做个笔记(*^▽^*).
DDL
DDL(Data Definition Language)
DML
DML(Data Manipulation Language数据操作语言),用来对数据库中表的数据记录进行增、删、改操作
插入
注意:字符串和日期型数据必须包含在引号中(单或者双)
修改
updata 表名 set 字段名1=值1 , 字段名2=值2 , ... [ where 条件 ];
updata emp set username='zhangsan' , name='张三' where id=1;
删除
注意:delete如果没有条件,会删除整张表的所有数据;
delete语句不能删除某一个字段的值(如果要操作,可以使用updata,将该字段的值设置为NULL)
delete from 表名 [where 条件];
delete from emp where ID=1;
DQL
Data Query Language(数据查询语言)
select 字段列表 from 表名列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段列表 limit 分页参数
--查询多个字段
select 字段1,字段2 from 表名;
--查询所有字段
select * from 表名;
--为查询字段设置别名,as可以省略
select 字段1 as 别名1,字段2 as 别名2 from 表名;
--去除重复记录
select distinct 字段列表 from 表名;
条件查询:
条件查询中的一些运算符:
--查询姓名为两个字的员工信息
select * from emp where name like '__';
_是单个字符;%是任意个字符
分组+聚合:
count——统计数量(不参与null的统计,可以用字段、常量、* ,最好用 * )
例:select count ( * ) from emp
max——最大值
min——最小值
avg——平均值
sum——求和
分组查询:
分组之后,select后的字段列表不能随意书写,能写的一般是分组字段 + 聚合函数
where和having的区别:where是分组前,having是分组后;where不能对聚合函数进行判断,而having可以。
完成两个需求,注意第二个需求的第一种写法为什么不对:
1.根据性别分组,统计男女员工的数量
2.先查询入职时间在'2015-01-01'以前的员工,并对结果根据职位分组,获取员工数量大于等于2的职位
--1.
select gender,count(*) from emp group by gender;
--2.
--错误写法:
select job,count(*) from job where entry_date <= '2015-01-01' and count(*)>=2 group by job;
--正确写法:
select job,count(*) from job where entry_date <= '2015-01-01' group by job having count(*)>=2;
排序查询:
升序: asc(默认);降序:desc。
select * from emp order by entry_date asc ,update_time desc;
分页查询:
select * from emp limit 起始,记录个数
select * from emp limit 0,5;