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