写点什么

想要年薪 20W+?吃透这份清华教授整理的 MySQL 笔记,面试大厂稳了

发布于: 2021 年 05 月 18 日
想要年薪20W+?吃透这份清华教授整理的MySQL笔记,面试大厂稳了

今日分享开始啦,请大家多多指教~


这篇文章给大家分享的是 MySQL 的基本操作和一部分的 CRUD 内容,正文开始~

数据库操作

创建数据库

1.相关参数

CHARACTER SET:指定数据库采用的字符集,如果不指定字符集,默认 utf8

COLLATE :指定数据库字符集的校对规则

  • utf8_bin:区分大小写

  • utf8_general_ci:不区分大小写

  • 默认使用 utf8mb4_general_ci

2.创建数据库 sql

CREATE DATABASE db CHARACTER SET utf8 COLLATE utf8_general_ci

查看、删除数据库

1.查看所有数据库

SHOW DATABASES

2.查看数据库创建语句

SHOW CREATE DATABASE db

3.数据库删除语句

DROP DATABASE db

备份恢复数据库

1.备份数据库

  • 需要在 DOS 执行

  • mysqldump -u 用户名 -p -B 数据库 1 数据库 2 数据库 n > d:\\文件名.sql

  • 将 db 数据库备份到 D 盘下的 bak.sql 文件

mysqldump -u root -p -B db db01 db02 > d:\\bak.sql

2.恢复数据库

  • 需要在 MySQL 命令行执行

  • source d:\\文件名.sql

  • 将 D 盘下的 bak.sql 文件恢复到数据库

source d:\\bak.sql

3.备份数据库中的指定表

  • mysqldump -u 用户名-p 密码 数据库 表 1 表 2 表 n > d:\\文件名.sql

mysqldump -u root -proot db user > d:\\bak.sql

数据表操作

创建表

1.相关参数

  • CHARACTER SET:字符集,如果不指定则为所在数据库字符集

  • COLLATE:校对规则,如不指定则为所在数据库校对规则

  • ENGINE:存储引擎

2.sql 语句

添加表

  • ALTER TABLE 修改指定表

  • ADD 添加新字段

  • AFTER 在哪列之后添加

ALTER TABLE `user` ADD sex int AFTER name

修改表

  • MODIFY 修改指定字段

ALTER TABLE `user` MODIFY pwd VARCHAR(255)

  • RENAME TABLE 修改指定表

  • to 新表名

RENAME TABLE stu to student

  • 修改字符集

ALTER TABLE `user` CHARACTER SET utf8

  • 修改存在列名成新列名

ALTER TABLE `user` CHANGE `name` username VARCHAR(50)

删除表

  • DROP 删除指定字段

ALTER TABLE `user` DROP sex

  • 删除表

DROP TABLE `user`

数据库常用字段类型

数据类型分类

UNSIGNED

UNSIGNED 表示无符号,没有指定表示默认有符号

DECIMAL[M,D]

  • 如果希望小数精度高,推荐使用 decimal

  • 可以支持更加精确的小数位,M 是小数位数(精度)的总数,D 是小数点(标度)后面的位数

  • 如果 D 是 0,则表示没有小数点或分数部分

  • M 最大是 65,D 最大是 30

  • 如果 D 被省略,默认是 0。如果 M 被省略,默认是 10

CHAR(size)

  • 固定长度字符串 最大 255 字符

  • 不区分字符是汉字还是字母,都不能超过 size 个

  • 如果插入的数据长度没有达到 size,也会分配 size 长度的字符空间

  • 查询速度 char>varchar

VARCHAR(size)

  • 0~65535 可变长度字符串 最大 65532 字节(utf8 编码最大 21844 字符 1-3 个字节用于记录大小)

  • VARCHAR(size)的 size 代表的是字符不是字节

  • 如果插入的数据长度没有达到 size,实际占用空间大小按插入的数据长度来分配

  • varchar 本身还需要占用 1-3 个字节来记录存放内容长度

  • 查询速度 char>varchar

  • 存放文本时,可以使用 text 代替 varchar,如果 varchar 不够用 可以考虑使用 mediumtext 或者 longtext

时间类型

  • Date 保存年月日

  • DATEIME 保存年月日时分秒

  • TIMESTAMP 会使用时间戳自动更新保存的年月日时分秒

CRUD

Insert

  • 插入的数据应与字段的数据类型相同。比如把’abc’添加到 int 类型会错误

  • 数据的长度应在列的规定范围内,例如:不能将一个长度为 80 的字符串加入到长度为 40 的列中。

  • 在 values 中列出的数据位置必须与被加入的列的排列位置相对应。

  • 字符和日期型数据应包含在单引号中。

  • 列可以插入空值[前提是该字段允许为空],insert into table value(null)

  • insert into tab name(列名…)values (),(),()形式添加多条记录

  • 如果是给表中的所有字段添加数据,可以不写前面的字段名称

  • 默认值的使用,当不给某个字段值时,如果有默认值就会添加,否则报错

INSERT INTO good ( id, goods_name, price )VALUES(2,'苹果',3000)

Update

  • UPDATE 语法可以用新值更新原有表行中的各列

  • SET 子句指示要修改哪些列和要给予哪些值。

  • WHERE 子句指定应更新哪些行。如没有 WHERE 子句,则更新所有的行。

  • 如果需要修改多个字段,可以通过 set 字段 1=值 1,字段 2=值 2…

1.修改表中所有数据

UPDATE good SET price=1000

2.修改指定数据

UPDATE good SET price=1000 where id=1

3.修改数据在原有基础上增加/减少

UPDATE good SET price=price+1000

Delete

  • 如果不使用 where 子句,将删除表中所有数据。

  • Delete 语句不能删除某一列的值(可使用 update 设为 null 或者"’)

  • 使用 delete 语句仅删除记录,不删除表本身。如要删除表,使用 drop table 表名;

1.删除所有数据

DELETE FROM good

2.删除指定数据

DELETE FROM good WHERE id=1

单表查询

1.基本查询

  • Select 指定查询哪些列的数据。column 指定列名。

  • *号代表查询所有列

  • From 指定查询哪张表。

  • DISTINCT 可选,指显示结果时,是否去掉重复数据

SELECT DISTINCT `name` FROM student

2.as 取别名和使用表达式进行运算

SELECT name, (num1+num2+num3) as total FROM student

3.查询条件

  • 比较运算符> < >= <= <> != ==

  • BETWEEN AND:显示在某一区间的值

  • IN:显示在 in 列表中的值,如 in(10,20,30)

  • LIKE 或者 NOT LIKE:模糊查询

  • IS NULL:判断是否为空

  • and:多个条件同时成立

  • or:多个条件任一成立

  • not:不成立,如 where not(salary>100)

select * from student where (num1+num2+num3)>200 and num1<num2 and num3 like "笑 %"

4.排序条件

  • Order by 指定排序的列,排序的列既可以是表中的列名,也可以是 select 语句后指定的列名。

  • Asc 升序[默认]、Desc 降序

  • ORDER BY 子句应位于 SELECT 语句的结尾。

select (num1+num2+num3) as total from student order by total desc

多表查询


今日份分享已结束,请大家多多包涵和指点!

用户头像

还未添加个人签名 2021.04.20 加入

Java工具与相关资料获取等WX: pfx950924(备注来源)

评论

发布
暂无评论
想要年薪20W+?吃透这份清华教授整理的MySQL笔记,面试大厂稳了