SQL總結(四)編輯類
1、資料庫
建立資料庫語法:
CREATE DATABASE database_name
1)建立測試庫
CREATE DATABASE TestDB
2)使用庫
USE TestDB
3)刪除庫
DROP DATABASE TestDB
2、表
1)建立使用者資訊表,包括ID、姓名、年齡、專業ID、所在城市
CREATE TABLE Students(
ID int,
Name nvarchar(20),
Age int,
MajorID int,
City nvarchar(50)
)
2)更新表
- 新增欄位
語法:
ALTER TABLE table_name
ADD column_name datatype
學生資訊表增加年紀欄位
ALTER TABLE Students ADD Grade int
- 修改欄位
語法:
ALTER TABLE table_name
ALTER COLUMN column_name datatype
例項:將Grade欄位,int改為nvarchar
ALTER TABLE Students ALTER COLUMN Grade nvarchar(20)
- 刪除欄位
語法:
ALTER TABLE table_name
DROP COLUMN column_name
例項:刪除學生資訊表中的Grade欄位
ALTER TABLE Students DROP COLUMN Grade
3)刪除表
刪除學生資訊表:
DROP TABLE Students
3、約束(Constraints)
CHECK 約束用於限制列中的值的範圍。
如果對單個列定義 CHECK 約束,那麼該列只允許特定的值。
如果對一個表定義 CHECK 約束,那麼此約束會在特定的列中對值進行限制。
主要有以下幾種約束:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
1)不可空(NOT NULL)
約束強制列不接受 NULL 值
2)唯一約束(UNIQUE)
UNIQUE 約束唯一標識資料庫表中的每條記錄
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證.
建立表時指定
CREATE TABLE Students(
ID int primary key not null,
Name nvarchar(50) UNIQUE,
Age int,
City nvarchar(50),
MajorID int
)
但是這樣UNIQUE約束名是按規則預設的,我們無法確認,不便於後續修改。
需在建立時指定約束名稱,當然可以同時多多列建立唯一約束。建議建立表後新增約束。
(1)建立學生表時,指定ID和Name唯一約束
CREATE TABLE Students(
ID int not null,
Name nvarchar(50),
Age int,
City nvarchar(50),
MajorID int,
CONSTRAINT UK_Students_ID_And_Name UNIQUE (ID,Name)
)
(2)為學生的姓名新增唯一約束
ALTER TABLE Students ADD CONSTRAINT UK_Students_Name UNIQUE(Name)
(3)刪除學生姓名唯一約束
ALTER TABLE Students DROP CONSTRAINT UK_Students_Name
3)主鍵(PRIMARY KEY)
PRIMARY KEY 約束唯一標識資料庫表中的每條記錄。
規則:
- 主鍵必須包含唯一的值。
- 主鍵列不能包含 NULL 值。
- 每個表都應該有一個主鍵,並且每個表只能有一個主鍵。
其使用方法與UNIQUE一樣,這裡只說幾個簡單例子
(1)指定學生ID為主鍵
ALTER TABLE Students ADD CONSTRAINT PK_Students_ID PRIMARY KEY(ID)
(2)刪除學生ID主鍵
ALTER TABLE Students DROP CONSTRAINT PK_Students_ID
(3)建立學生ID和姓名的聯合主鍵
注意:在建立主鍵時,一定要保證列有NOT NULL約束
ALTER TABLE Students ADD CONSTRAINT PK_Students_ID_AND_Name PRIMARY KEY(ID,Name)
4)外來鍵(FOREIGN KEY)
一個表中的 FOREIGN KEY 指向另一個表中的 PRIMARY KEY。
如:學生資訊表中的MajorID即是專業資訊表Majors的外來鍵。
(1)學生資訊表中的MajorID新增外來鍵約束
ALTER TABLE Students ADD CONSTRAINT FK_Students_MajorID FOREIGN KEY(MajorID) REFERENCES Majors(ID)
(2)刪除外來鍵約束
ALTER TABLE Students DROP CONSTRAINT FK_Students_MajorID
5)校驗約束(CHECK)
CHECK 約束用於限制列中的值的範圍。
(1) 設定學生的名稱長度不能少於2
ALTER TABLE Students ADD CONSTRAINT CK_Students_Name CHECK(LEN(Name)>=2)
(2)刪除該約束
ALTER TABLE Students DROP CONSTRAINT CK_Students_Name
(3)多列約束,對姓名和年齡新增約束
ALTER TABLE Students ADD CONSTRAINT CK_Students_Name_AND_Age CHECK(LEN(Name)>=2 AND Age>=18)
6)預設值(DEFAULT)
DEFAULT 約束用於向列中插入預設值。
此約束可以直接在建立表時執行。一般改動較小。
(1)建表時指定預設值,指定性別的預設值為0(0代表男,1代表女)
--學生資訊表
CREATE TABLE Students(
ID int primary key not null,
Name nvarchar(50),
Age int,
Sex bit DEFAULT(0),
City nvarchar(50),
MajorID int
)
(2)單獨語句增加Sex預設值約束
ALTER TABLE Students ADD CONSTRAINT DF_Students_Sex DEFAULT(1) FOR Sex
(3)刪除預設值約束
ALTER TABLE Students DROP CONSTRAINT DF_Students_Sex
(4)修改預設值約束,暫時沒找到
建議刪除後重建。
4、索引
索引類似於書記的目錄
索引可以加快查詢速度,當然過多的索引會影響資料的更新效率,建議索引建立在那些變化不大且經常查詢的列。
1)建立索引
CREATE INDEX 語句用於在表中建立索引。
CREATE UNIQUE INDEX是建立唯一索引,意味著其值唯一。
(1)在學生表的ID上建立索引
CREATE INDEX Index_Student_ID
ON Students (ID)
(2)在學生表的ID上建立唯一索引
CREATE UNIQUE INDEX Index_Student_ID
ON Students (ID)
(3)在學生ID降序建立索引
CREATE UNIQUE INDEX Index_Student_ID
ON Students (ID DESC)
(4)建立多個列聯合索引
CREATE INDEX Index_Student_ID_AND_NAME
ON Students(ID,Name)
2)刪除索引
語法:
DROP Index TABLE_NAME.INDEX_NAME
如:刪除學生表的ID索引
DROP Index Students.Index_Student_ID
5、檢視(VIEW)
概念: 是基於 SQL 語句的結果集的視覺化的表。
檢視包含行和列,就像一個真實的表。檢視中的欄位就是來自一個或多個資料庫中的真實的表中的欄位。我們可以向檢視新增 SQL 函式、WHERE 以及 JOIN 語句,我們也可以提交資料,就像這些來自於某個單一的表。
1)建立檢視,查詢所有成年的學生資訊
CREATE VIEW V_Adult_Students AS
SELECT ID,Name,Age,City FROM Students WHERE Age>=18
2)刪除檢視
DROP VIEW V_Adult_Students
3)更新檢視,暫時沒有直接方法,建議刪除重建。
對於記錄
1、插入
語法:
INSERT INTO 表名稱 VALUES (值1, 值2,....)
指定所要插入資料的列(推薦):
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
例項:增加學生資訊
INSERT INTO Students VALUES(2,'Lucy',17,'BeiJing','10')
建議使用,指定列。
INSERT INTO Students(ID,Name,Age,City) VALUES(1,'Tom',19,'BeiJing')
2、更新
Update 語句用於修改表中的資料。
語法:
UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
例項:
更新Lucy的年齡
UPDATE Students SET Age=18 WHERE Name='Lucy'
更新多列的值:
UPDATE Students SET Age=18,City='ShangHai' WHERE Name='Lucy'
3、刪除
DELETE 語句用於刪除表中的行。
語法:
DELETE FROM 表名稱 WHERE 列名稱 = 值
例項:
1)刪除Lucy的學生資訊
DELETE FROM Students WHERE Name='Lucy'
2)刪除所有學生資訊
DELETE FROM Students
轉載自:SQL總結(四)編輯類
相關文章
- CSDN編輯器的使用總結
- Kendo UI Grid 批量編輯使用總結UI
- 富文字編輯器:UEditor與wangEditor 初使用總結
- 【總結】五款頂級Python程式碼編輯器!Python
- SQL查詢總結SQL
- monaco-editor 實現SQL編輯器SQL
- 計算機程式的思維邏輯 (55) – 容器類總結計算機
- 基於Sql server資料庫的四種分頁方式總結SQLServer資料庫
- NIO(四)channel總結
- 四種博弈總結
- Linux檔案過濾及內容編輯處理命令總結!Linux
- sql注入簡單總結SQL
- mybatis動態sql總結MyBatisSQL
- SQL進階總結(二)SQL
- 編譯ROCKSDB總結編譯
- 安利一款線上 markdown 編輯器,類似 typora 的編輯體驗
- SQL語句規範總結SQL
- sql語句學習總結SQL
- SQL隱碼攻擊總結SQL
- MySQL基本sql語句總結MySql
- 類Jupyter notebook編輯器桌面版nteract
- 常用Java集合類總結Java
- drf檢視類總結
- JUC鎖種類總結
- 今日總結深入String類
- 譜聚類原理總結聚類
- URLConnection類,HttpURLConnection類的使用和總結HTTP
- DbForge Studio for SQL Server入門教程:如何編輯資料SQLServer
- 【多執行緒總結(四)-三大性質總結】執行緒
- iOS面試題總結(四)iOS面試題
- 第四周總結(2024.7.27)
- 暑期第四周總結
- 暑假第四周總結
- 密碼找回邏輯漏洞總結密碼
- 線上支付邏輯漏洞總結
- 編輯器快速列印html模板結構HTML
- SQL Server自增列跳號總結SQLServer
- MySQL 索引和 SQL 調優總結MySql索引
- .Net防sql注入的方法總結SQL