mysql中数据定义语言_SQL数据定义语言(DDL)
數據庫模式定義語言DDL(DataDefinition Language),是用于描述數據庫中要存儲的現實世界實體的語言。一個數據庫模式包含該數據庫中所有實體的描述定義。這些定義包括結構定義、操作方法定義等。
DDL描述的模式,必須由計算機軟件進行編譯,轉換為便于計算機存儲、查詢和操縱的格式,完成這個轉換工作的程序稱為模式編譯器。
模式編譯器處理模式定義主要產生兩種類型的數據:數據字典以及數據類型和結構定義。
數據字典和數據庫內部結構信息是創建該模式所對應的數據庫的依據,根據這些信息創建每個數據庫對應的邏輯結構;對數據庫數據的訪問、查詢也根據模式信息決定數據存取的方式和類型,以及數據之間的關系和對數據的完整性約束。
數據字典是模式的內部信息表示,數據字典的存儲方式對不同的DBMS各不相同。
數據類型和結構的定義,是指當應用程序與數據庫連接操作時,應用程序需要了解產生和提取的數據類型和結構。是為各種宿主語言提供的用戶工作區的數據類型和結構定義,使用戶工作區和數據庫的邏輯結構相一致,減少數據的轉換過程,這種數據類型和結構的定義通常用一個頭文件來實現。
數據庫模式的定義通常有兩種方式: 交互方式定義模式和通過數據描述語言 DDL 描述文本定義模式。
數據庫模式定義語言DDL(DataDefinition Language),是用于描述數據庫中要存儲的現實世界實體的語言。
DDL主要用于創建和刪除數據庫,表和索引。
一,基本的數據庫操作:
1,創建(create)、修改(alter)、刪除(drop)
2,數據庫包括:
系統數據庫
master:記錄系統級的信息。
model:為用戶創建數據庫提供模板。
msdb:代理調度警報作業、記錄操作。
tempdb:臨時表、臨時數據庫。
用戶數據庫
二,詳解:
1,表的創建:
建立一個“學生選課”表SC,它由學號Sno、課程號Cno,修課成績Grade課程名Cname組成,其中(Sno, Cno)為主碼。
CREATETABLE
SC(
SnoCHAR(7),
CnoCHAR(4),
Gradeint,
CnameCHAR(10),?NOTNULLUNIQUE
Primarykey?(Sno,Cno)
Foreignkey?(Sno)?Referencesstudent(Sno).
Foreignkey?(Cno)?ReferencesCourse?(Cno)
);
基本表的創建-說明
1、建表的同時可以定義與該表有關的完整性約束,這些約束條件被存入系統的數據字典中,當用戶操作表時,DBMS會自動檢查該操作是否有違背完整約束條件.
2、建立約束的考慮:如果完整性約束條件涉及到該表的多個屬性列,則必須定義在表級上;否則既可以定義在列級上也可以定義在表級上。
3、表名、列名是不區分大小寫的。
4、對一個用戶而言,表名必須唯一;一個表中,列名必須唯一。
5、表名、列名必須以字母開頭,長度不超過30個字符。
常用完整性約束
1、主碼約束:??? PRIMARY?KEY
2、唯一性約束:UNIQUE
3、非空值約束:NOTNULL
4、參照完整性約束:FOREIGNKEY
常用數據類型:(不同DBMS數據類型不完全相同)
T-SQL數據類型:(SQL 程式設計語言的增強版,它是用來讓應用程式與SQL Server 溝通的主要語言。T-SQL提供標準 SQL的DDL 和 DML 功能,加上延伸的函數、系統預存程序以及程式設計結構(例如 IF 和 WHILE)讓程式設計更有彈性。)
2,刪除基本表:
DROPTABLEtable_name
3,修改基本表——添加列:
ALTERTABLEtable_name
ADDnew_column_name?datatype
[constraints]
例:向Student表增加“入學時間”(SCome),數據類型為日期型。
ALTERTABLEstudent
ADDScomeDATE
4,修改基本表——改變列的數據類型:
ALTERTABLEtable_name
ALTERCOLUMNcolumn_name?new_datatype
例:將年齡的數據類型改為半字長整數。
ALTERTABLEStudent
ALTERCOLUMNSageSMALLINT
5,修改基本表——刪除完整性約束
ALTERTABLEtable_name
DROPconstraint
例:刪除學生姓名必須取唯一值的約束。
ALTERTABLEstudent
DROPunique(sname)
6,建立索引:
CREATEINDEXindex_nameONtable_name(column_name)
7,將某個字段設為主鍵:
ALTERTABLEtable_nameADDPRIMARYKEY(column_name)
8,將某個字段的主鍵定義取消:
ALTERTABLEtable_nameDROPPRIMARYKEY(column_name)
約束是為了數據的完整性而存在的,而數據的完整性是指數據的可靠性和準確性。
根據數據完整性大致可以分為四種:
1.實體完整性
就是說每個表代表一個實體,每個表與他所代表的實體一致,特定表的唯一實體。
實現實體完整性的的方法:索引(index),唯一約束(unique),主鍵約束(primarykey),標識列屬性
2.域完整性
給每個列定義輸入的有效性
實現域完整性的的方法: 限制數據類型,格式,外鍵約束(foreign key references),檢查約束(check(? between? and )),默認值定義(default ' '),非空(not null)約束。
3.引用完整性
在輸入或刪除記錄時,表與表之間已定義的關系
實現域完整性的的方法: 通過外鍵與主鍵的關系,外鍵與唯一鍵之間的關系,外鍵與檢查約束
4.用戶自定義完整性
所有的完整性都支持用戶自定義完整性
注意:
1.在SQL中有個自動增長的自動編號列identity
2. MySQL不支持檢查約束
3.索引就像字典的目錄,把索引加在頻繁的以某個字符段查詢的的上面,在表上創建索引雖然會提高select語句的速度,但也會降低delete,update,insert語句執行的速度,如果一個表中太多的索引會降低數據庫的整體性能
4.primary key = unique+not null(加primary key 要比加unique和not null效率膏,因為加primarykey時會自動加索引,加快了效率)
5.在SQL server中正在實用的數據庫不能被刪除(除非切換數據庫才能被刪除),mySQl中可以刪除正在實用的數據庫
總結
以上是生活随笔為你收集整理的mysql中数据定义语言_SQL数据定义语言(DDL)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 144. 二叉树的前序
- 下一篇: mysql系统自带示例数据库_MySQL