SQL語句建表、設置主鍵、外鍵、check、default、unique約束


· 什么是數據庫?

  存放數據的倉庫。

 

· 數據庫和數據結構有什么區別?

  數據結構要解決在內存中操作數據的問題,數據庫要解決在硬盤中操作數據的問題。數據結構研究一些抽象數據模型(ADT)和以及定義在該模型上的一些操作,數據庫是由表、關系、操作組成。

 

· 什么是主鍵?

  主鍵用來標識記錄的唯一性。

 

· 什么是外鍵?

  外鍵用來標識表與表之間的聯系。

 

· 什么是check約束?

  check約束限制了輸入值的范圍。

 

· 什么是default約束?

  給某個屬性一個默認值。

 

· 什么是unique約束?

  限制某個屬性的唯一性。

 

· unique約束與主鍵有什么區別?

  主鍵不可為null。

 

關於以上知識的一些sql語句:

--部門表
create table dept ( dept_id int primary key, dept_name nvarchar(100) not null, dept_address nvarchar(100) ) --員工表
create table emp (--不能寫成{
    emp_id int constraint pk_emp_id_hahaha primary key,--設置主鍵並命名
    emp_name nvarchar(20) not null,--名字不能為空
    emp_sex nchar(1), --↓設置外鍵,該外鍵來自於dept表(主鍵表)
    dept_id int constraint fk_dept_id_heihei foreign key references dept(dept_id), ) create table student ( stu_id int primary key, stu_sal int check (stu_sal >= 1000 and stu_sal <= 8000),--check約束
    stu_sex nchar(1) default ('') --()可以省略,在數據庫中字符串必須用''括起來
) --向student表中插入數據
insert into student(stu_id,stu_sal) values (1,1000);--可以插入
insert into student(stu_id,stu_sal) values (2,10000);--插入失敗,與check約束沖突
insert into student values (2,6000,'');--可以插入
insert into student values (3,6000);--錯誤,列的個數不匹配。

--再重建一個表
create table student2 ( stu_id int primary key, stu_sal int check (stu_sal >= 1000 and stu_sal <= 8000),--check約束
    stu_sex nchar(1) default (''), --()可以省略,在數據庫中字符串必須用''括起來
    stu_name nvarchar(200) unique--qunique約束
) insert into student2 values (1,6000,'','張三');--ok
insert into student2 values (2,6000,'','張三');--error違反了唯一約束
insert into student2 values (3,6000,'','李四');--ok
insert into student2 values (null,6000,'','王五');--error主鍵不能為null,出錯的信息是“不能將值 NULL 插入列 'stu_id'”
insert into student2 values (4,6000,'',null);--ok 說明 唯一鍵允許為空
insert into student2 values (5,6000,'',null);--error SqlServer2005只允許一個unique列為空

--再重建一個表
create table student3 ( stu_id int primary key, stu_sal int check (stu_sal >= 1000 and stu_sal <= 8000),--check約束
    stu_sex nchar(1) default (''), --()可以省略,在數據庫中字符串必須用''括起來
    stu_name nvarchar(200) unique not null--qunique約束和not null約束可以組合使用
) insert into student3 values (3,6000,'',null);--error 證明了unique可以與not null組合使用

 

注:本文參考了郝斌老師的SQL教程,也加入了自己對SQL的一些理解,有寫的不對的地方希望大家能夠指出來。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM