单表查询

  • 为已创建的表建立外键,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人的部门,列出部门所有人和人数
    
posted on 2020-09-17 16:52  94小渣渣  阅读(86)  评论(0编辑  收藏  举报