create table 《表名》(《列名》《資料型別》 [列級完整性約束條件]
[,《列名》 《資料型別》 [列級完整性約束條件]
[,《表級完整性約束條件》]);
sql中約束分為以下6種
主碼約束(primary key)pk_course
外碼約束(foreign key)fk_c
非空約束 (not null)n_k
唯一約束 (unique)u_k
條件約束 (check)c_k
預設值約束 (default)d_k
主碼約束
例3-1 建立乙個課程表course,由課程號cno、課程名cname、先行課程號ccpno、學分ccredit四個屬性組成。
create table course2
(cno number(4) constraint pk_course primary key,
cname char(20),
cpno number(4),
ccredit number(4));
例3-2 對例3-1的約束改為表級約束。
create table course
(cno number(4),
cname char(20),
cpno number(4),
ccredit number(4),
constraint pk_course primary key(sno));
外碼約束例3-3 建立表的同時建立表級外碼約束。
create table sc
(sno number(12),
cno varchar2(4),
grade number(3),
constraint pk_sc primary key (sno,cno),
constraint fk_c foreign key (cno) references course(cno)
);約束外碼要格外注意,sc(cno)的定義要與course表中的cno相同
比如(course)cno為varchar(4)那麼建表cno number(4)會報錯。
例3-4 對例3-3的表級外碼約束改為列級。
create table sc
(sno number(12),
cno varchar2(4) constraint fk_c references course(cno),
grade number(3),
constraint pk_sc primary key (sno,cno)
);
乙個外碼自身參照的例子
create table cou
(cno number(4) constraint pk_cou primary key,
cname char(20),
cpno varchar2(4) constraint fk_cp references course (cno),
ccredit number(4)
);
例3-6 將例3-5的列級改為表級約束
create table cou
(cno number(4) constraint pk_cou primary key,
cname char(20),
cpno varchar2(4) constraint fk_cp references course(cno),
ccredit number(4)
);//注意點:ccredit number(4)後面不用加逗號
否則報錯ora-00904: : invalid identifier
條件約束例3-7 新增乙個check約束來保證每個學生的考試成績在0到100之間。
create table sc
(sno varchar2(12),
cno varchar2(4),
grade number(3) check(grade>=0 and grade<=100),
constraint pk_sc primary key (sno,cno),
constraint fk_sg foreign key (sno) references student(sno),
constraint fk_cg foreign key (cno) references course(cno));
create table test(
id number(5),
name varchar(10) not null,
*** varchar(2) constraint c_k check (*** in ('男','女'))
);drop table test;
非空約束create table test(
name varchar(2) constraint n_t not null
);drop table test;
unique約束create table test(
name varchar(2) constraint u_t unique
);drop table test;
default約束create table studen
(sno number(12),
sname char(20),
s*** char(2) default ('男'),
sage number(3),
sdept char(10));
drop table studen;
SQL 基本表的定義
create database 資料庫名 use 資料庫名 create table 表名 屬性列名1 資料型別 列級約束條件 屬性列名2 資料型別 列級約束條件 表級約束條件 下面是sql語言資料型別介紹 資料型別 含義char n 定義定長度n的字串 不足n個自動補空格 varchar n 定義...
SQL server 定義基本表
use dbcreate table 所有者.表名 列名 資料型別 列完整性約束 列名 資料型別 列完整性約束 表完整性約束 on create table person id char 16 not null primary key,新增主鍵 name char 5 not null nchar ...
鍊錶的定義及其基本運算
include using namespace std typedef struct tagnodenode 該結點可看成是 存放了數值域data和指標域next的遞迴定義的指標 原來的結點宣告報錯。出錯原因為 typedef相當於為struct結構宣告了乙個新的名字,如 typedef int i...