連接數(shù)據(jù)庫(kù) sqlcmd命令
創(chuàng)建數(shù)據(jù)庫(kù):
查看所有數(shù)據(jù)庫(kù):
創(chuàng)建表
添加主鍵約束
外部關(guān)鍵字
怎么添加唯一約束
怎么添加非空約束
怎么使用默認(rèn)約束
設(shè)置表的屬性值自動(dòng)增加
SQLServer 提供了 sqlcmd 命令,來(lái)讓我們操作 SQLServer 數(shù)據(jù)庫(kù)。接下來(lái)我們連接它,并在其中創(chuàng)建一個(gè)名為 TestDb 的數(shù)據(jù)庫(kù)。
連接 SQLServer :sqlcmd -S localhost -U sa -P '<123123Aa!@>'
create database TestDb
。
select name from sys.databases。
我們先來(lái)了解一下,在數(shù)據(jù)庫(kù)中創(chuàng)建表的規(guī)則:
CREATE TABLE 表名(
字段名,數(shù)據(jù)類(lèi)型,
字段名,數(shù)據(jù)類(lèi)型,
.....)
例如:
CREATE DATABASE MyDb
然后,選擇數(shù)據(jù)庫(kù):
USE MyDb
最后,創(chuàng)建t_user表:
CREATE TABLE t_user( id INT, username VARCHAR(32), password VARCHAR(32), phone VARCHAR(11))
表創(chuàng)建好之后,可以使用如下語(yǔ)句查看表的基本結(jié)構(gòu),用來(lái)驗(yàn)證是否創(chuàng)建成功。
語(yǔ)法如下:
sp_help 表名
有兩種方式可以添加主鍵約束:1.在定義列的同時(shí)指定主鍵,2.在定義完字段之后,再指定主鍵。
(1) 在定義列的同時(shí)指定主鍵:
在開(kāi)發(fā)中,還有一種情況很常見(jiàn),就是將幾個(gè)字段聯(lián)合在一起作為主鍵,那這個(gè)在代碼中怎么實(shí)現(xiàn)呢?
舉個(gè)例子,我們將員工的名字和部門(mén) ID 聯(lián)合起來(lái)作為主鍵:
CREATE TABLE t_emp2( name VARCHAR(32), deptId INT, salary FLOAT, PRIMARY KEY(name,deptId))
語(yǔ)句執(zhí)行后,會(huì)將 name 和 deptId 字段組合成為表 t_emp2 的多字段組合主鍵。
外部關(guān)鍵字叫做外鍵,外鍵就是另一張表中的主鍵。
問(wèn):外鍵有啥用?。?br> 答:外鍵的主要作用就是保持?jǐn)?shù)據(jù)的一致性,完整性。
再問(wèn):怎么保證的呢?
答:看圖。
繼續(xù)問(wèn):那怎么才能刪除呢?
接著答:需要先刪除 T_Student 表中 classId 為 1 的兩個(gè)字段。
如何給表添加外部關(guān)鍵字
在 SQLServer 中,給表中字段添加外鍵約束的語(yǔ)法規(guī)則如下:
CONSTRAINT 外鍵名 FOREIGN KEY 字段名 REFERENCES 主表名(主鍵名)
舉個(gè)例子:現(xiàn)在有兩張表, t_emp , t_dept 如下:
CREATE TABLE t_dept( deptId INT PRIMARY KEY, name VARCHAR(22), location VARCHAR(50));CREATE TABLE t_emp( id INT PRIMARY KEY, name VARCHAR(22), deptId INT, CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId));
實(shí)際操作如圖:
CREATE TABLE t_dept(
deptId INT PRIMARY KEY,
name VARCHAR(22),
location VARCHAR(50));CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22),
deptId INT FOREIGN KEY REFERENCES t_dept(deptId));
在定義字段的時(shí)候,也可以定義外部關(guān)鍵字,格式: FOREIGN KEY REFERENCES 關(guān)聯(lián)的表名(字段名) ,這種方式比較簡(jiǎn)潔,不過(guò)這種方式不能指定外鍵名,即外鍵名是隨機(jī)的。
唯一約束( Unique Constraint )要求該列唯一,允許為空,但是只能有一個(gè)空值。唯一約束可以確保一列或者幾列不出現(xiàn)重復(fù)值。
定義部門(mén)表的部門(mén)名稱(chēng)唯一,使用關(guān)鍵詞 UNIQUE ,SQL 語(yǔ)句如下:
CREATE TABLE t_dept( id INT PRIMARY KEY, name VARCHAR(22) UNIQUE, location VARCHAR(50))
關(guān)鍵詞: NOT NULL 。
例如:
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50))
默認(rèn)約束:即給字段一個(gè)默認(rèn)值。
關(guān)鍵詞: DEFAULT 。
例如:
CREATE TABLE t_emp( id INT PRIMARY KEY, name VARCHAR(22), sex VARCHAR(2) DEFAULT '男')
注意:如果是添加字符串型,認(rèn)值要使用單引號(hào);如果是整型,則不需要加任何符號(hào)。
在數(shù)據(jù)庫(kù)應(yīng)用中,經(jīng)常需要在每次插入新紀(jì)錄時(shí),系統(tǒng)自動(dòng)生成字段的主鍵值,即:
CREATE TABLE t_tmp(
id int PRIMARY KEY IDENTITY(1,1),
name VARCHAR(32))
聯(lián)系客服