SQL學習(1) 資料定義語言

2021-06-27 06:25:01 字數 4396 閱讀 8398

直奔主題

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

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

sql語句分為三大類:

1)資料定義語言:負責建立,修改,刪除表,索引和檢視等物件

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

3)資料控制語言:用來授予和撤銷使用者許可權。

資料定義語言:

建立表:

create table《表名》(《列定義清單》);

列定義清單:《列名》《資料型別》《預設值》《約束性限制》《標識列設定》

上述即為我們在建立乙個表的時候,我們sql語言的書寫格式,

標識列設定:

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

identity(初始值,步長值)

初始值就是我們資料庫建立後的第乙個值,步長值就是每次遞增,增加的數值。

資料型別:

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

·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

以上的型別,用的最多的無非就是 text,char,datetime,int ,float,image,在儲存的時候乙個是將的路徑記錄在資料庫中,然後讀取,另乙個就是將轉化為二進位制檔案,然後將其儲存為image格式,對其進行讀取。

下面為乙個建表例項:

create table student(

sname char(8) not null,

*** 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 *** char(4);

修改表中原有列的資料型別

drop column

刪除表中的一列

alter table student

drop column ***;

drop constraint 

刪除表級約束

alter table student

drop constraint un_ename;

後面的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(相當於頁碼)快速找到表中對應的記錄。但是索引的缺點便是會佔據一定的物理空間。

建立和刪除索引的語法基本格式為:

create index ix_stu

on student (height,sname desc);

drop index student.ix_stu;

建立索引的過程中,列表清單是當第乙個資料相同的時候,執行第二個,然後依次執行,最後面是我們所指定的排序方式,有asc 公升序和desc降序,預設是公升序。

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

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

SQL資料定義語言(DDL)

資料庫模式定義語言ddl datadefinition language 是用於描述資料庫中要儲存的現實世界實體的語言。乙個資料庫模式包含該資料庫中所有實體的描述定義。這些定義包括結構定義 操作方法定義等。ddl描述的模式,必須由計算機軟體進行編譯,轉換為便於計算機儲存 查詢和操縱的格式,完成這個轉...

SQL 資料定義語言 DDL

所有語句都是基於oracle的hr使用者 create 建立物件,drop 刪除物件,alter 修改物件,rename 修改資料庫物件名稱 語法格式 create table 表名 列名 列資料型別 建立示例 列與列中間用,隔開 create table dept deptno number 2 ...

SQL語言之資料定義語言(Oracle)

一 建立表 create table 例 如上圖建立表 create table dept deptno number 2 dname varchar2 14 loc varchar2 13 oracle資料庫中的表 1.使用者表由使用者建立和維護的表的集合 包含使用者資訊 2.資料字典 由orac...