存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù)
常見數(shù)據(jù)庫(kù)分類:? 大型數(shù)據(jù)庫(kù)? Oracele (多用戶 甲骨文 開源 使用免費(fèi) 服務(wù)收費(fèi))
? ? ? ? ? ? ? ? ? 中型數(shù)據(jù)庫(kù)? sqlserver(win)? postgresql(日企)?
? ? ? ? ? ? ? ? ? 小型數(shù)據(jù)庫(kù)? mysql? (甲骨文? 開源免費(fèi))
? ? ? ? ? ? ? ? ? 微型數(shù)據(jù)庫(kù)? sqllilt?
數(shù)據(jù)庫(kù)的? 庫(kù)? 表? 列名 約束名(auto_increment, FOREIGN KEY PRIMARY key UNIQUE `DEFAULT`(默認(rèn)) not null )? 聚合函數(shù)(max min avg COUNT)
sql語(yǔ)句分類:
? ? 數(shù)據(jù)定義語(yǔ)言DDL? 對(duì)庫(kù)和表(庫(kù)表的結(jié)構(gòu))的操作(create ALTER DROP)
? ? 數(shù)據(jù)查詢語(yǔ)言DQL? 模糊 分頁(yè)查 排序 條件 分組? 。。。? ?
? ? 數(shù)據(jù)操縱語(yǔ)言DML? 對(duì)數(shù)據(jù)的的操作? 增 刪 改(insert INTO? update DELETE)
? ? 數(shù)據(jù)控制功能DCL? 對(duì)數(shù)據(jù)庫(kù)的權(quán)限 GRANT,REVOKE,COMMIT,ROLLBACK? ? 事務(wù)的特性 ACID
DDL語(yǔ)句:
? ? create database 庫(kù)名 /表名
? ? use 庫(kù)名
? ? alter 庫(kù)名 /表名?
? ? drop 庫(kù)名/ 表名
? ? ALTER TABLE 表名稱 ADD 字段名 字段約束
? ? ALTER TABLE 修改前表名稱 RENAME 修改后表名稱
? ? //只復(fù)制表結(jié)構(gòu)及約束,但不復(fù)制數(shù)據(jù)
? ? CREATE TABLE 復(fù)制出的表 LIKE 原表
? ? //復(fù)制表結(jié)構(gòu)及數(shù)據(jù),但不復(fù)制約束
? ? CREATE TABLE 復(fù)制出的表 AS SELECT * FROM 原表
? ? //禁用約束
? ? ALTER TABLE 表名稱 DISABLE KEYS
? ? //啟用約束
? ? ALTER TABLE 表名稱 ENABLE KEYS
? ? ? //刪除表字段
? ? ALTER TABLE 表名稱 DROP COLUMN 字段名
? ? //刪除主鍵
? ? ALTER TABLE 表名稱 DROP PRIMARY KEY
? ? //刪除索引
? ? ALTER TABLE 表名稱 DROP INDEX 索引的字段名
? ? //刪除外鍵約束
? ? ALTER TABLE 表名稱 DROP FOREIGN KEY 外鍵的字段名
DML語(yǔ)句:
? ? insert into 表名【(字段名)】 values (字段值)
? ? insert into 表名 (字段名) values (字段值1),(字段值2),(字段值3).。。。。
? ? update? 表名 set 字段名 = 新字段值? 【條件】? 如果增加條件語(yǔ)句對(duì)應(yīng)的是修改一條語(yǔ)句? 如果沒有條件對(duì)應(yīng)的是修改全部數(shù)據(jù)
? ? delete 表名? 【條件】? ? 不加條件對(duì)應(yīng)是表的中所有數(shù)據(jù)? 如果加上條件刪除的是單挑數(shù)據(jù)
DQL語(yǔ)句:
? ? 單表查
? ? select 字段名1,字段名2 from 表名
? ? ORDER BY DESC/ASC
? ? GROUP BY? 字段名
? ? where? 條件
? ? like? 字段名
? ? HAVING? 條件
? ? limit 0,0
? ? 多表查
? ? 面試題:
? ? INNER JOIN? 內(nèi)鏈接
? ? LEFT JOIN RIGHT JOIN? ? 外連接 {左外聯(lián) 右外聯(lián)}
? ? FULL join? ? 全連接
// DQL語(yǔ)句
? 全查
? ? select * from student
? 條件查詢
? ? select * FROM student where id = 1
? 根據(jù)字段查詢
? SELECT sname,sid FROM student
? 排序查詢
? SELECT sname,age FROM student ORDER BY age asc
? 別名查詢
? SELECT sname as 姓名 ,age as 年齡 FROM student ORDER BY age asc
? 分組查詢
? select * from student GROUP BY ssex
? SELECT COUNT(id),ssex as 性別 from student GROUP BY ssex?
? 模糊查詢?
? 以%出現(xiàn)
? select * from student where sname like "%斯%"
? 以_的占位符出現(xiàn)
? ? select * from student where sname like "__斯"
? ? 分組后的條件查詢? HAVING 用于分組后的條件查詢
? ? SELECT sname,sid,age from student GROUP BY ssex? HAVING age>80
? ? 分頁(yè)查詢
? ? select * from student? LIMIT 1,2? (1 代表的是偏移量? 從第幾條數(shù)據(jù)開始 2 代表的是每頁(yè)展示多少數(shù)據(jù))
? ? 聚合查詢? 對(duì)應(yīng)是表的主鍵? 唯一
? ? select COUNT(id) FROM student? 用于做分頁(yè)的時(shí)候用?
? ? SELECT MAX(age) FROM student
? ? SELECT MIN(age) FROM student
? ? SELECT avg(age) FROM student
? ? 多表查詢:? 2-3 測(cè)試的范圍
? ? 內(nèi)連接? innner JOIN
? ? 外連接? left JOIN? RIGHT JOIN?
? ? select s.sname,s.ssex,s.age,se.cno,se.degree from student as s inner? JOIN score as se? ON s.sid = se.sno
? ? ? select s.sname,s.ssex,s.age,se.cno,se.degree from student? s left? JOIN score? se? ON s.sid = se.sno
? ? ? select s.sname,s.ssex,s.age,se.cno,se.degree from student as s RIGHT? ? JOIN score as se? ON s.sid = se.sno
? ? 面試題:
? ? INNER JOIN 內(nèi)連接? 將兩張表的相同的內(nèi)容進(jìn)行展示
? ? LEFT JOIN? 左外聯(lián)? 以左邊的表為主表從表的內(nèi)容顯示顯示字段如果有值顯示值如果沒有以null填充
? ? right JOIN? 左外聯(lián)? 以右邊的表為主表從表的內(nèi)容顯示顯示字段如果有值顯示值如果沒有以null填充
? ? FULL? join? 全鏈接? 將2張表中的所有內(nèi)容全部顯示
? ? 子查詢 以()查出來的結(jié)果作為條件再次進(jìn)行查詢
? ? ? select * from student? ?
? ? 將年齡最大的名字展示
? ? select sname from student where age = (SELECT MAX(age) FROM student)