數(shù)據(jù)庫基本操作語法歸納總結(jié)
關(guān)系型數(shù)據(jù)庫:以表作為實體,以主鍵和外鍵關(guān)系作為聯(lián)系的一種數(shù)據(jù)結(jié)構(gòu)。
主鍵:在關(guān)系型數(shù)據(jù)庫中,用一個唯一的標識符來標志每一行,這個標識符就是主鍵。主鍵有兩個特點:非空和不能重復。
外鍵:在關(guān)系型數(shù)據(jù)庫中,外鍵就是用來表達表與表之間的關(guān)系、聯(lián)系,通過主外鍵關(guān)系,建立實體之間的聯(lián)系。
表之間的三種基本關(guān)系模型:
① 一對多關(guān)系: 一條主表記錄對應多條從表記錄,一條從表記錄對應一條主表記錄。
② 一對一關(guān)系: 一條主表記錄對應一條從表記錄,一條從表記錄對應一條主表記錄。
③ 多對多關(guān)系: 一條主表記錄對應多條從表記錄,一條從表記錄對應多條主表記錄。
關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(DBMS):
關(guān)系型數(shù)據(jù)庫只是一個保存數(shù)據(jù)的容器,大多數(shù)數(shù)據(jù)庫依靠一個稱為數(shù)據(jù)庫管理系統(tǒng)(DBMS)的軟件來管理數(shù)據(jù)庫中的數(shù)據(jù)。
目前流行的關(guān)系型數(shù)據(jù)庫服務器管理系統(tǒng)有:
① 微軟的MS SQL Server
② 甲骨文的Oracle
③ IBM公司的DB2
④ 開源數(shù)據(jù)庫的MySQL、PostgreSQL
SQL:
SQL是結(jié)構(gòu)化查詢語言,是一種用于管理關(guān)系型數(shù)據(jù)庫,并與數(shù)據(jù)庫中的數(shù)據(jù)進行通訊的計算機語言。
SQL語句:
① 數(shù)據(jù)定義語言(DDL): 用于創(chuàng)建、修改和刪除數(shù)據(jù)庫內(nèi)的數(shù)據(jù)結(jié)構(gòu)。
-- 創(chuàng)建數(shù)據(jù)庫db
CREATE DATABASE db;
-- 刪除數(shù)據(jù)庫db
DROP DATABASE db;
-- 建立表t_student
CREATE TABLE t_student(
-- PRIMARY KEY標志該列為主鍵列
-- AUTO_INCREMENT設置自動增長列,該列的值由DBMS分配,不用開發(fā)者維護
id INT PRIMARY KEY AUTO_INCREMENT,-- 編號
studentName VARCHAR(20),-- 姓名,20表示名字20個字
sex ENUM('男','女'),-- 性別,enum表示枚舉
birthday DATE, -- 生日
tel VARCHAR(11) -- 電話
);
② 數(shù)據(jù)查詢語言(DQL):用于數(shù)據(jù)庫中數(shù)據(jù)的查詢
-- 查詢所有的性別 DISTINCT表示去除重復的列 SELECT DISTINCT sex FROM t_student; -- 查詢表中所有的數(shù)據(jù),*表示查詢表中所有的列 SELECT * FROM t_student; -- 查詢第一條 開始的數(shù)據(jù),顯示3條記錄 SELECT * FROM t_student LIMIT 0,3;
③ 數(shù)據(jù)操作語言(DML): 用于修改數(shù)據(jù)庫中的數(shù)據(jù),包括插入、更新和刪除數(shù)據(jù)
-- 添加記錄
INSERT INTO t_student(studentName,sex,birthday,tel)
VALUES('張三','男','1983-09-30','13987879898');
-- 刪除id為17的記錄
DELETE FROM t_student WHERE id=17;
-- 修改李四的電話
UPDATE t_student SET tel='13966666666' WHERE studentName='李四';
④ 數(shù)據(jù)控制語言(DCL):控制數(shù)據(jù)庫訪問權(quán)限
-- 給用戶授予訪問權(quán)限的GRANT語句
-- 取消用戶訪問權(quán)限的REVOKE語句
外鍵約束:
外鍵:是指從表的某列與主鍵的某列存在依附關(guān)系。
外鍵約束:是指在外鍵關(guān)聯(lián)主鍵上強制加上一個約束,如果違反該約束,則不允許該條數(shù)據(jù)的修改。
注意:沒有建立外鍵約束不等于沒有外鍵。
主鍵約束:
主鍵是表中的一到多個列,主鍵列不能為空,也不能重復,一個表中只能由一個主鍵。
聚合函數(shù):
對一組數(shù)據(jù)進行統(tǒng)計分析是使用聚合函數(shù)來實現(xiàn)的。常見聚合函數(shù)如下:
COUNT:統(tǒng)計行數(shù)量。
SUM:獲取單個列的和計量。
AVG:計算某個列的平均值。
MAX:計算某個列的最大值。
MIN:計算某個列的最小值。
SQL語句的執(zhí)行順序:
第一步:執(zhí)行FROM
第二步:where條件過濾
第三步:GROUP BY分組
第四步:執(zhí)行select投影列
第五步:HAVING條件過濾
第六步:執(zhí)行ORDER BY排序語句,默認為asc升序,DESC為降序。
聯(lián)接:
內(nèi)聯(lián)接和外聯(lián)接的區(qū)別:
內(nèi)聯(lián)接:只能查詢兩個表中都有的相關(guān)數(shù)據(jù)的記錄;
外連接:可以查詢一個表中所有的記錄,無論該記錄是否有關(guān)聯(lián)數(shù)據(jù)。
CREATE TABLE t_man(
id INT PRIMARY KEY AUTO_INCREMENT,
manName VARCHAR(20),
birthday DATE
);
INSERT INTO t_man(manName,birthday)
VALUES('張三','1980-02-03'),('李四','1994-01-05'),
('王五','1991-07-30'),('趙六','1995-11-18');
SELECT * FROM t_man;
CREATE TABLE t_bike(
id INT PRIMARY KEY AUTO_INCREMENT,
bikeType VARCHAR(20),
money INT,
manId INT
);
-- 添加外鍵約束,讓主鍵和外鍵一一對應,防止垃圾數(shù)據(jù)的產(chǎn)生
ALTER TABLE t_bike ADD CONSTRAINT fk_mb FOREIGN KEY (manId)
REFERENCES t_man(id);
INSERT INTO t_bike(bikeType,money,manId)
VALUES('鳳凰',400,1),('永久',500,1),('火麒麟',250,1),
('大運',1000,2),('夏力',600,2),('捷安特',1200,3),
('摩拜',200,3),('寶馬',2000,3),('奔馳',600,3);
-- 查詢所有自行車,并顯示該自行車的主人姓名
SELECT b.*,m.manName FROM t_bike b JOIN t_man m ON m.id=b.manId;
-- 查詢李四所有的自行車(內(nèi)連接:顯示兩個表中有聯(lián)系的數(shù)據(jù))
SELECT b.* ,m.manName FROM t_bike b JOIN t_man m ON m.id=b.manId WHERE m.manName='李四';
SELECT b.* ,m.manName FROM t_man m JOIN t_bike b ON m.id=b.manId WHERE m.manName='李四';
SELECT b.* FROM t_bike b,t_man m WHERE b.manId=m.id AND m.manName='李四';
-- 顯示所有用戶的自行車信息,外連接不能用,加where的形式來寫
-- 外連接:RIGHT 右外連接,包含右邊表中所有的信息,left 左外連接,包含左邊表中所有的信息。
SELECT m.*,b.bikeType,b.money FROM t_bike b RIGHT JOIN t_man m ON b.manId=m.id;
-- 顯示所有用戶自行車的數(shù)量
-- 左外連接
SELECT m.*,COUNT(bikeType) num FROM t_man m LEFT JOIN t_bike b ON m.id=b.manId GROUP BY m.id;
-- 右外連接
SELECT m.*, COUNT(bikeType) number FROM t_bike b RIGHT JOIN t_man m ON b.manId=m.id GROUP BY m.id;
希望本篇文章對您有所幫助
相關(guān)文章
什么是Maven及如何配置國內(nèi)源實現(xiàn)自動獲取jar包的操作
本文介紹了Maven的基本概念,包括項目構(gòu)建、依賴管理、倉庫管理以及如何設置國內(nèi)源,通過Maven,開發(fā)者可以自動化管理項目的依賴和構(gòu)建流程,提高開發(fā)效率,感興趣的朋友跟隨小編一起看看吧2024-11-11
基于創(chuàng)建Web項目運行時出錯的解決方法(必看篇)
下面小編就為大家?guī)硪黄趧?chuàng)建Web項目運行時出錯的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08

