本講中所要建立的數據庫SCT包含如下5個表:
學生:Student(S# char(8), Sname char(10), Ssex char(2), Sage integer, D# char(2), Sclass char(6))
院系:Dept(D# char(2), Dname char(10), Dean char(10))
課程:Course(C# char(3), Cname char(12), Chours integer, Credit float(1), T# char(3))
教師:Teacher(T# char(3), Tname char(10), D# char(2), Salary float(2))
選課:SC(S# char(8), C# char(3), Score float(1))
注:S#(學號)、D#(系別)、Dean(系主任)、C#(課號)、T#(教師編號)、Chours(學時)、Credit(學分)、Score(成績)
一、概述
建立數據庫包括兩個步驟:定義數據庫和表(使用DDL)、向表中追加元組(使用DML)
(1)DDL
- 創建數據庫(DB)——Create Database
- 創建DB中的Table(定義關系模式)——Create Table
- 定義Table及其各個屬性的約束條件(定義完整性約束)
- 定義View(定義外模式及E-C映像)
- 定義Index、Tablespace等(定義物理存儲參數)
- 上述各種定義的撤消與修正
(2)DML
- 向Table中追加新的元組:Insert
- 修改Table中某些元組中的某些屬性的值:Update
- 刪除Table中的某些元組:Delete
- 對Table中的數據進行各種條件的檢索:Select
二、定義數據庫和表
1. 創建數據庫:create database 數據庫名;
- 示例:create database SCT;
2. 創建表:create table 表名(列名 數據類型 [primary key | unique] [not null] [, 列名 數據類型 [not null], ... ])
①“[]”表示其括起來的內容可以省略,“|”表示其隔開的兩項可取其一。
②primary key:主鍵約束,每個表只能創建一個主鍵約束。
③unique:唯一性約束(即候選鍵),可以有多個唯一性約束。
④not null:非空約束,是指該列不允許有空值出現。
- 示例1:create table Student(S# char(8) not null, Sname char(10), Ssex char(2), Sage integer, D# char(2), Sclass char(6));
- 示例2:create table Course(C# char(3), Cname char(12), Chours integer, Credit float(1), T# char(3));
三、向表中追加元組
1. 向表中追加元組:insert into 表名 [(列名 [, 列名 ], ... )] values (值 [, 值 ], ... );
①values后面值的排列,須與into子句后面的列名排列一致。
②若表名后的所有列名省略,則values后的值的排列,須與該表存儲中的列名排列一致。
- 示例1:insert into Student (S#, Sname, Ssex, Sage, D#, Sclass) Values ('98030101', '張三', '男', 20, '03', '980301');
- 示例2:insert into Student Values ('98030102', '李四', '男', 20, '03', '980301');
- 示例3:insert into Course (Cname, C#, Credit, Chours, T#) Values ('數據庫', '001', 6, 40, '001'); // 列名未省略,須與語句中列名的順序一致
- 示例4:insert into Course Values ('001', '數據庫', 40, 6, '001'); // 列名省略,須與定義或存儲的的列名順序一致
C# | Cname | Chours | Credit | T# |
001 | 數據庫 | 40 | 6 | 001 |