想要年薪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 4。排序條件 Order by 指定排序的列,排序的列既可以是表中的列名,也可以是select語句後指定的列名。 Asc升序[預設]、Desc降序 ORDER BY子句應位於SELECT語句的結尾。 select (num1+num2+num3) as total from student order by total desc 多表查詢 今日份分享已結束,請大家多多包涵和指點!
相關文章
- 2021-09-23【中英雙語】粵劇演員、編劇要有“一齣戲”精神
- 2021-09-16這一巨頭曾揚言“去中國化”, 並拒絕培養中國員工, 現怎麼樣了?
- 2021-07-25美巨頭揚言去“中國化”, 卻不料遭阿里雲突襲, 最終黯淡退場
- 2021-04-20盤點:全職獵人貪婪島篇中最常用的幾張咒語卡片和最為實用的指定卡
- 2021-03-31陳寒柏坐輪椅現身,大方迴應乾爹傳聞,曝李金斗有20多位乾爹!