目录
1.库操作
2.表操作
3.表操作--修改
4.表操作 --删表
5.添加数据
管理数据
查询表中数据(重点)
判空条件
1.模糊条件查询
2.聚合查询(函数)
3.排序查询
4.分页查询
5.分组查询(配合聚合函数用于统计)
顺序:where > group by > order by > limit
筛选
6.sql中完成if判断
if()
编辑
字符串的集合操作 ELT()
如果在创建表的时候,这样写: 字段1 字段1类型 defaule ‘ XXX ’ ,就表示字段1的默认值是XXX,如果没有赋值给字段1,那么它的值就是XXX
设置主键:字段1 字段1类型 not null
1.添加字段 ALTER TABLE 表名 add 字段名 类型(长度)[comment 注释][约束]
2.修改数据类型 ALTER table 表名 modify 字段名 新数据类型(长度);
3.修改字段名和字段类型
ALTER TABLE 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
4.删除字段 ALTER TABLE 表名 DROP 字段名;
5.修改表名 ALTER TABLE 表名 RENAME TO 新表名;
删表 DROP table [if exists] 表名;
删表并且重新创建该表 truncate table 表名 ; //清除数据
1.给指定字段添加数据
insert into 表名(字段名1,字段名2,...)values(值1,值2,...);
2.给全部字段添加数据
insert into 表名 values (值1,值2,...); //值必须与所有字段匹配
3.批量添加数据
insert into 表名(字段名1,字段名2,...)values(值1 , 值2 ,...),(值1 , 值2 ,)...
insert into 表名 values (值1,值2, ...),(值1,值2,...),(值1,值2,...)...
//注意字符串和日期型数据应该包含在引号中
1.查询表的所有数据
select * from 表名;
2.修改1到多个指定字段的所有行的值
update 表名 set 字段名 = 值 , 字段名 = 值 ,字段名 = 值;
3.按条件修改指定字段的值
update 表名 set 字段名 = 值where 字段名 = 值;
4.删除表 (都是按行删除)
按条件删除 delete from 表名 where 字段名 = 值;
使用合并列查询:
select * from role where class<> '三班'
查询所有班级不是三班的数据
like:包含
not like :不包含
查询表中name字段含三的数据
SELECT * FROM student where NAME like ' %三% ';
查询表中name字段以三结尾的数据
SELECT * FROM student where NAME like ' %三 ';
查询表中name字段以三开头的数据
SELECT * FROM student where NAME like ' 三% ';
%就是指代了选定字段中的0到多个字符
_就是指代了选定字段中的1个字符
演示:
一张student表
语法 SELECT 函数名(字段) from 表名 ;
语句 select * from 表名 order by 字段名
想以哪个字段排序就by哪个字段(默认正序排序)
如果想要逆序就在字段名后面加上 desc
如果想在以某个字段排好序的基础上,再以另一个字段排序,就在第一个by的字段后面加逗号,再加上第二个字段名
如:先以age排序,如果age相同就再以score排序,如果score相同就再以id排序
select * from student order by age ,score,id;
如果想加条件(where),那么order by要放在where的前面
select * from student where is not null order by age;
语句 : limit 偏移量,步长;
如select * from student limit 1 , 3 ;
如果要加条件,limit放在where后面
如果既有条件又有排序还有分页,那么先where,再order by,最后limit
语法 : group by 字段 [筛选条件 having]
在group by 的 字段后面接having count (class)<5,即选出班级人数少于5的班级
作用示例
1.查询男女分别多少人
2.查询每个班多少人
select count(sex) from student group by sex;
只显示2个数量,但不知道是谁的数量
所以: group by哪个字段,就可以查询到哪个字段,将其添加到select和 from之间 , 就会输出在控制台
可以这样:
select sex count(sex) from student group by sex;
还可以打备注
同时使用多个聚合函数:
select class,count(class),max(score) from student where class <>'' group by class,score;
select 和from 之间夹的语句顺序是什么,控制台输出时顺序就是什么
如果group by 的不止一个字段,count 会在分组后的基础上计数,就是已经分组好了的基础上。
语法:
SELECT id, NAME,(case sex
when '男' then 1 //当sex是男,就输出1
when '女' then 2 //当sex是女,就输出2
ELSE '未知'
END
)'别名' FROM student;
有2种格式
if( 表达式1,表达式2,表达式3) 表达式可以是常量或者字段名
1是判断条件,,如果1成立就输出表达式2,如果不成立就输出表达式3
ifnull(表达式1,表达式2) 如果为空就输出表达式1,如果不为空就输出表达式2
elt ( 字段 ,'str1' , 'str2', ...)
字段的值为1时输出str1,为2时输出str2,为3时输出str3 ....