单表查询
-
为已创建的表建立外键,student表中有班级class_id ,应该把这个class_id设置成外键
alter table student add constraint FK_class_id foreign key(class_id) references class(cid);--constraint 约束 起个名
-
表增删改查
insert into t1 values(1,'tom',22),(2,'jerry',23),(3,'lucy',21); --插入多条
delete from t1; --删除所有,但是如果第一个字段是自增 auto_increment ,删除以后后面insert 插入的数据按照自增往下走 truncate table t1; --删除以后,再增加新的记录,自增字段从1开始
select concat(id,name,age); -- 1tom22 拼接
select concat_ws('|',id,name,age); --1|tom|22 按|拼接
mysql> select ( -> case --case...when... end 语句 -> when caption = '哈哈' then caption -> else concat(caption,'111') -> end -> ) from class; --select caption字段,如果是“哈哈”,就不变,其他的都在后面加上111 【结果再加工,并没有改表内容】
select * from class where caption regexp '^哈'; -- 【正则表达式】的方式以 哈开头的 ,只匹配字符串 char varchar 等
判断是否为空 用 is null is not null
-
分组和聚合 group by (分组) count max min avg sum(聚合函数)
select gender,max(age) from student group by gender; --student表按性别分组查男生最大的年龄 和女生最大的年龄 select gender,avg(age) from student group by gender; --查平均男生平均年龄和女生平均年龄 --但是如果select gender,name ,max(age)..... 这种方式想查
select gender,name from student group by gender; --按性别分组,分别显示不同组的第一个人姓名 select gender,group_concat(name) from student group by gender; --按性别分组,分别把男 ,女所有人姓名列出来了
-
having 过滤语句用在group by 之后,对分组后的数据再筛选出符合条件的【组】
select post,group_concat(emp_name),count(*) num from employee group by post having num<6;--按部门post分组并筛选人数小于6人的部门,列出部门所有人和人数