存儲數(shù)據(jù)的倉庫
常見數(shù)據(jù)庫分類: 大型數(shù)據(jù)庫 Oracele (多用戶 甲骨文 開源 使用免費(fèi) 服務(wù)收費(fèi))
中型數(shù)據(jù)庫 sqlserver(win) postgresql(日企)
小型數(shù)據(jù)庫 mysql (甲骨文 開源免費(fèi))
微型數(shù)據(jù)庫 sqllilt
數(shù)據(jù)庫的 庫 表 列名 約束名(auto_increment, FOREIGN KEY PRIMARY key UNIQUE DEFAULT
(默認(rèn)) not null ) 聚合函數(shù)(max min avg COUNT)
sql語句分類:
數(shù)據(jù)定義語言DDL 對庫和表(庫表的結(jié)構(gòu))的操作(create ALTER DROP)
數(shù)據(jù)查詢語言DQL 模糊 分頁查 排序 條件 分組 。。涛浙。
數(shù)據(jù)操縱語言DML 對數(shù)據(jù)的的操作 增 刪 改(insert INTO update DELETE)
數(shù)據(jù)控制功能DCL 對數(shù)據(jù)庫的權(quán)限 GRANT,REVOKE,COMMIT,ROLLBACK 事務(wù)的特性 ACID
DDL語句:
create database 庫名 /表名
use 庫名
alter 庫名 /表名
drop 庫名/ 表名
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語句:
添加數(shù)據(jù):
insert into 表名【(字段名)】 values (字段值)
insert into 表名 (字段名) values (字段值1),(字段值2),(字段值3).征绎。穷当。获洲。阱表。
修改字段名:
update 表名 set 字段名 = 新字段值 【條件】 如果增加條件語句對應(yīng)的是修改一條語句 如果沒有條件對應(yīng)的是修改全部數(shù)據(jù)
清空表數(shù)據(jù):
delete 表名 【條件】 不加條件對應(yīng)是表的中所有數(shù)據(jù) 如果加上條件刪除的是單挑數(shù)據(jù)
DQL語句:
單表查
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 全連接
一共52條數(shù)據(jù) 每頁顯示10條 分了 5頁
select * from student LIMIT 1,2 (1 代表的是偏移量 從第幾條數(shù)據(jù)開始 2 代表的是每頁展示多少數(shù)據(jù))
DQL語句
全查
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
分頁查詢
select * from student LIMIT 1,2 (1 代表的是偏移量 從第幾條數(shù)據(jù)開始 2 代表的是每頁展示多少數(shù)據(jù))
聚合查詢 對應(yīng)是表的主鍵 唯一
select COUNT(id) FROM student 用于做分頁的時候用
SELECT MAX(age) FROM student
SELECT MIN(age) FROM student
SELECT avg(age) FROM student
多表查詢: 2-3 測試的范圍
內(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)