SQL學習(1) 數據定義語言

直奔主題

sql:結構化查詢語句,是一種介於關係代數和關係演算之間的結構化查詢語言,是一個通用的,功能極強的關係型數據庫語言,功能豐富,不僅具有數據定義和數據控制還有數據查詢功能,而且語言簡潔,及數據定義,數據操縱和數據功能於一體。但是不同的數據庫廠商之間的sql語言還是存在一定的差距的,但也是大同小異。

sqlserver:windows出的一個關係型數據庫管理系統,與之類似的是mysql,sqlServer是只能在windows平臺上使用,但是mySql則是和Linux爲好搭檔,他們之間在功能上是沒有多大的區別的,但是在一些控制代碼的名字可能不同,大體是相同的,就如同是山東話和北京話,說起普通話來都是相同的,但是都各自有自己的方言,同時mySql是web應用和小型企業都在用的一種數據庫管理系統。


Sql語句分爲三大類:

1)數據定義語言:負責創建,修改,刪除表,索引和視圖等對象

2)數據操作語言:負責數據庫中數據的插入,查詢,刪除等操作

3)數據控制語言:用來授予和撤銷用戶權限。


數據定義語言:

創建表:

CREATE TABLE<表名>(<列定義清單>);

列定義清單:<列名><數據類型><默認值><約束性限制><標識列設置>

上述即爲我們在創建一個表的時候,我們sql語言的書寫格式,

標識列設置:

如果我們對其進行設置了之後,SqlServer會爲該列提供一個唯一的遞增的數值,我們可以指定某一列對其進行標識列設置,就可以將其它的列進行一個區分。控制代碼爲

IDENTITY(初始值,步長值)

初始值就是我們數據庫創建後的第一個值,步長值就是每次遞增,增加的數值。

數據類型:

數據類弄是數據的一種屬性,表示數據所表示信息的類型。任何一種計算機語言都定義了自己的數據類型。當然,不同的程序語言都具有不同的特點,所定義的數據類型的各類和名稱都或多或少有些不同。SQLServer 提供了 25 種數據類型: 

<span style="font-size:18px;">·Binary [(n)] n個字節二進制數據
·Varbinary [(n)] 可變n字節二進制數據
·Char [(n)]  n位字符串
·Varchar[(n)] 可變n位字符串
·Nchar[(n)] 
·Nvarchar[(n)] 
·Datetime  佔八個字節,包含年份和時間部分,精確到秒
·Smalldatetime 佔四個字節,所表示的時間段要比Datetime短,精確到分
·Decimal[(p[,s])] 定義時,可用來劃分整數部分和小數部分位數
·Numeric[(p[,s])] 前一個表示該數字的全部位數,第二個表示小數點後的位數
·Float[(n)] n用來存儲其後尾數的位數
·Real 
·Int 整型數據和下面兩個的區別在於是存儲所佔用的空間和其所表示的範圍的差距
·Smallint 
·Tinyint 
·Money 代表貨幣或者貨幣值的數據類型
·Smallmoney 
·Bit 
·Cursor 
·Sysname 
·Timestamp 時間戳
·Uniqueidentifier 
·Text   保存文本
·Image 保存圖片
·Ntext </span>
以上的類型,用的最多的無非就是 Text,char[],DateTime,Int ,Float,Image,在保存圖片的時候一個是將圖片的路徑記錄在數據庫中,然後讀取,另一個就是將圖片轉化爲二進制文件,然後將其存儲爲Image格式,對其進行讀取。

下面爲一個建表實例:

CREATE TABLE STUDENT(
SNAME CHAR(8) NOT NULL,
SEX CHAR(2) DEFAULT ('MAN'),
AGE INT,
[STUDENT CLASS] INT,
"STUDENT NUM" INT IDENTITY(0,1)
);

上面是一個學生信息表的實例,其中的問題就是一個列的列名如果是由多個詞組組成的,就需要用【】或者“”來將其括起來。

表結構的修改:

修改表機構的基本語句格式爲:

ALTER TABLE <列名>
ADD <列名><數據類型><列的完整性約束>
ALTER COLUMN <列名><新的數據類型>
DROP COLUMN<表級完整性約束>
ADD

向表中添加一列:

ALTER TABEL STUDENT
ADD HEIGHT INT NULL;
ALTER TABLE STUDENT
ADD HEIGHT INT DEFAULT("180");
當向表中插入一條新的列的時候,需要注意的是,這以列的完整性約束要麼是可以爲null,要麼是爲其制定默認值。

ALTER COLUMN 

修改表中的一列數據:

ALTER TABLE STUDENT
ALTER COLUMN SEX CHAR(4);
修改表中原有列的數據類型

DROP COLUMN

刪除表中的一列

<span style="font-size:18px;">ALTER TABLE STUDENT
DROP COLUMN SEX;</span>

DROP CONSTRAINT 

刪除表級約束

<span style="font-size:18px;">ALTER TABLE STUDENT
DROP CONSTRAINT UN_ENAME;</span>

後面的UN_ENAME 是約束性限制語句的名稱

ADD CONSTRAINT

ALTER TABLE STUDENT
ADD CONSTRAINT UQ_ENAME UNIQUE (ENAME);

ALTER TABLE STUDENT
ADD CONSTRAINT UNIQUE (ENAME);
第一種方式爲添加的約束性限制語句,其名稱是UQ_ENAME,當我們不爲其指定名時,系統會爲其分配一個約束性限制語句的縮寫加上我們的列名的這種名稱,也就是第二種命名方式。

ALTER TABLE STUDENT
ADD CONSTRAINT DEAFULT'180' FOR HEIGHT;
 刪除基本表:

DROP TABLE STUDENT

當這條語句被執行之後,該表和在該表上建立的索引和視圖都將被刪除,同時我們可以刪除多個表,只需要在表的後面加上逗號,然後加上我們所需要刪除的表的表名就好了。

創建,刪除索引

一個基本表上可以建立多個索引,以提供多種存儲路徑,加快查詢的速度,索引的建立和刪除工作由DBA或者表的擁有者來決定。索引是一個單獨的、物理的數據庫結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的數據頁的邏輯指針清單。
索引的作用相當於圖書的目錄,可以根據目錄中的頁碼快速找到所需的內容。當表中有大量記錄時,若要對錶進行查詢,第一種搜索信息方式是全表搜索,是將所有記錄一一取出,和查詢條件進行一一對比,然後返回滿足條件的記錄,這樣做會消耗大量數據庫系統時間,並造成大量磁盤I/O操作;第二種就是在表中建立索引,然後在索引中找到符合查詢條件的索引值,最後通過保存在索引中的ROWID(相當於頁碼)快速找到表中對應的記錄。但是索引的缺點便是會佔據一定的物理空間。
創建和刪除索引的語法基本格式爲:

<span style="font-size:18px;">CREATE INDEX IX_STU
ON STUDENT (HEIGHT,SNAME DESC);</span>

<span style="font-size:18px;"> DROP INDEX STUDENT.IX_STU;</span>

創建索引的過程中,列表清單是當第一個數據相同的時候,執行第二個,然後依次執行,最後面是我們所指定的排序方式,有ASC 升序和DESC降序,默認是升序。

索引創建是衡量數據庫設計成敗的一個重要因素,設計的過程中,需要考慮兩個因素,索引能夠加快查詢的速度,但是卻會給數據的修改刪除帶來很大的不便,使得操作比較複雜。

索引創建的依據:對於索引的創建我們選擇的是將索引建在一些經常出現在where語句的屬性,也就是這些數據是可以作爲一個查詢條件的,一般特性是其數值一般不會有太多相同的儘量是沒有相同的,然後就是這些數據的值必須是不經常被更新的。



推薦一個微信公衆號:IT90s最前線

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章