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

· 什麼是數據庫?html

  存放數據的倉庫。sql

 

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

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

 

· 什麼是主鍵?spa

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

 

· 什麼是外鍵?htm

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

 

· 什麼是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的一些理解,有寫的不對的地方但願你們可以指出來。

相關文章
相關標籤/搜索