一、模式(schema)的概念
當我剛學到模式這個概念時,特別不理解。其實,schema就是把資料庫分成許多集合,每個集合包含了各種物件,如:表、檢視、儲存過程和索引等。不同的集合有不同的名字,預設情況下使用者名稱就是模式名。如果把乙個資料庫看成是乙個幢樓,大樓裡面的每個房間就是乙個模式,而房間裡面的各種物品就是表、索引等。這樣解釋,應該比較容易理解。在mysql中,模式的概念與database差不多。
二、定義基本表
這裡以建立學生選課基本表為例子
建立學生表student
create table student
-> ( sno char(9) primary key,/*列級完整性約束,主鍵約束*/
-> sname char(20) unique,/*列級完整性約束,唯一約束*/
-> sage smallint
-> );
建立課程基本表course
create table course
-> (cno char(4) primary key, /*列級完整性約束,主鍵約束*/
-> cname char(40) not null, /*列級完整性約束,非空約束*/
-> cpno char(4),/*先行課*/
-> foreign key(cpno) references course(cno)/*表級完整性約束,外碼,被參照表示course,參照列是cno*/
-> );
建立學生選課表sc
create table sc
-> (
-> sno char(9),
-> cno char(4),
-> primary key(sno,cno),/*主碼有兩個屬性構成,必須作為標記完整性定義*/
-> foreign key(sno) references student(sno),/*表級完整性約束,sno是外碼,被參照表為student*/
-> foreign key(cno) references course(cno) /*表級完整性約束,cno是外碼,被參照表為course*/
-> );
這裡要重點注意的是primary key和unique都強制實施唯一性,但是primary key不允許null的唯一。還要注意何時要用表級約束,何時用列級約束。
三、修改基本表
alert table 《表名》
[add [column] 《新列名》 《資料型別》 [完整性約束] ] /*新增列*/
[add 《表級完整性約束》] /*新增表級完整性約束*/
[drop [column] 《列名》 [cascade|restrict] ] /*刪除表中的列*/
[drop constraint《完整性約束名》 [restrict|cascade] ] /*刪除指定的約束*/
[alter column 《列名》 《資料型別》];/*修改原有列的定義,包括修改列名和資料型別*/
注意:[ ]中的都是可選的,cascade代表級聯,若刪除的列選了這個選項,則刪除所有引用該列的其他物件,如檢視,而如果選擇了restrict且刪除列,若該列被其他物件引用,則拒絕刪除。
四、刪除基本表
drop table《表名》 [restrict|cascade]
sql基礎之表關聯
左連線 left join 下面有三張表a,b a表 b表 總結 左連線就是先把left join 左邊的表 a 的所有記錄先顯示出來,然後再根據on後面的條件匹配另一張表 b 但是如果說匹配到多條資料,然後就會把表a的資料複製一遍和後面表的資料一起顯示出來。其次如果a表的資料多,b表沒有就用nul...
(2 7)Mysql之SQL基礎 表的操作與檢視
2.7 mysql之sql基礎 表的操作與檢視 搜尋關鍵字 mysql表操作,comment注釋操作,mysql臨時表 1.1 create table table name column type engine innodb default charset utf8 collate utf8 ge...
SQL基礎 連線表
sql最強大的特性之一是能夠在資料檢索查詢中動態地聯接表。連線是使用sql select可以執行的最重要的操作之一,對連線和連線語法的良好理解是學習sql極為重要的一部分。在您可以有效地使用連線之前,您必須了解關係表和關聯式資料庫設計的基礎知識。下面的內容絕不是對這個主題的完整介紹,但應該足以讓您開...