文章目錄
- 一、SQL概述
-
- 1.1 SQL特點
- 1.2 SQL的基本概念
- 二、資料定義
-
- 2.1 模式的定義與删除
- 2.2 基本表的定義、删除與修改
- 2.3 索引的建立與删除
- 三、資料查詢
-
- 3.1 語句格式
- 3.2 單表查詢(僅涉及一個表)
- 3.2 連接配接查詢
- 3.3 嵌套查詢
- 4.4 SELECT語句的一般格式
- 四、資料更新
-
- 4.1 插入資料
- 4.2 修改資料
- 4.3 删除資料
- 五、MySQL使用
-
- 5.1、MySQLworkbench中
- 5.2 在Navicat Premium中
- 六、結語
一、SQL概述
SQL(Structured Query Language)為結構化查詢語言,是關系資料庫的标準語言。
1.1 SQL特點
1.綜合統一
(1)集資料定義語言(DDL),資料操縱語言(DML),資料控制語言(DCL)功能于一體。
(2)可以獨立完成資料庫生命周期中的全部活動:
①定義關系模式,插入資料,建立資料庫;
②對資料庫中的資料進行查詢和更新;
③資料庫重構和維護
④資料庫安全性、完整性控制等
(3)使用者資料庫投入運作後,可根據需要随時逐漸修改模式,不影響資料的運作。
(4)資料操作符統一
2.高度非過程化:無須了解存取路徑
3.面向集合的操作方式:
①操作對象、查找結果可以是元組的集合;
②一次插入、删除、更新操作的對象可以是元組的集合。
4.以同一種文法結構提供多種使用方式:
①能夠獨立地用于聯機互動的使用方式;
②SQL又是嵌入式語言:能夠嵌入進階語言(例如C,C++,Java)程式中,供程式員設計程式時使用。
5.語言簡潔,易學易用:
1.2 SQL的基本概念
學生-課程資料庫
學生-課程模式 S-T :
(1)學生表:Student(Sno,Sname,Ssex,Sage,Sdept)
(2)課程表:Course(Cno,Cname,Cpno,Ccredit)
(3)學生選課表:SC(Sno,Cno,Grade)
二、資料定義
SQL的資料定義功能: 模式定義、表定義、視圖和索引的定義
2.1 模式的定義與删除
1.定義模式
(1)定義模式實際上定義了一個命名空間
(2)在這個命名空間中可以定義該模式包含的資料庫對象,例如基本表、試圖、索引等。
(3)在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
CREATE SCHEMA <模式名> AUTHORIZATION <使用者名>[<表定義子句>|<視圖定義子句>|<授權定義子句>]
2.删除模式
DROP SCHEMA <模式名> <CASCADE|RESTRICT>
(1)CASCADE(級聯): 删除模式的同時把該模式中所有的資料庫對象全部删除
(2)RESTRICT(限制):如果該模式中定義了下屬的資料庫對象(如表、視圖等),則拒絕該删除語句的執。當該模式中沒有任何下屬的對象時才能執行。
2.2 基本表的定義、删除與修改
1.定義基本表
CREATE TABLE <表名>
(<列名> <資料類型>[ <列級完整性限制條件> ]
[,<列名> <資料類型>[ <列級完整性限制條件>] ] …
[,<表級完整性限制條件> ] );
如果完整性限制條件涉及到該表的多個屬性列,則必須定義在表級上,否則既可以定義在列級也可以定義在表級。
2.資料類型
3.删除基本表
DROP TABLE <表名>[RESTRICT| CASCADE];
(1)RESTRICT:删除表是有限制的。
①欲删除的基本表不能被其他表的限制所引用
②如果存在依賴該表的對象,則此表不能被删除
(2)CASCADE:删除該表沒有限制。
①在删除基本表的同時,相關的依賴對象一起删除
4.修改基本表
ALTER TABLE <表名>
[ ADD <新列名> <資料類型> [ 完整性限制 ] ]
[ DROP <完整性限制名> ]
[ ALTER COLUMN<列名> <資料類型> ];
2.3 索引的建立與删除
(1)建立索引的目的:加快查詢速度
(2)誰可以建立索引
①DBA 或 表的屬主(即建立表的人)
②DBMS一般會自動建立以下列上的索引
PRIMARY KEY
UNIQUE
(3)誰 維護索引
DBMS自動完成
(4)使用索引
DBMS自動選擇是否使用索引以及使用哪些索引
1.語句格式
CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
2.删除索引
DROP INDEX <索引名>;
删除索引時,系統會從資料字典中删去有關該索引的描述。
三、資料查詢
3.1 語句格式
SELECT [ALL|DISTINCT] <目标清單達式>
[,<目标清單達式>] …
FROM <表名或視圖名>[, <表名或視圖名> ] …
[ WHERE <條件表達式> ]
[ GROUP BY <列名1> [ HAVING <條件表達式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
3.2 單表查詢(僅涉及一個表)
1.選擇表中的若幹列
2.選擇表中的若幹元組
指定DISTINCT關鍵詞,去掉表中重複的行
SELECT DISTINCT Sno
FROM SC;
(1)比較大小
(2)确定範圍
謂詞: BETWEEN … AND …
NOT BETWEEN … AND …
(3)确定集合
謂詞:IN <值表>, NOT IN <值表>
(4)字元比對
謂詞: [NOT] LIKE ‘<比對串>’ [ESCAPE ‘ <換碼字元>’]
(5)涉及空值的查詢
謂詞: IS NULL 或 IS NOT NULL
(6)多重條件查詢
①邏輯運算符:AND和 OR來聯結多個查詢條件:AND的優先級高于OR; 可以用括号改變優先級
②可用來實作多種其他謂詞: [NOT] IN;[NOT] BETWEEN … AND …
3.聚集函數
3.2 連接配接查詢
(1)連接配接查詢:同時涉及多個表的查詢
(2)連接配接條件或連接配接謂詞:用來連接配接兩個表的條件——一般格式:
①[<表名1>.]<列名1> <比較運算符> [<表名2>.]<列名2>
②[<表名1>.]<列名1> BETWEEN [<表名2>.]<列名2> AND [<表名2>.]<列名3>
(3)連接配接字段:連接配接謂詞中的列名稱
連接配接條件中的各連接配接字段類型必須是可比的,但名字不必是相同的
1.等值與非等值連接配接查詢
(1)等值連接配接:連接配接運算符為=
(2)自然連接配接
2.自身連接配接
(1)自身連接配接:一個表與其自己進行連接配接
(2)需要給表起别名以示差別
(3)由于所有屬性名都是同名屬性,是以必須使用别名字首
3.外連接配接
4.複合條件連接配接
複合條件連接配接:WHERE子句中含多個連接配接條件
3.3 嵌套查詢
1.嵌套查詢概述
一個SELECT-FROM-WHERE語句稱為一個查詢塊,那麼将一個查詢塊嵌套在另一個查詢塊的WHERE子句或HAVING短語的條件中的查詢稱為嵌套查詢。
2.帶有比較運算符的子查詢
當能确切知道内層查詢傳回單值時,可用比較運算符(>,<,=,>=,<=,!=或< >)。
與ANY或ALL謂詞配合使用
3.帶有ANY(SOME)或ALL謂詞的子查詢
ANY:任意一個值
ALL:所有值
4.帶有EXISTS謂語的子查詢
[例44]查詢所有選修了1号課程的學生姓名。
思路分析:
① 本查詢涉及Student和SC關系
②在Student中依次取每個元組的Sno值,用此值去檢查SC關系
③若SC中存在這樣的元組,其Sno值等于此Student.Sno值,并且其Cno= ‘1’,則取此Student.Sname送入結果關系
4.4 SELECT語句的一般格式
SELECT [ALL|DISTINCT]
<目标清單達式> [别名] [ ,<目标清單達式> [别名]] …
FROM <表名或視圖名> [别名]
[ ,<表名或視圖名> [别名]] …
[WHERE <條件表達式>]
[GROUP BY <列名1>
[HAVING <條件表達式>]]
[ORDER BY <列名2> [ASC|DESC]
四、資料更新
4.1 插入資料
1.插入元組(将新元組插入指定表中)
(1)語句格式:
INSERT
INTO <表名> [(<屬性列1>[,<屬性列2 >…)]
VALUES (<常量1> [,<常量2>] … )
(2)INTO子句
屬性列的順序可與表定義中的順序不一緻;沒有指定屬性列;指定部分屬性列
(3) VALUES子句
提供的值必須與INTO子句比對(值的個數、
值的類型)
2.插入子查詢結果( 将子查詢結果插入指定表中)
(1)語句格式
INSERT
INTO <表名> [(<屬性列1> [,<屬性列2>… )]
子查詢;
(2)INTO子句(與插入元組類似)
(3) 子查詢:
SELECT子句目标列必須與INTO子句比對(值的個數、值的類型)
4.2 修改資料
(1)語句格式
UPDATE <表名>
SET <列名>=<表達式>[,<列名>=<表達式>]…
[WHERE <條件>];
(2)功能:修改指定表中滿足WHERE子句條件的元組
(3)SET子句:
①指定修改方式
②要修改的列
③修改後取值
(4)WHERE子句
①指定要修改的元組
②預設表示要修改表中的所有元組
4.3 删除資料
(1)語句格式
DELETE
FROM <表名>
[WHERE <條件>];
(2)功能:删除指定表中滿足WHERE子句條件的元組
(3)WHERE子句
①指定要删除的元組
②預設表示要删除表中的全部元組,表的定義仍在字典中
五、MySQL使用
5.1、MySQLworkbench中
步驟
(1)打開MySQL workbench
(2)打開頁面如下,并進行連接配接
再輕按兩下進入
(3)建立模式并命名S-T
(4)建立基本表
(5)右擊student表
(6)建立表格後儲存即可查詢。輸入查詢語句
5.2 在Navicat Premium中
(1)打開Navicat Premium,點選連接配接,輸入密碼,使用者名
(2)右擊建立資料庫
(3)建立基本表,通過添加欄位設計基本表,再儲存命名,再輕按兩下進入填充資料
設計表
(4)如若查詢,可點模式下方的查詢,編寫程式後查詢
六、結語
以上,謝謝!