實訓資料庫開發應用 資料完整性

2021-04-15 11:17:04 字數 3373 閱讀 3004

1.寫出定義滿足如下條件的表的sql語句,表結構為:

學生表(

學號:字元型,長度為6,主碼,

姓名:字元型,長度為6,取值不重,

性別:字元型,長度為2,取值只能是『男』和女』,

年齡:小整型,取值範圍為15~45,

所在系:字元型,長度為12,取值只能是『is』、『cs』和『ma』,

電子郵件

:字元型,長度為14,取值形式為:6位名字(每一位必須為字母)+『@263.net』)

create table sss

(學號 char(6) primary key,

姓名 char(6) unique,

性別 char(2) check(性別 in('男','女')),

年齡 **allint check(年齡 between 15 and 45),

所在系 char(12) check(所在系 in('is','cs','ma')),

電子郵件 char(14) check (電子郵件 like 

'[a-z][a-z][a-z][a-z][a-z][a-z]@26

3.net'))

2.用create table 語句建立如下表,並實現其全部約束。

教師表,結構為:

教師號:普通字元編碼定長字元型,長度為8,主碼,

教師名:普通字元編碼定長字元型,長度為8,非空,

職稱:普通字元編碼定長字元型,長度為6, 取值範圍為:,

工資:定點小數,小數點前4位,小數點後2位,大於1000

聯絡**

:普通字元編碼定長字元型,長度為14, 取值形式為:『(3位區號)-8位號碼』,除8位號碼中的第一位從1開始之外,其他號碼均為0~9

出生日期

:小日期時間型,小於等於當前日期,

參加工作日期

:小日期時間型,小於等於當前日期,

退休日期

:小日期時間型,大於參加工作日期 )

create table 教師表(

教師號 char(8) primary key,

教師名 char(8) not null,

職稱 char(6) check(職稱 in ('教授','副教授','講師')),

工資 numeric(6,2) check (工資》1000),

聯絡** char(14) check (聯絡** like '([0-9] [0-9] [0-9])-[1-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]'),

出生日期 **alldatetime check(出生日期<=getdate()),

參加工作日期 **alldatetime check(參加工作日期<=getdate()),

退休日期 **alldatetime,

check(參加工作日期《退休日期)  )

3.建立乙個顧客購物資料庫,在此資料庫中建立如下兩張表:

顧客表(顧客id

字元型長度為10,

顧客名字元型

長度為10,

**字元型

長度為12,

位址字元型

最長為30,

社會保險號碼

字元型長度為15)

訂購表(商品id

字元型長度為15,

商品名稱

字元型長度為20,

顧客id

字元型長度為10,

訂購數量

整型,

訂購日期

短日期型,

交貨日期

短日期型)

使用圖形化工具或sql語句實現如下約束:

--1.為顧客表新增主碼約束,為訂購表新增主碼約束

--2.為訂購表新增外碼約束

--3.限制顧客表**號碼的形式:三位區號-8位**號碼,每位均為數字

--4.當顧客沒有提供位址時,使用預設值'unknown'

--5.限制訂購表的"訂購數量"必須大於0

--6.限制訂購表的"訂貨日期"必須早於"交貨日期"

--7.限制顧客表"社會保險號碼"取值不能重複

create table 顧客表 ( 

顧客id  char(10) not null,

顧客名  char(12),

** char(12),

位址 varchar(30),

社會保險號碼 char(15))

drop table 訂購表

create table 訂購表 ( 

商品id char(20) not null,

商品名稱 varchar(20) not null,

顧客id char(10) not null,

訂購數量 int,

訂貨日期 **alldatetime not null,

交貨日期 **alldatetime )

--1.為顧客表新增主碼約束

alter table 顧客表

add constraint pk_id

primary key(顧客id)

--為訂購表新增主碼約束

alter table 訂購表

add constraint pk_dg

primary key(商品id,顧客id,訂貨日期)

--2.為訂購表新增外碼約束

alter table 訂購表

add constraint fk_dg

foreign key(顧客id) references 顧客表(顧客id)

--3.限制顧客表**號碼的形式:三位區號-8位,號碼,每位均為數字

alter table 顧客表

add constraint chk_phone

check(** like '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')

--4.當顧客沒有提供位址時,使用預設值'unknown'

alter table 顧客表

add constraint df_dz

default 'unknown' for 位址

--5.限制訂購表的"訂購數量"必須大於0

alter table 訂購表

add constraint chk_dgsl

check (訂購數量》0)

--6.限制訂購表的"訂貨日期"必須早於"交貨日期"

alter table 訂購表

add constraint chk_1

check(訂貨日期《交貨日期)

--7.限制顧客表"社會保險號碼"取值不能重複

alter table 顧客表

add constraint un_1

unique(社會保險號碼)

實訓資料庫開發應用 資料完整性

1 寫出定義滿足如下條件的表的sql語句,表結構為 學生表 學號 字元型,長度為6,主碼,姓名 字元型,長度為6,取值不重,性別 字元型,長度為2,取值只能是 男 和女 年齡 小整型,取值範圍為15 45,所在系 字元型,長度為12,取值只能是 is cs 和 ma 電子郵件 字元型,長度為14,取...

資料庫 資料完整性

更安全的資料型別可參考 型別 位元組大小 有符號範圍 sigened 無符號範圍 unsigned tinyint 1 128 127 0 255 smallint 2 32768 32767 0 65535 mediumint 3 8388608 8388607 0 16777215 int in...

資料庫完整性

完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...