Linux系統SQL Server數據庫操作命令
連接數據庫 sqlcmd命令
SQLServer 提供了 sqlcmd 命令,來讓我們操作 SQLServer 數據庫。接下來我們連接它,並在其中創建一個名爲 TestDb 的數據庫。
連接 SQLServer :sqlcmd -S localhost -U sa -P '<123123Aa!@>'
如果連接失敗原因是服務還未開啓,等待幾秒重試即可,上述語句各參數解釋如下:
sqlcmd 是連接數據庫必要的語句, localhost 代表從本地連接,sa 是用戶名, ‘<123123Aa!@>’ 是密碼。
創建數據庫:
create database TestDb
。
查看所有數據庫:
select name from sys.databases。
操作完畢之後退出: exit 。
創建表
我們先來了解一下,在數據庫中創建表的規則:
CREATE TABLE 表名
(
字段名,數據類型,
字段名,數據類型,
.....
)
例如:
添加了數據的表格,示例如下:
首先,創建數據庫(在 SQLServer 數據庫中是不區分大小寫的,不過數據庫的名字是區分大小寫的),如下:
CREATE DATABASE MyDb
然後,選擇數據庫:
USE MyDb
最後,創建t_user表:
CREATE TABLE t_user
(
id INT,
username VARCHAR(32),
password VARCHAR(32),
phone VARCHAR(11)
)
表創建好之後,可以使用如下語句查看錶的基本結構,用來驗證是否創建成功。
語法如下:
sp_help 表名
添加主鍵約束
有兩種方式可以添加主鍵約束:1.在定義列的同時指定主鍵,2.在定義完字段之後,再指定主鍵。
(1) 在定義列的同時指定主鍵:
(2) 在定義完所有列之後,指定主鍵。
多字段聯合主鍵
在開發中,還有一種情況很常見,就是將幾個字段聯合在一起作爲主鍵,那這個在代碼中怎麼實現呢?
舉個例子,我們將員工的名字和部門 ID 聯合起來作爲主鍵:
CREATE TABLE t_emp2
(
name VARCHAR(32),
deptId INT,
salary FLOAT,
PRIMARY KEY(name,deptId)
)
語句執行後,會將 name 和 deptId 字段組合成爲表 t_emp2 的多字段組合主鍵。
外部關鍵字
外部關鍵字叫做外鍵,外鍵就是另一張表中的主鍵。
問:外鍵有啥用啊?
答:外鍵的主要作用就是保持數據的一致性,完整性。
再問:怎麼保證的呢?
答:看圖。
如圖有兩張表,classId 是 T_Student 的外鍵,同時是 T_class 表的主鍵。如果我們要刪除 T_class 表中 classId 爲 1 的字段,程序是會報錯的。因爲 T_Student 表中有數據和 classId 爲 1 的字段關聯了,是不能刪除的,這樣子就保證了數據的一致性和完整性。
繼續問:那怎麼才能刪除呢?
接着答:需要先刪除 T_Student 表中 classId 爲 1 的兩個字段。
如何給表添加外部關鍵字
在 SQLServer 中,給表中字段添加外鍵約束的語法規則如下:
CONSTRAINT 外鍵名 FOREIGN KEY 字段名 REFERENCES 主表名(主鍵名)
舉個例子:現在有兩張表, t_emp , t_dept 如下:
我們來創建兩張表,並給員工表( t_emp )添加外鍵:
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)
);
實際操作如圖:
另外一種設置外鍵的方式:
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)
);
在定義字段的時候,也可以定義外部關鍵字,格式: FOREIGN KEY REFERENCES 關聯的表名(字段名) ,這種方式比較簡潔,不過這種方式不能指定外鍵名,即外鍵名是隨機的。
怎麼添加唯一約束
唯一約束( Unique Constraint )要求該列唯一,允許爲空,但是隻能有一個空值。唯一約束可以確保一列或者幾列不出現重複值。
定義部門表的部門名稱唯一,使用關鍵詞 UNIQUE ,SQL 語句如下:
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
)
怎麼添加非空約束
關鍵詞: NOT NULL 。
例如:
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) NOT NULL,
location VARCHAR(50)
)
怎麼使用默認約束
默認約束:即給字段一個默認值。
關鍵詞: DEFAULT 。
例如:
CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22),
sex VARCHAR(2) DEFAULT '男'
)
注意:如果是添加字符串型,認值要使用單引號;如果是整型,則不需要加任何符號。
設置表的屬性值自動增加
在數據庫應用中,經常需要在每次插入新紀錄時,系統自動生成字段的主鍵值,即:
關鍵詞: IDENTITY(1,1) 表示自動增長,初始值爲 1 ,增量爲 1 。
例如:
CREATE TABLE t_tmp
(
id int PRIMARY KEY IDENTITY(1,1),
name VARCHAR(32)
)