MySQL

8.4总结

1.数据库基础知识


  • 创建和查看数据库

  • 创建数据库
    create database 数据库名
  • 查看数据库
    • 查看已经存在的数据库
      show databases
    • 查看创建好的数据库
      show create database 数据库名
  • 修改数据库

    • 修改数据库编码方式
      alter database 数据库名 default character set 编码方式
  • 删除数据库
    drop database 数据库名

2.数据表的基本操作

  • 创建数据表
    Create table 表名
    ( 字段名1 数据类型 [完整性约束条件],
    字段名2 数据类型 [完整性约束条件],
    字段名n 数据类型 [完整性约束条件], )
  • 查看数据表
    • show tables
    • show create table 表名
    • desc 表名
  • 修改数据表
    • 修改表名
      • alter table 旧表名 rename to 新表名
    • 修改字段名
      • alter table 表名 change 旧字段名 新字段名 新数据类型
    • 修改字段的数据类型
      • alter table 表名 modify 字段名 数据类型
    • 添加字段
      • alter table 表名 add 新字段名 数据类型
    • 删除字段
      • alter table 表名 drop 字段名
    • 修改字段的排列位置
      • alter table 表名 modify 字段名 1 数据类型 first|after 字段名2
  • 删除数据表
    • drop table 表名

3.表的约束

  • 主键约束、非空约束、唯一约束、默认约束、外键约束
    主要看下外键约束
  • 一个表可以有多个外键,每个外键必须REFERENCES(参考)另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。
  • 在INSERT时,如果被外键约束的值在参考列中没有对应,则INSERT失败。
  • 空、RESTRICT、NO ACTION(立即检查外键约束) 删除:从表记录不存在时,主表才可以删除。删除从表,主表不变 更新:从表记录不存在时,主表才可以更新。更新从表,主表不变。
  • CASCADE 删除:删除主表时自动删除从表。删除从表,主表不变 更新:更新主表时自动更新从表。更新从表,主表不变。
  • SET NULL 删除:删除主表时自动更新从表值为NULL。删除从表,主表不变 更新:更新主表时自动更新从表值为NULL。更新从表,主表不变。

4.数据的基本操作

  • 添加数据

    • insert into 表名(字段名1,字段名2,….)
      values(值1,值2,……);

    • insert into 表名[(字段名1,字段名2,…)]
      values(值1,值2,…),(值1,值2,…),…

    • insert into 表名(字段1,字段2,…)values(值1,值2,…)
  • 更新数据
    • update更新部分数据
    • update 表名
      set 字段名1=值1[,字段名2=值2,…]
      [where 条件表达式]
    • 在update语句中如果没有使用where子句,则会将表中所有记录的指定字段都进行更新。
  • 删除数据
    • delete删除部分数据
      • delete from 表名 where 条件表达式
    • delete删除全部数据
      • delete from 表名
    • truncate删除全部数据
      • truncate table 表名
      • 二者区别
        • delete语句是dml语句,truncate语句通常被认为是ddl语句。
        • delete语句后面可以跟where子句,通过指定where子句中的条件表达式只删除满足条件的部分记录,而truncate语句只能用于删除表中的所有记录。
        • 使用truncate语句删除表中的数据后,再次向表中添加记录时,自动增加字段默认初始化值重新从1开始,而使用delete语句删除表中的所有记录后,再次向表中添加记录时,自动增加字段的值为删除时该字段的最大值加1.

5.单表查询

  • 简单查询
    • Select [distinct] * | {字段名1,字段名2,字段名3,…}
      from 表名
      [where 条件表达式1]
      [group by 字段名 [having 条件表达式2]]
      [order by 字段名 [asc | desc]]
      [limit [offset] 记录数]
      distinct是可选参数,用于剔除查询结果中重复的数据。having也是可选参数,用于对分组后的结果进行过滤。order by也是可选参数,用于将查询结果按照指定字段进行排序,asc升序,desc降序,如果不指定,默认为升序排列。 Limit是可选参数,用于限制查询结果的数量,limit后面可以跟两个参数,第一个参数offset表示偏移量,如果为0,则查询结果从第一条记录开始,第二个参数“记录数”表示返回查询记录的条数。
  • 按条件查询

    • 带关系运算符的查询、带in关键字的查询、带between and 关键字的查询、空值查询(is null)、带distinct关键字的查询、带like关键字的查询(% _)、带and关键字的多条件查询、带or关键字的多条件查询
      • or和and一起使用的情况
        注意:and的优先级高于or,因此当两者在一起使用时,应该先运算and两边的条件,再运算or两边的条件
  • 分组查询

    • select 字段名1,字段名2,…from 表名
      group by字段名1,字段名2,..[having 条件表达式]
      • 注意:Having关键字和where关键字的作用相同,都用于设置条件表达式对查询结果进行过滤,两者的区别在于,having关键字后可以跟聚合函数,而where不能,通常情况下having关键字都和group by 一起使用,用于对分组后的结果进行过滤。

6.多表查询

  • 外连接(左连接、右连接、完全外连接(MySQL不支持))、内连接(inner join )、交叉连接(cross join)、两表关系为一对多,多对一或多对多时的连接语句。
  • 多表查询案例
    这里写图片描述
  • 1.从student表中查询年龄27~30岁的学生信息
  • (1)select * from student
    where year(now())-birth>=27 and year(now())-birth<=30
  • (2) alter table student add age int(10)
    update student set age=year(now())-birth
    select * from student where age between 27 and 30
  • 2.计算每个学生的总成绩
  • (1) select name,sum(grade) from student left join score on student.id=score.stu_id group by student.id
  • (2) select name,sum(grade) from student,score where student.id=score.stu_id group by student.id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值