中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

武漢做網(wǎng)站的知名公司個(gè)人網(wǎng)頁怎么制作

武漢做網(wǎng)站的知名公司,個(gè)人網(wǎng)頁怎么制作,東莞網(wǎng)站建設(shè) 手機(jī)殼,滕州營銷型網(wǎng)站目錄 一,SQL server的數(shù)據(jù)類型 1,基本數(shù)據(jù)類型 2,自定義數(shù)據(jù)類型 二,使用T-SQL創(chuàng)建表 1,數(shù)據(jù)完整性的分類 2,約束的類型 3,創(chuàng)建表時(shí)創(chuàng)建約束 4,任務(wù) 5,由任務(wù)編寫…

目錄

?一,SQL server的數(shù)據(jù)類型

1,基本數(shù)據(jù)類型

2,自定義數(shù)據(jù)類型

?二,使用T-SQL創(chuàng)建表

1,數(shù)據(jù)完整性的分類

2,約束的類型

3,創(chuàng)建表時(shí)創(chuàng)建約束

4,任務(wù)

5,由任務(wù)編寫的SQL語句?

三,使用T-SQL管理表?

1,創(chuàng)表時(shí)添加約束名?

1)添加約束名?

2) 修改由任務(wù)編寫的SQL語句 (添加約束名)

2,使用ALTER TABLE修改表

1)從表中刪除列

2)向表中添加列?

3)修改表中列的長度

4)對(duì)指定表添加默認(rèn)約束?

?3,使用DROP TABLE刪除表


通過前一篇SQL server學(xué)習(xí)02-使用T-SQL創(chuàng)建數(shù)據(jù)庫-CSDN博客的學(xué)習(xí)

我已經(jīng)創(chuàng)建好了數(shù)據(jù)庫,接下來開始使用創(chuàng)好的庫創(chuàng)表。首先了解表的概念:

  1. 表是數(shù)據(jù)關(guān)系模型中表示實(shí)體的方式?
  2. 表是數(shù)據(jù)庫中用來組織和存儲(chǔ)數(shù)據(jù),具有行列結(jié)構(gòu)的數(shù)據(jù)庫對(duì)象,數(shù)據(jù)庫中的數(shù)據(jù)都存儲(chǔ)在表中。
  3. 表由行和列組成。

    值得注意的是,一張表就是一個(gè)關(guān)系。 表有行和列,關(guān)系有記錄和字段。表有表名,每個(gè)關(guān)系都有一個(gè)關(guān)系名。

    行稱為記錄,是組織數(shù)據(jù)的單位,每行都是一條獨(dú)立的數(shù)據(jù)記錄。
    列稱為字段,主要描述數(shù)據(jù)的屬性。

如下就是常見的一張excel二維表。

表分為普通表和系統(tǒng)表。

  1. 普通表由用戶創(chuàng)建:用戶定義的表也稱為標(biāo)準(zhǔn)表,用來存儲(chǔ)數(shù)據(jù)庫應(yīng)用系統(tǒng)中的數(shù)據(jù)。
  2. 系統(tǒng)表由系統(tǒng)創(chuàng)建:存儲(chǔ)了有關(guān)數(shù)據(jù)庫服務(wù)器的配置,數(shù)據(jù)庫設(shè)置,用戶和數(shù)據(jù)庫對(duì)象的描述等系統(tǒng)信息,用戶不能創(chuàng)建。

在同一個(gè)數(shù)據(jù)庫中,表名不能重復(fù),在同一張表中列名不允許相同,但在不同的表中列名可以相同。

【ps:同一張表列名重復(fù)無意義。由于不同表之間可能存在聯(lián)系,因此會(huì)有相同列名?!?/p>

?一,SQL server的數(shù)據(jù)類型

?在創(chuàng)建表之前,需要考慮要?jiǎng)?chuàng)建的表包含哪些內(nèi)容,例如一張表包含

  1. 哪些列
  2. 每列都是什么數(shù)據(jù)類型

可以看到,在創(chuàng)表時(shí),數(shù)據(jù)類型很關(guān)鍵。SQL server提供了基本數(shù)據(jù)類型和自定義數(shù)據(jù)類型。

先來學(xué)習(xí)基本數(shù)據(jù)類型(也稱系統(tǒng)數(shù)據(jù)類型)。

1,基本數(shù)據(jù)類型

基本數(shù)據(jù)類型是系統(tǒng)本身就自帶的,可以直接拿來用,如下👇?

2,自定義數(shù)據(jù)類型

自定義數(shù)據(jù)類型不是系統(tǒng)自帶的基本數(shù)據(jù)類型,但用戶需要以SQL server系統(tǒng)數(shù)據(jù)類型為基礎(chǔ)創(chuàng)建。

當(dāng)多張表中的列要存儲(chǔ)相同類型的數(shù)據(jù)時(shí),往往要確保這些列具有完全相同的數(shù)據(jù)類型,長度和為空性(數(shù)據(jù)的值是否允許為空)?,可以通過用戶自定義數(shù)據(jù)類型來實(shí)現(xiàn)。例如:

  1. 電話的長度都為11,非空,且唯一。

    如果某個(gè)系統(tǒng)要求電話這一列的長度為11個(gè)字符,那么有效的電話內(nèi)容可以是“12345678912”或“98765432121”,但“123”或“123456”就不符合這個(gè)要求。
    ?
  2. 身份證的長度為18,非空,且唯一。

下面通過SSMS創(chuàng)建一個(gè)名為char30的自定義數(shù)據(jù)類型,要求基于char系統(tǒng)數(shù)據(jù)類型,大小為30個(gè)字符。

?鼠標(biāo)右擊“用戶定義數(shù)據(jù)類型”子節(jié)點(diǎn),可以看到之前的自定義數(shù)據(jù)類型char30已被排列在“用戶自定義數(shù)據(jù)類型”列表中:

?二,使用T-SQL創(chuàng)建表

不管是在MySQL中還是在SQL server中,創(chuàng)庫創(chuàng)表都是一樣的關(guān)鍵字"CREATE",如果創(chuàng)庫后面接DATABASE ,創(chuàng)表后面則接TABLE?。?

?在SQL server中使用T-SQL語句創(chuàng)表的語法如下:

CREATE TABLE 數(shù)據(jù)表名
(列名 數(shù)據(jù)類型[列級(jí)完整性約束條件]
[,...n]
[,表級(jí)完整性約束條件]
)

?可以看到,在上述語法總,“約束條件”出現(xiàn)了兩次。約束時(shí)SQL server提供的自動(dòng)保持?jǐn)?shù)據(jù)庫完整性的一種方法。之所以存在約束條件,是因?yàn)樾枰3謹(jǐn)?shù)據(jù)庫的完整性(即數(shù)據(jù)完整性)。

?用戶在向表格中添加數(shù)據(jù)時(shí),有些數(shù)據(jù)的內(nèi)容可能與實(shí)際情況不相符,例如:

  1. 年齡:1000歲? ? ?(沒有人能夠活到1千歲)
  2. 性別:好? ? ? ? ? ? ?(性別沒有“好”,要么是“男”或“女”,要么是美國的97 種性別中的一個(gè))
  3. 身份證號(hào):12? ? ?(身份證號(hào)必須是18位,極少數(shù)是15位)
  4. 郵箱:123? ? ? ? ? ?(郵箱格式寫錯(cuò))

可以看到,這些數(shù)據(jù)都是不可靠的,為了能夠保證數(shù)據(jù)的準(zhǔn)確可靠,就需要對(duì)數(shù)據(jù)表進(jìn)行數(shù)據(jù)完整性設(shè)置。

1,數(shù)據(jù)完整性的分類

  1. ?實(shí)體完整性(行完整性):

    指表的每一行在表中是唯一的實(shí)體。一般用主鍵約束 PRIMARY KEY。

    例如,學(xué)生表中的每一行代表表中唯一的一名學(xué)生,不會(huì)有兩行或兩行以上的記錄來表示同一個(gè)學(xué)生(太浪費(fèi)空間,沒必要)。
    ?
  2. 域完整性(列完整性):

    指列滿足特定的數(shù)據(jù)類型和約束。可以使用檢查約束或非空約束。

    例如,成績表中成績這一列的值限定在[0,100],學(xué)生表中性別只能為“男”或“女”,年齡非空。
    ?
  3. 參照完整性(引用完整性):

    指表和表之間的字段指是有關(guān)聯(lián)的(特殊情況是產(chǎn)生在同一張表的不同字段值之間),參照表中的外鍵值必須存在于被參照表中的主鍵值中(這句話的意思就是:你要參照我的數(shù)據(jù),那么我的外鍵列在你的表中必須是主鍵列)。使用外鍵約束。

    例如,成績表中的學(xué)號(hào)這一列(外鍵)的值必須存在于學(xué)生表中學(xué)號(hào)這一列(主鍵)的值中。
    ?
  4. 用戶定義的完整性:

    指某一具體的應(yīng)用必須滿足的語義要求或用戶實(shí)際的業(yè)務(wù)規(guī)則。(較少使用)
    ?

?接下來了解SQL server中的約束類型。

2,約束的類型

分為:

  1. 檢查約束(CHECK)

    指定某列可取值的集合或范圍,用于實(shí)現(xiàn)域完整性。一張表可以有多個(gè)檢查約束。

    在設(shè)置檢查約束時(shí),需要加上邏輯表達(dá)式,即:CHECK(邏輯表達(dá)式)
    ?
  2. 默認(rèn)約束(DEFAULT)

    若在表中定義了默認(rèn)值約束,用戶在插入新的數(shù)據(jù)行時(shí),如果沒有為該列指定數(shù)據(jù),那么系統(tǒng)會(huì)將默認(rèn)值賦值給該列。
    ?
  3. 主鍵約束(PRIMARY KEY)

    主鍵是表中某列或多個(gè)列的組合,可以唯一確定一條記錄??梢员WC實(shí)體完整性。每張表只能有一個(gè)主鍵,主鍵不能為空(即如果一個(gè)字段為主鍵,就必須同時(shí)設(shè)置為非空約束)。
    ?
  4. 外鍵約束(FOREIGN)

    表與表之間是有關(guān)系的,有兩張表分別為表A和表B,兩張表中有相同的列m,假設(shè)列m在表A中是主鍵(或具有唯一約束),則列m在表B中為外鍵,需要使用外鍵約束。語法如下:
    ?
    --表A中
    CREATE TABLE A(
    列名m 數(shù)據(jù)類型 約束條件為主鍵PRIMARY KEY,
    )--表B中
    CREATE TABLE B(
    列名m 數(shù)據(jù)類型,
    FOREIGN KEY (m) REFERENCES A(m)
    )


    此時(shí),表A稱為主表(或被參考表),表B為從表或參考表。存在相互聯(lián)系的兩種表中,誰有主鍵,誰就是主表。

    外鍵表示一張表中的列于另外一張表中列的引用關(guān)系,以保證不同表中數(shù)據(jù)的一致性。用于實(shí)現(xiàn)參照完整性。
  5. 唯一約束(UNIQUE)

    用于指定表中某列或多個(gè)列的組合值,具有唯一性,確保在非主鍵列中輸入非重復(fù)值。可以保證實(shí)體的完整性。雖然這點(diǎn)和主鍵約束很像,但是使用唯一約束的字段允許為空null,并且只能有一個(gè)該字段值為空,即如果有一條記錄的該字段為空,那么其他記錄的該字段必須有值,并且這些值必須是唯一的。在一張表中,唯一約束可有多個(gè),而主鍵約束只能有一個(gè)。

    例如,現(xiàn)在我有一張表的數(shù)據(jù)如下,sphone設(shè)置了唯一約束:
    ?
    snosphone
    1153xxxxxxxx
    2null
    3189xxxxxxxx

    如果再試圖插入另一條記錄,如果sphone也為空,就會(huì)違反唯一約束,從而導(dǎo)致插入失敗。

  6. 非空約束(NOT NULL)

    指定表中的某些列必須有具體值,可以實(shí)現(xiàn)域完整性。
    ?

知道了數(shù)據(jù)完整性和約束條件這兩個(gè)概念,就可以在創(chuàng)建表的同時(shí)創(chuàng)建約束,也可以在修改表時(shí)創(chuàng)建約束。

為了方便后期刪除指定約束,有些時(shí)候在創(chuàng)建約束的時(shí)候可以給當(dāng)前的約束指定一個(gè)約束名字(約束名),刪除表中指定約束時(shí),可以使用指定約束的約束名來進(jìn)行刪除該約束。?constraint拘束。

添加表中約束的語法如下👇

ALTER TABLE 表名
ADD CONSTRAINT 約束名 約束條件(表中需要加指定約束的列名)

刪除表中約束時(shí),使用關(guān)鍵字DROP,如下👇

ALTER TABLE 表名
DROP CONSTRAINT 約束名;

一般不用自己寫,使用默認(rèn)的約束名就行。

3,創(chuàng)建表時(shí)創(chuàng)建約束

語法格式如下:

CREATE TABLE 數(shù)據(jù)表名(從表)
(
列名 數(shù)據(jù)類型,
.
.
.
FOREIGN KEY (列名) REFERENCES 主表名(列名)
)

4,任務(wù)

在StuScore數(shù)據(jù)庫中,根據(jù)需要還需要?jiǎng)?chuàng)建系部表,班級(jí)表和用戶表。使用T-SQL語句按照下表所示的表結(jié)構(gòu)創(chuàng)建所需的三張表。以下是數(shù)據(jù)庫中各張表的結(jié)構(gòu)👇

注意點(diǎn):

  1. 學(xué)生表不是第一張先創(chuàng)的表,從圖中可以看到,學(xué)生表有一個(gè)班級(jí)編號(hào)外鍵classid,表示在學(xué)生表students和班級(jí)表classes之間,班級(jí)表是主表,學(xué)生表是從表。因此要先將創(chuàng)建班級(jí)表,再創(chuàng)建學(xué)生表。
  2. 根據(jù)之前所學(xué)的約束條件,上面的建表就會(huì)很簡單,使用默認(rèn)的約束條件。
  3. 約束條件:

    主鍵? PRIMARY KY
    檢查? CHECK(gender='男' or gender='女')
    外鍵? FOREIGN KEY
    唯一? UNIQUE
    ?

上述表中,唯一特別的就是成績表score中的sno和cno都是主鍵約束,通過之前的學(xué)習(xí),我知道了一張表只能有一個(gè)主鍵約束。

為什么成績表score中會(huì)有兩個(gè)主鍵?

答:因?yàn)槊總€(gè)學(xué)生可以選修多門課,所以成績表中的學(xué)生學(xué)號(hào)sno就會(huì)有重復(fù),這意味著僅使用sno作為主鍵無法保證數(shù)據(jù)的實(shí)體完整性,因?yàn)樗荒芪ㄒ粯?biāo)識(shí)每一條成績記錄。然而,每個(gè)學(xué)生在同一門課程中只會(huì)有一條成績記錄,因此sno和cno的組合可以唯一標(biāo)識(shí)每一條成績記錄。通過將這兩個(gè)字段合并為一個(gè)復(fù)合主鍵,能夠有效地保證數(shù)據(jù)的實(shí)體完整性。

復(fù)合主鍵”:就如上面的情況,一張表只能有一個(gè)主鍵,但是有些時(shí)候需要多個(gè)字段同時(shí)為一個(gè)主鍵,這種時(shí)候就需要使用到復(fù)合主鍵。

值得注意的是,因?yàn)槲沂鞘孪瓤幢斫Y(jié)構(gòu)來創(chuàng)表的,因此,我知道要用到復(fù)合主鍵,sno和cno先不加任何約束,之后再一起添加主鍵約束。

如果不小心將學(xué)號(hào)設(shè)置成了主鍵,就需要先使用如下語句刪掉原有的主鍵,再添加復(fù)合主鍵進(jìn)去。

--刪除約束
ALTER TABLE 表名
DROP CONSTRAINT 約束名  -- 添加復(fù)合主鍵約束
ALTER TABLE 表名
ADD CONSTRAINT 約束名  PRIMARY KEY(列名1,列名2)

上面這張表主要是用于連接數(shù)據(jù)庫,對(duì)應(yīng)數(shù)據(jù)庫的sa用戶及密碼。?如果后面做項(xiàng)目的話,會(huì)用到。

按照生活常識(shí):

  1. 沒有系部的成立,就沒有班級(jí)。
  2. 學(xué)生達(dá)到一定人數(shù),才會(huì)開設(shè)課程。
  3. 沒有學(xué)生考試,就不會(huì)有成績。

可以看到,首先應(yīng)該創(chuàng)建的是系部表,再是班級(jí)表,接著就是學(xué)生表,課程表,成績表。

編寫的sql語句如下:

5,由任務(wù)編寫的SQL語句?

USE Stuscore  --之前創(chuàng)建的數(shù)據(jù)庫
----系部表
-- 檢查并刪除表 dept
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'dept' AND type = 'U')DROP TABLE dept
CREATE TABLE dept(deptno char(5) NOT NULL PRIMARY KEY,dname nchar(10) NOT NULL,dean nchar(4),phone char(8) UNIQUE
);--班級(jí)表
-- 檢查并刪除表 classes
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'classes' AND type = 'U')DROP TABLE classes;
CREATE TABLE classes(classid char(6) NOT NULL PRIMARY KEY,speciality nchar(12) NOT NULL,deptno char(5) NOT NULL, counselor nchar(4),FOREIGN KEY (deptno) REFERENCES dept(deptno)
);--學(xué)生表
-- 檢查并刪除表 students
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'students' AND type = 'U')DROP TABLE students;
CREATE TABLE students
(sno char(8) NOT NULL PRIMARY KEY,sname nchar(4) NOT NULL,gender nchar(1) CHECK(gender='男' or gender='女'),classid char(6) NOT NULL,  birthday date,phone char(13) UNIQUE,FOREIGN KEY (classid) REFERENCES classes(classid)
)--課程表
-- 檢查并刪除表 courses
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'courses' AND type = 'U')DROP TABLE courses;
CREATE TABLE courses
(cno char(10) NOT NULL PRIMARY KEY,cname nvarchar(20) NOT NULL,period int NOT NULL,credit tinyint NOT NULL,  type nchar(5) NOT NULL
)--成績表
-- 檢查并刪除表 score
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'score' AND type = 'U')DROP TABLE score;
CREATE TABLE score
(sno char(8) NOT NULL,cno char(10) NOT NULL,CONSTRAINT PK_score_sno_cno PRIMARY KEY(sno, cno),grade tinyint CHECK(grade>=0 and grade<=100),FOREIGN KEY (sno) REFERENCES students(sno), FOREIGN KEY (cno) REFERENCES courses(cno)    
)--用戶表
-- 檢查并刪除表 users
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'users' AND type = 'U')DROP TABLE users;
CREATE TABLE users(login char(10) NOT NULL PRIMARY KEY,username nchar(5) NOT NULL,  pwd char(10) NOT NULL
)-- 檢查是表中的字段是否完整
SELECT * FROM dept
SELECT * FROM classes
SELECT * FROM students
SELECT * FROM score
SELECT * FROM users

三,使用T-SQL管理表?

1,創(chuàng)表時(shí)添加約束名?

這里以系部表dept為例。

1)添加約束名?

系部表中的deptno為主鍵約束,如果不添加主鍵約束名的語句就如下編寫:

deptno char(5) NOT NULL PRIMARY KEY,

但如果想要給主鍵加上約束名,就需要先寫好列deptno不急著添加主鍵約束,需要再寫一行語句給列deptno添加主鍵約束及主鍵約束名:

    deptno char(5) NOT NULL,CONSTRAINT PK_dept_deptno PRIMARY KEY(deptno),

?為什么需要給約束添加上約束名,主要是因?yàn)殡S著時(shí)間的推移,有些約束條件需要改變,比方說,成績表中的成績grade現(xiàn)在的約束是0~100分,但是滿分可能會(huì)變成150分,即約束為0~150。

如果想要在不刪除表格的前提下修改該約束,就需要通過約束名來修改該約束條件。

如果不給約束條件加上約束名,系統(tǒng)會(huì)為該約束條件分配名字,但由系統(tǒng)給的約束名字會(huì)變。

使用如下語句查看系統(tǒng)給的約束名(這里是dept表,查看主鍵PK):

SELECT name FROM sys.key_constraints WHERE parent_object_id = OBJECT_ID('dept') AND type = 'PK';

先不手動(dòng)添加約束名,dept表的deptno列約束名就會(huì)隨著程序的每一次運(yùn)行而改變,如下👇:

第一次執(zhí)行下面的語句:?

?再次執(zhí)行下面的語句:?

仔細(xì)看,會(huì)發(fā)現(xiàn)表示主鍵約束的關(guān)鍵字PK及表名dept不變,但是后面的約束名會(huì)變。?如果想要通過約束名來刪除該約束無疑是天方夜譚。因此建議只要含有主鍵約束的列最好都加上對(duì)應(yīng)的約束名。約束名可以寫成如下形式:

約束條件單詞首位字母大寫_數(shù)據(jù)表名_被添加約束的列名

手動(dòng)添加約束名之后再去查看約束名,就不會(huì)隨著程序的運(yùn)行而改變:?

2) 修改由任務(wù)編寫的SQL語句 (添加約束名)

--USE Stuscore  --之前創(chuàng)建的數(shù)據(jù)庫----系部表
-- 檢查并刪除表 dept
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'dept' AND type = 'U')DROP TABLE dept
CREATE TABLE dept(dno char(5) NOT NULL CONSTRAINT PK_dept_dno PRIMARY KEY(dno), --dno系編號(hào) dne nchar(100) NOT NULL,  --dne系名 dept nameddn nchar(100), --ddn系主任  dept deandpe char(11),   --dpe系聯(lián)系電話 dept phoneCONSTRAINT CK_deptno_dpn UNIQUE(dpe)
)--班級(jí)表
-- 檢查并刪除表 classes
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'classes' AND type = 'U')DROP TABLE classes;
CREATE TABLE classes(cno char(6) NOT NULLCONSTRAINT PK_classes_cno  PRIMARY KEY(cno), --cno班級(jí)編號(hào)cne nchar(100) NOT NULL,  --cne班級(jí)名 classes namedno char(5) NOT NULL,  --dno系編號(hào)ccr nchar(100),  --班級(jí)輔導(dǎo)員 classes counsellorCONSTRAINT FK_dept_dno FOREIGN KEY (dno) REFERENCES dept(dno)
);--學(xué)生表
-- 檢查并刪除表 students
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'students' AND type = 'U')DROP TABLE students;
CREATE TABLE students
(sno char(8) NOT NULL  CONSTRAINT PK_students_sno  PRIMARY KEY(sno),  --sno學(xué)生編號(hào)sne nchar(100) NOT NULL,  --sne 學(xué)生名 students namessx nchar(6)CONSTRAINT CK_students_ssx  CHECK(ssx='male' or ssx='female'), --ssx學(xué)生性別 students sexcno char(6) NOT NULL,    --cno班級(jí)編號(hào)sbd date,  --sbt學(xué)生出生日期 students birth dayspe char(11) CONSTRAINT UQ_students_spe UNIQUE(spe),   --spe學(xué)生聯(lián)系方式 students phonesnn nvarchar(100)  CONSTRAINT DF_students_snn DEFAULT 'China', --snn學(xué)生國籍 students nationCONSTRAINT FK_students_cno FOREIGN KEY (cno) REFERENCES classes(cno)
);--課程表
-- 檢查并刪除表 courses
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'courses' AND type = 'U')DROP TABLE courses;
CREATE TABLE courses
(cno char(10) NOT NULLCONSTRAINT PK_courses_cno  PRIMARY KEY(cno),   --cno課程編號(hào) cne nvarchar(100) NOT NULL,   --cne 課程名 courses namecpd int NOT NULL,      --cpd課程學(xué)時(shí)  courses periodcct tinyint NOT NULL,   --cct  課程學(xué)分  courses creditcte nchar(20) NOT NULLCONSTRAINT CK_courses_type CHECK(cte='optional_course' or cte='required_course')  --cte課程類型 courses type
)--成績表
-- 檢查并刪除表 score
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'score' AND type = 'U')DROP TABLE score;
CREATE TABLE score
(sno char(8) NOT NULL, cno char(10) NOT NULL,CONSTRAINT PK_score_sno_cno PRIMARY KEY(sno, cno),get tinyint,  --get 成績得分CONSTRAINT CK_score_get  CHECK(get>=0 and get<=100),CONSTRAINT FK_score_sno FOREIGN KEY (sno) REFERENCES students(sno), CONSTRAINT FK_score_cno FOREIGN KEY (cno) REFERENCES courses(cno)    
)--用戶表
-- 檢查并刪除表 users
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'users' AND type = 'U')DROP TABLE users;
CREATE TABLE users(uln char(100) NOT NULL   CONSTRAINT PK_users_uln  PRIMARY KEY(uln),  --uln 用戶登錄 users loginune nchar(100) NOT NULL,    --une  用戶名  users name  upd char(10) NOT NULL    -- upd 用戶登錄密碼 users password
)-- 檢查是表中的字段是否完整
--SELECT * FROM users
SELECT * FROM studentsSELECT * FROM deptSELECT * FROM classesSELECT * FROM score

2,使用ALTER TABLE修改表

有些時(shí)候已經(jīng)創(chuàng)好表,點(diǎn)擊執(zhí)行之后,會(huì)存在少列,少約束等問題。這些問題都不用擔(dān)心,能夠在創(chuàng)建好數(shù)據(jù)表后添加。

可以使用ALTER? TABLE... DROP COLUMN...刪除列,ALTER...ADD...添加列。

1)從表中刪除列

語法如下:?

ALTER TABLE 數(shù)據(jù)表名 DROP COLUMN 要?jiǎng)h除的列名(無任何約束條件)

?需要注意的是,刪除的列必須沒有任何約束,這里以用戶表users為例,我現(xiàn)在刪除主鍵列l(wèi)ogin

可以看到,因?yàn)橛屑s束條件-主鍵約束,所以該列無法刪除。

但是如果我想要?jiǎng)h除沒有任何約束的列pwd,是完全可以刪除的,如下👇

2)向表中添加列?

?語法如下:

ALTER TABLE 數(shù)據(jù)表名 ADD 新列的名字 新列的數(shù)據(jù)類型

依舊可以使用ALTER TABLE關(guān)鍵字將刪除的列pwd再添加回來:

3)修改表中列的長度

語法如下:?

ALTER TABLE 數(shù)據(jù)表明 COLUMN 列名(新的長度)

以上面的用戶表users為例,將列pwd的長度由原來的10變成20,可以如下編寫語句:

ALTER TABLE users ALTER COLUMN  pwd char(20)

?如果想要查看修改的長度是否生效,可以使用如下語句查看列的長度:

--查看列的長度
SELECT column_name AS 列名, data_type AS 數(shù)據(jù)類型, character_maximum_length AS 數(shù)據(jù)長度
FROM information_schema.columns
WHERE table_name = 'users' AND column_name = 'pwd';

如上,長度修改成功。?

4)對(duì)指定表添加默認(rèn)約束?

?這里以學(xué)生表students為例,向?qū)W生表中添加新列nation國籍?nvarchar(10),默認(rèn)值為“中國”。

 ALTER TABLE studentsADD nation nvarchar(10)  CONSTRAINT DF_students_nation DEFAULT('中國')

?通過上圖可以無法直觀的感受到默認(rèn)值的優(yōu)勢,后面插入數(shù)據(jù)的時(shí)候會(huì)更直觀。

ALTER TABLE courses ADD  CONSTRAINT DF_courses_cte DEFAULT 'required_course' FOR cte
INSERT INTO dept(dno,dne,ddn,dpe)
VALUES('1','Computer','QiangguoGong','1531111111')INSERT INTO classes(cno,cne,ccr,dno)
VALUES('1','Computer24','JianjunSong','1')INSERT INTO students(sno,sne,ssx,sbd,spe,cno) 
VALUES('1','zs','male','2000.1.1','18911111111','1')INSERT INTO courses(cno,cne,cpd,cct)
VALUES('1','SQLserver DataBase Application principle','96','6')INSERT INTO users(uln,une,upd)
VALUES('SQL_identity','sa','123456')

?3,使用DROP TABLE刪除表

?能夠創(chuàng)建表自然也就能夠刪除表。刪表的語法如下:

DROP TABLE 數(shù)據(jù)表名

有問題請(qǐng)?jiān)谠u(píng)論區(qū)留言或者是私信我,回復(fù)時(shí)間不超過1天。

http://www.risenshineclean.com/news/51422.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)淺析昆明seo
  • 網(wǎng)站做百度推廣搜狐綜合小時(shí)報(bào)2022113011
  • 虛擬網(wǎng)站什么是搜索引擎營銷?
  • 網(wǎng)站建設(shè)哪家好 上海廣州疫情升級(jí)
  • 古典風(fēng)格網(wǎng)站模板htmlseo的搜索排名影響因素主要有
  • 天河做網(wǎng)站系統(tǒng)放單平臺(tái)
  • 南寧網(wǎng)站建設(shè)制作優(yōu)化大師哪個(gè)好
  • 手機(jī)英文網(wǎng)站大全各大搜索引擎入口
  • 企業(yè)管理模式馮宗耀seo教程
  • 做網(wǎng)站的總結(jié)游戲推廣員是做什么的
  • 網(wǎng)站運(yùn)營和維護(hù)吉林seo刷關(guān)鍵詞排名優(yōu)化
  • 酷炫網(wǎng)站設(shè)計(jì)蘇州seo排名公司
  • 個(gè)人網(wǎng)站logo設(shè)計(jì)百度營銷推廣登錄
  • 陽谷做網(wǎng)站推廣石家莊關(guān)鍵詞優(yōu)化軟件
  • 株洲網(wǎng)站優(yōu)化找哪家網(wǎng)站模板哪家好
  • 做網(wǎng)站一直不知道做什么網(wǎng)站愛戰(zhàn)網(wǎng)關(guān)鍵詞挖掘查詢工具
  • 鹽城網(wǎng)站建設(shè)費(fèi)用seo顧問服
  • 網(wǎng)站建設(shè) 策劃方案書1688官網(wǎng)
  • 朋友用我的vps做網(wǎng)站模板網(wǎng)站建站哪家好
  • 專注做一家男生最愛的網(wǎng)站百度代發(fā)排名
  • 常用h5的制作工具seo關(guān)鍵詞排名優(yōu)化方案
  • 今日頭條模板WordPress優(yōu)化深圳seo
  • b2b網(wǎng)站建立百度開放云平臺(tái)
  • 網(wǎng)站項(xiàng)目經(jīng)費(fèi)預(yù)算新聞稿營銷
  • 網(wǎng)站建設(shè)綜合技術(shù)百度首頁登錄
  • 網(wǎng)站建設(shè)技巧亅金手指排名25網(wǎng)站頁面優(yōu)化方案
  • google建設(shè)網(wǎng)站賺錢青島seo優(yōu)化公司
  • 深圳網(wǎng)站建設(shè)憂化在線seo外鏈工具
  • 重慶seo網(wǎng)站設(shè)計(jì)旅游營銷推廣方案
  • 深圳專業(yè)網(wǎng)站制作技術(shù)簡單的網(wǎng)站建設(shè)