一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

數(shù)據(jù)庫SQL---數(shù)據(jù)庫、基本表、視圖、索引的定義、修改、刪除

 新進(jìn)小設(shè)計 2022-03-27

1、SQL(結(jié)構(gòu)化查詢語言)的組成:數(shù)據(jù)定義語言DDL、數(shù)據(jù)操縱語言DML、數(shù)據(jù)控制語言DCL、其他。

2、SQL語言的功能:

1)數(shù)據(jù)查詢:SELECT

2)數(shù)據(jù)定義:CREATE   DROP  ALTER

3)數(shù)據(jù)操縱:INSERT  UPDATE  DELETE

4)數(shù)據(jù)控制:GRANT  REVOKE

3、SQL語言的操作對象

1)基本表:數(shù)據(jù)庫中獨(dú)立存在的表。

2)視圖:從一個或幾個基本表中導(dǎo)出的表,是虛表,只存放視圖的定義,不存放對應(yīng)的數(shù)據(jù)。

3)查詢表:查詢結(jié)果對應(yīng)的表。

4)存儲文件:數(shù)據(jù)庫中存放關(guān)系的物理文件。

4、表的相關(guān)數(shù)據(jù)
1)字段:一個事物的某一特征
2)記錄:字段的組合,表示的是一個具體的事物
3)表:記錄的組合,表示的是同一類型事物的集合
4)表和字段、記錄的關(guān)系:字段是事物的屬性、記錄是事物本身、表是事物的集合
5)列:字段的另一種稱謂
6)屬性:字段的另一種稱謂
7)元組:記錄的另一種稱謂

5、數(shù)據(jù)庫中建表方法

1)利用圖形化界面建表

2)create table命令  

create table dept
(
 dept_id int primary key,
 dept_name nvarchar(100) not null,
 dept_address nvarchar(100)
)
最后一行的逗號可以有也可以沒有,在ORACLE里不能有,所以建議不寫逗號,便于移植。
create table emp
(  --不能寫成{
 emp_id int constraint pk_emp_id_hahaha primary key,
 emp_name nvarchar(20) not null,
 emp_sex nchar(1) ,
 dept_id int constraint fk_dept_id_heihei foreign key references  dept(dept_id),
)

6、修改表

1)增加列(新增一列的值為空值)

     alter table dept add dept_new int default 0

2)增加約束

alter table dept add constraint dept_name unique

3)刪除約束

alter table dept drop constraint dept_name unique

4)修改列的數(shù)據(jù)類型

alter table dept alter column dept_name char(10)

7、刪除表

delete table emp

8、約束:對一個表中的屬性操作的限制叫做約束。
1)主鍵約束:不允許重復(fù)元素,避免數(shù)據(jù)的冗余。
2)外鍵約束:通過外鍵約束從語法上保證了本事務(wù)所關(guān)聯(lián)的其他事物一定是存在的。
                        事物與事物之間的關(guān)系是通過外鍵來體現(xiàn)的。
3)create約束:保證事物屬性的取值在合法的范圍之內(nèi)。
                           create table student
                                   (stu_id int primary key,
                                    stu_sal int check (stu_sal>1000 and stu_sal<=8000),
                                    stu_sex nchar(1) default('男')   ---()可以省,在數(shù)據(jù)庫中字符串是必須用''括起來的
                                   )   
4)default約束:保證事物的屬性一定會有一個值
5)唯一約束:保證了事物屬性的取值不允許重復(fù),但允許其中有一列且只能有一列為空。
(1)SqlServer只允許一個unique列為空,Oracle允許多個unique列為空
(2)create table student2
                 (stu_id int primary key,
                  stu_sal int check (stu_sal>1000 and stu_sal<=8000),
                  stu_sex nchar(1) default('男'),   ---()可以省,在數(shù)據(jù)庫中字符串是必須用''括起來的
                  stu_name nvarchar(200) unique
                 ) 
           insert into student2 values(1,6000,'男’,'張三’); ---ok
           insert into student2 values(2,6000,'男’,'張三’);---error違反了唯一約束
           insert into student2 values(2,6000,'男’,'李四’);---ok   
           insert into student2 values(null,6000,'男’,'王五’);---error主鍵不能為空,出錯的信息是“不能將值null插入列'stu_id’”
           insert into student2 values(3,6000,'男’,null);---ok 說明唯一鍵可以為空
           stu_name nvarchar(200) unique not null---error兩者可以組合使用

6)not null約束
(1)要求用戶必須為該屬性賦一個值,否則語法出錯。
(2)如果一個字段不寫null也不寫not null,則默認(rèn)是null,即默認(rèn)允許為空,用戶可以不給該字段賦值。
(3)如果用戶沒有為該字段賦值,則該字段的值默認(rèn)是null。
(4)要注意null和default的區(qū)別
          相同點(diǎn):都允許用戶不賦值。
          不同點(diǎn):null修飾的字段如果用戶不賦值則默認(rèn)是null。
                        default修飾的字段如果用戶不賦值則默認(rèn)是default規(guī)定的那個值。
9、表和約束的區(qū)別
1)數(shù)據(jù)庫是通過表來解決事物的存儲問題的
2)數(shù)據(jù)庫是通過約束來解決事物取值的有效性和合法性的問題
3)建表的過程就是指定事物屬性及其事物屬性各種約束的過程。
10、關(guān)系:表和表之間的聯(lián)系。
1)實(shí)現(xiàn)方式:通過設(shè)置不同形式的外鍵來體現(xiàn)報和表的不同關(guān)系。
2)分類(假設(shè)是A表和B表):

(1)一對一:既可以把表A的主鍵充當(dāng)表B的外鍵,也可以把表B的主鍵充當(dāng)表A的外鍵。
(2)一對多:把A表的主鍵充當(dāng)B表的外鍵,或者講:把A表的主鍵添加到B表來充當(dāng)B表的外鍵。在多的一方添加外鍵。
(3)多對多:多對多必須的通過單獨(dú)的一張表來表示

--班級表
create table banji
(
 banji_id int primary key,
 banji_num int not null,
 banji_name nvarchar(100)
)
--教師
create table jiaoshi
(
 jiaoshi_id int primary key,
 jiaoshi_name nvarchar(200)
)
--第三張表 用來模擬班級和教師的關(guān)系
create table banji_jiaoshi_mapping
(
 banji_id int constraint fk_banji_id foreign key references banji(banji_id),
 jiaoshi_id int foreign key references jiaoshi(jiaoshi_id),
 kecheng nvarchar(20),
 constraint pk_banji_id_jiaoshi_id primary key (banji_id, jiaoshi_id, kecheng)
)

11、主鍵:能夠唯一標(biāo)識一個事務(wù)的一個字段或者多個字段的組合,被稱為主鍵。
1)含有主鍵的表稱為主鍵表。
2)主鍵通常是證書,不建議使用字符串做主鍵(如果主鍵是用于集群式服務(wù),可以考慮用字符串當(dāng)主鍵)。
3)主鍵的值通常都不允許修改,除非本記錄被刪除。
4)主鍵不要定義成id,而要定義成表名ID或者表名_id。
5)要用代理主鍵,不能用業(yè)務(wù)主鍵
      任何一張表,強(qiáng)烈建議不要使用有業(yè)務(wù)含義的字段充當(dāng)主鍵。
      通常都是在表中單獨(dú)添加一個整形的編號充當(dāng)主鍵字段。
12、外鍵:如果一個表中的若干個字段是來自另外若干個表的主鍵或唯一鍵,則這若干個字段就是外鍵。
1)外鍵通常是來自另一個表的主鍵而不是唯一鍵,因為唯一鍵可能為空。
2)外鍵不一定是來自另外的表,也可能來自本表的主鍵。
13、先刪主鍵表還是外鍵表
        先刪外鍵表,如果先刪主鍵表會報錯,因為這會導(dǎo)致外鍵表中的數(shù)據(jù)引用失敗。

14、視圖:視圖從代碼上看是一個select語句,從邏輯上看被當(dāng)做一個虛擬表看待。
1)為什么需要視圖
            簡化查詢:避免了代碼的冗余、避免了書寫大量重復(fù)的sql語句。
2)如何創(chuàng)建視圖
             create view 視圖的名字 as
             ---select的前面不能添加begin
             select語句
             ---select的后面不能添加end
3)創(chuàng)建視圖的select語句必須要為所有的計算列指定別名
              ---錯誤
              create view v$_a
                    as
                        select avg(sal) from emp;
               ---正確
               create view v$_a
                     as
                         select avg(sal) as "avg_sal" from emp;
4)視圖不是物理表,是虛擬表,不建議通過視圖更新視圖所依附的原始表的數(shù)據(jù)或結(jié)構(gòu)
(1)視圖的優(yōu)點(diǎn):簡化查詢、增加數(shù)據(jù)的保密性。
(2)視圖的缺點(diǎn):增加了數(shù)據(jù)庫維護(hù)成本;視圖只是簡化了查詢,但是不能加快查詢的速度。

15、索引

1)創(chuàng)建索引

create index studentidx on student(stu_id,stu_name)

2)刪除索引

drop index studentidx

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本女优一色一伦一区二区三区| 很黄很污在线免费观看| 伊人久久五月天综合网| 欧美熟妇一区二区在线| 中文字幕高清免费日韩视频| 黑鬼糟蹋少妇资源在线观看| 欧美黑人在线一区二区| 黄男女激情一区二区三区| 精品欧美一区二区三久久| 午夜亚洲少妇福利诱惑| 日韩精品在线观看一区| 成人精品欧美一级乱黄| 亚洲国产精品久久综合网| 亚洲国产精品肉丝袜久久| 欧美日韩精品综合一区| 日韩精品一区二区不卡| 日韩黄色大片免费在线| 伊人久久青草地综合婷婷| 在线观看那种视频你懂的| 亚洲一区二区欧美激情| 在线观看日韩欧美综合黄片| 日韩欧美中文字幕av| 亚洲伦片免费偷拍一区| 中国日韩一级黄色大片| 日本人妻精品中文字幕不卡乱码| 国产精品午夜福利免费在线| 成人精品视频一区二区在线观看| 日韩一级毛一欧美一级乱| 99在线视频精品免费播放| 91精品国自产拍老熟女露脸| 邻居人妻人公侵犯人妻视频| 中文字幕一区二区久久综合| 婷婷色香五月综合激激情| 欧美日韩最近中国黄片| 亚洲做性视频在线播放| 亚洲伦片免费偷拍一区| 操白丝女孩在线观看免费高清| 欧美精品中文字幕亚洲| 久久中文字幕中文字幕中文| 日韩蜜桃一区二区三区| 91欧美日韩一区人妻少妇|