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

200 阅读5分钟

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

这篇文章给大家分享的是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

image.png

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语句

image.png

添加表

  • 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 userCHANGEname username VARCHAR(50)

删除表

  • DROP删除指定字段

ALTER TABLE user DROP sex

  • 删除表

DROP TABLE user``

数据库常用字段类型

数据类型分类

image.png

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

多表查询

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