想要年薪20W+?吃透這份清華教授整理的MySQL筆記,面試大廠穩了

今日分享開始啦,請大家多多指教~

這篇文章給大家分享的是MySQL的基本操作和一部分的CRUD內容,正文開始~

想要年薪20W+?吃透這份清華教授整理的MySQL筆記,面試大廠穩了

資料庫操作

建立資料庫

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

想要年薪20W+?吃透這份清華教授整理的MySQL筆記,面試大廠穩了

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

想要年薪20W+?吃透這份清華教授整理的MySQL筆記,面試大廠穩了

新增表

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`

資料庫常用欄位型別

資料型別分類

想要年薪20W+?吃透這份清華教授整理的MySQL筆記,面試大廠穩了

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

4。排序條件

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

Asc升序[預設]、Desc降序

ORDER BY子句應位於SELECT語句的結尾。

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

多表查詢

今日份分享已結束,請大家多多包涵和指點!

相關文章