SQL server (二)表的操作


表的基本操作

在數據庫中,表是由數據按一定的順序和格式構成的數據集合,是數據庫的主要對象。每一行代表一條記錄,每一列代表記錄的一個字段。

在關系數據庫中每一個關系都體現為一張表。

1.設計表

  • 表包含的數據類型

  • 表中的列數以及列的數據類型

  • 哪些列允許空值

  • 是否使用以及何處使用約束

  • 哪些是主鍵,哪些是外鍵

2.數據類型

整型

  • BIGINT 大整型 8字節
  • INT 常用的整型 4字節
  • SMALLINT 小整型 2字節
  • TINYINT 微整型 0~255 1字節
  • BIT 位類型 0和1 1字節

小數

  • DECIMAL (p,s) 和 NUMERIC (p,s) 小數 p確定總位數(默認18),s確定小數位(默認0)

貨幣

  • MONEY 貨幣值 8字節
  • SMALLMONEY 比Money小 4字節

近似數字

  • FLOAT 8字節
  • REAL 4字節

日期和時間

  • DATETIME 8字節 范圍 1753.1.1-9999.12.31
  • SMALLDATETIME 4字節 1900.1.1-2079.12.31

字符串

  • CHAR(n) n長度 范圍 1-8000 固定長度 小於n補空格
  • VARCHAR(n) n長度 可變

Unicode字符串

  • NCHAR(n) 與char類型,兩個字節為一個存儲單位

  • NVARCHAR(n)

二進制字符串

  • BINARY(n) 長度固定 為n+4字節 小於n補0 常用於存儲圖像等數據

  • VARBINARY (n) 長度變化

  • IMAGE 存儲照片或圖像等

3.創建表

使用 CREATE TABLE 語句

CREATE TABLE

[database_name.[schema_name].|schema_name.]table_name

{(column_name column_property column_constraint)}[,...]

--切換數據庫的語法   use 數據庫名
use DB2

-- 創建學生表(學號,姓名,年齡,性別)
CREATE TABLE 學生表
(
學號 VARCHAR(15) NOT NULL,
姓名  CHAR(10) NOT NULL,
年齡 INT NULL,
性別 CHAR(5)
)

4.修改表

  • 添加(列)屬性

ALTER TABLE 表名

ADD 屬性 數據類型[(長度)] [NULL|NOT NULL]

--為student表添加sno列
ALTER TABLE student
ADD sno VARCHAR(15) NOT NULL

ALTER TABLE student
add age int
  • 修改數據類型

ALTER TABLE 表名

ALTER COLUMN 屬性 數據類型

--修改name數據類型為 VARCHAR(20)
ALTER TABLE student
ALTER COLUMN name VARCHAR(20)
  • 刪除(列)屬性

ALTER TABLE 表名

DROP COLUMN 屬性

--刪除age
ALTER TABLE student
DROP COLUMN age
  • 修改列名

EXEC sp_rename '表名.列名', '新列名'

  • 修改表名

EXEC sp_rename '原表名', '新表名'

--修改列名 name-->sname
EXEC sp_rename 'student.name', 'sname'

--修改表名
EXEC sp_rename 'student', 'Student'

5.約束

1.主鍵約束 PRIMARY KEY

唯一確定表中每一條記錄的標識符

(一個表中只能有一個主鍵約束,為空的列不能創建主鍵約束)

2.外鍵約束 FOREIGN KEY

用於建立和加強兩個表數據之間的連接

(1.兩列的數據類型必須一致,2.引用的列必須是主鍵約束或唯一約束 3.兩列列名盡量保持一致)

3.唯一約束 UNIQUE

指定一個列或多個列的值具有唯一性(可以為空)

4.檢查約束 CHECK

設置檢查條件,以限制輸入值

5.默認約束 DEFAULT

插入操作中沒有提供輸入值時系統會自動加上指定值

創建約束

ALTER TABLE 表名

ADD CONSTRAINT 約束名 約束類型 (具體的約束說明)

--給學號添加主鍵約束 
ALTER TABLE 學生表
ADD CONSTRAINT PK_學號 PRIMARY KEY (學號)

--給姓名添加唯一約束
ALTER TABLE 學生表
ADD CONSTRAINT UN_姓名 UNIQUE (姓名)

--給年齡添加檢查約束,年齡大於18 
ALTER TABLE 學生表
ADD CONSTRAINT CK_年齡 CHECK (年齡>18)

--給性別添加默認約束 為男
ALTER TABLE 學生表
ADD CONSTRAINT DF_性別 DEFAULT '男' FOR 性別

--年齡 大於18 小於25
ALTER TABLE 員工信息表
ADD CONSTRAINT CK_年齡 CHECK (年齡>18 AND 年齡<25)

ALTER TABLE 員工信息表
ADD CONSTRAINT CK_部門 CHECK (單位部門='軟件測試' OR 單位部門='產品研發')

--創建一個成績表
CREATE TABLE 成績表
(
學號 VARCHAR(15) NOT NULL,
成績 INT
)

--給成績表的學號建立一個外鍵約束,引用學生表中的學號(加強兩表的聯系)
ALTER TABLE 成績表
ADD CONSTRAINT FK_學號 FOREIGN KEY (學號)
REFERENCES 學生表(學號)

刪除約束:

ALTER TABLE 表名

DROP CONSTRAINT 約束名

--刪除默認約束
ALTER TABLE 學生表
DROP CONSTRAINT DF_性別

--刪除成績表的外鍵約束
ALTER TABLE 成績表
DROP CONSTRAINT FK_學號

--刪除主鍵約束 (刪之前不能被引用)
ALTER TABLE 學生表
DROP CONSTRAINT PK_學號

創建表同時創建約束

在tsgl數據庫中,分別使用命令創建圖書表ts、讀者表dz、借閱表jy

/*
1)圖書表ts(書號(主鍵,字符型),書名(字符型),出版社(字符型),
類別(字符型),作者(字符型),出版時間(日期型),
價格(數值型,為正))
*/

USE tsgl

CREATE TABLE ts
(
書號 CHAR(20) PRIMARY KEY,
書名 CHAR(20),
出版社 CHAR(20),
類別 CHAR(20),
作者 CHAR(10),
出版時間 DATETIME,
價格 INT CHECK (價格>0)
)

/*
讀者表dz(編號(主鍵),姓名,單位(缺省值為千鋒教育),
性別(限制 男、女),電話(唯一約束))
所有屬性都是字符型
*/

CREATE TABLE dz
(
編號 CHAR(20) PRIMARY KEY,
姓名 CHAR(20),
單位 CHAR(25) DEFAULT '千鋒教育',
性別 CHAR(5) CHECK (性別='男' OR 性別='女'),
電話 CHAR(20) UNIQUE
)

/*
借閱表jy(書號(主鍵,ts的外鍵),編號(主鍵,dz的外鍵),
借閱日期(日期型),還書日期(日期型),還書標識(長度為2的字符型))
*/

CREATE TABLE jy
(
書號 CHAR(20) FOREIGN KEY REFERENCES ts(書號),
編號 CHAR(20) FOREIGN KEY REFERENCES dz(編號),
借閱日期 DATETIME,
還書日期 DATETIME,
還書標識 CHAR(2),
PRIMARY KEY(書號,編號)            --聯合主鍵,一般放最后
)

6.刪除表

使用 DROP TABLE 語句

DROP TABLE 表名

--刪除Student表
USE DB2
DROP TABLE Student


免責聲明!

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



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