SQLserver約束以及對約束和結構的操作

來源:互聯網
上載者:User

標籤:外鍵   ide   資料   guid   添加   允許   設定   tin   聯合主鍵   

一.約束

資料完整性:正確的,一致的 資料.

設計人員:資料表建立之前

實現資料完整性:

1.實體完整性:(行 唯一不重複)
作用:保證行 唯一不重複
技術手段:主鍵約束 primary key(pk)
**表可以沒有主鍵,但是除非特殊情況表都會有主鍵,從而保證實體完整性.
**特點:不能重複,不可為空(null),一個表只能有一個主鍵,但可以是聯合主鍵
**主鍵可以修改,但改完後要保證唯一不重複.

唯一值約束 unique (uq)
**unique 唯一值約束(是主鍵primary key的重要補充)
**作用:行唯一不重複
**一個表裡可以有多個unique
**unique 允許為null,但是只能有一行為null

輔助技術:識別屬性 identity
** 識別屬性(產生自動編號)
**唯讀
**一個表只能有一個識別屬性
**加在整數類型
**永遠僅向前產生新資料,除非重建

全球唯一標識 GUID
**產生函數 new id

2.值域完整性:(列)
作用:對列進行範圍,格式,選項 進行限制
技術手段:資料類型 age varchar(50)
null 允許為null,not null必填
檢查約束 check(ck)
預設值約束 default(df)

**and(與)or(或)not(非)
like萬用字元
**%:任一字元,任意個數
**_:任一字元,一個字元,‘張_‘標識張後面有一個字元
**[]:在範圍內,[0-9]
**[^]:不在範圍內[^0-5]

3.參考完整性:(兩個表之間)
作用:通過給兩個表之間的相關欄位建立關係,從而保證兩個表之間的資料的一致性
例子:
use Practice
CREATE TABLE studentInfo
(
Id int primary key,
Name varchar(20),
Age int check(Age>=18 and Age<=60)
)
CREATE TABLE score
(
[Subject] varchar(50),
Id int foreign key references studentInfo(Id)
--建立關係的兩個關聯欄位
--名字可以不同 但是類型以及長度必須一致
)
技術:外鍵 foreign key(fk)
**主從表的原則:
**只有主表中存在的資料才能添加到從表中
規律:
添加時:先主表,後從表
刪除時:先從表,後主表

**********************************************************************************************************************

二.結構和約束操作


修改結構
--1.結構修改
--添加列
ALTER TABLE Test--修改表Test
ADD [address] varchar(100)not null--添加address列

--修改列 列的類型,長度,空或非空
ALTER TABLE Test--修改表Test
ALTER COLUMN [address]nvarchar(50) null--修改列(COLUMN)


--刪除列
ALTER TABLE Test--修改表Test
DROP COLUMN [address]--刪除列[列名]

--2.修改約束
添加約束
ALTER TABLE Test--修改表
ADD CONSTRAINT PK_test_id --添加主鍵約束給PK_test_id
primary key (id)--具體約束條件
--刪除約束

練習:
--練習:
--1 為test 表的age欄位添加檢查約束,要求成年.
--2 添加生日欄位.
--3 設定生日的預設值為:1980-01-01.
--4 修改test表,要求name列唯一.

--eg1:
ALTER TABLE Test
ADD CONSTRAINT CK_test_age
CHECK (age>=18)
--eg2:
ALTER TABLE Test
ADD [birthday]nvarchar(20) null
--eg3
ALTER TABLE Test--修改表
ADD CONSTRAINT df_test_birthday--添加約束
DEFAULT ‘1980-01-01‘ for birthday--預設值(default) XXXX for 欄位
--eg4
ALTER TABLE Test--修改表
ADD CONSTRAINT UQ_Test_Name --添加唯一值約束
UNIQUE(name)--唯一值(欄位名)

**********************************************************************************************************************

三.DML([資料]操作語言)
--SQL(基本技能)

--1. INSERT 增加
--文法:
--INSERT [INTO] tab_name[(colName,colName2...列的列表)]
--VALUES(value1,value2...值的列表與列的列表匹配),
--(),()一次添加多行

--eg1:(給所有列添加資料)
--1.
INSERT INTO info (sname,sex,birthday,address,tel)
VALUES(‘趙明月‘,0,‘1982-3-6‘,‘吉林‘,‘0432-12345678‘)
--2.
INSERT info VALUES(‘房祖名‘,1,‘1980-2-25‘,‘北京‘,‘010-123123123‘)
select * from info

INSERT INTO info(sname,sex,birthday,address,tel)
VALUES(‘金錢豹‘,1,‘1970-5-9‘,‘天津‘,‘13412362322‘)

INSERT info VALUES(‘趙月‘,0,‘1988-4-26‘,‘長沙市‘,‘03318658888‘)
select * from info
--添加部分列資料
--1.
INSERT INTO info(sname,birthday,tel)
VALUES(‘JACK‘,‘1999-02-04‘,‘1888888888‘)
--2.
INSERT INTO info
VALUES(‘JACK‘,NULL,‘1999-02-04‘,NULL,‘01088888888‘)
UPDATE info SET tel=‘18888888888‘WHERE tel=‘01088888888‘

**********************************************************************************************************************

SQLserver約束以及對約束和結構的操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.