想要年薪 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
多表查询
今日份分享已结束,请大家多多包涵和指点!
评论