免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
SQL基礎(chǔ)之基本操作

1.UNION操作符

  union操作符用來(lái)合并兩個(gè)或多個(gè)select語(yǔ)句的結(jié)果,要注意union內(nèi)部的每個(gè)select語(yǔ)句必須擁有相同數(shù)量的列,而且列也必須擁有相似的數(shù)據(jù)類(lèi)型和相同的列順序。下面是我的數(shù)據(jù)表的截圖一個(gè)小例子。

那現(xiàn)在對(duì)數(shù)據(jù)表進(jìn)行聯(lián)合操作,這里我們聯(lián)合這兩個(gè)表的bookName。

select bookName from myrankunionselect bookName from mybook;

從結(jié)果可以看出bookName這列顯示的是兩張表的聯(lián)合的數(shù)據(jù),而且你如果仔細(xì)看會(huì)發(fā)現(xiàn)其實(shí)應(yīng)該是有重復(fù)數(shù)據(jù)的,而結(jié)果沒(méi)有顯示說(shuō)明重復(fù)數(shù)據(jù)被過(guò)濾掉了。如果想顯示重復(fù)數(shù)據(jù)可在union后添加All關(guān)鍵字。

select bookName from myrankunion allselect bookName from mybook;

2.select into與insert into select操作符

  通過(guò)select into語(yǔ)句我們可以將一個(gè)表的信息復(fù)制到另一個(gè)表中,新創(chuàng)建的表中的列名會(huì)和原來(lái)的表的列名一樣。

--將mybook表的數(shù)據(jù)復(fù)制到mybookcopy表中,mybookcopy表無(wú)需我們創(chuàng)建,執(zhí)行這條語(yǔ)句后會(huì)自動(dòng)創(chuàng)建mybookcopy表select * into mybookcopy from mybook;--復(fù)制多個(gè)表的列到新表中select mybook.bookName,myuser.userName into newtable from mybook join myuser on mybook.userID=myuser.userId

insert into select語(yǔ)句則是從一個(gè)表中復(fù)制數(shù)據(jù)然后插入到另一個(gè)已存在的表中,目標(biāo)表中原有的行不會(huì)受到任何影響。

insert into myrank(userId) select userID from mybook

3.約束

約束用于規(guī)定表中的數(shù)據(jù)規(guī)則,如果存在違反約束的數(shù)據(jù)行為,行為將會(huì)被約束終止。在SQl中有以下六個(gè)約束:

NOT NULL:這個(gè)應(yīng)該很熟悉,就是不能為空

UNIQUE:保證列的每行都必須有唯一的值

PRIMARY KEY:主鍵,可以理解為是not null和unique的結(jié)合,確保這個(gè)表的某列有唯一標(biāo)識(shí)

FOREIGN KEY:外鍵,它標(biāo)識(shí)這個(gè)列是另外一個(gè)表的主鍵,用于保證這兩個(gè)表之間的參照完整性

CHECK:創(chuàng)建列中的值的范圍,保證列中的值符合指定的條件

DEFAULT:規(guī)定列的默認(rèn)值

接下來(lái)是這6大操作的sql語(yǔ)句,每條語(yǔ)句上都有它的解釋。

--創(chuàng)建表時(shí)在列的后面加上NOT NULL關(guān)鍵字則添加了非空的約束create table mytable(myID int NOT NULL,myName nvarchar(32) NOT NULL)--創(chuàng)建表時(shí)在列的后面加上UNIQUE關(guān)鍵字則添加了唯一的約束create table mytable2(myID int NOT NULL UNIQUE,myName nvarchar(32) NOT NULL)--當(dāng)表被創(chuàng)建好后,可以使用alter來(lái)新增唯一性約束alter table mytable2 add constraint nameunique unique(myName)--使用alter和drop來(lái)刪除唯一性約束alter table mytable2 drop nameunique--將mytable2刪除后重新創(chuàng)建,并設(shè)置myID為主鍵create table mytable2(myID int NOT NULL,myName nvarchar(32) NOT NULL,constraint myprimary primary key(myID))--而且在這個(gè)地方我還發(fā)現(xiàn)當(dāng)刪除數(shù)據(jù)表后,如果馬上新建名字和字段一樣的表會(huì)直接將剛剛刪除的表重新顯示,原有的數(shù)據(jù)還在,只是添加了主鍵--刪除主鍵alter table mytable2 drop myprimary--新增主鍵alter table mytable2 add constraint myprimary primary key(myID,myName)--首先刪除上面mytable2的主鍵,創(chuàng)建mytable3,并設(shè)置myName為主鍵create table mytable3(myName nvarchar(32) NOT NULL PRIMARY KEY,age int NOT NULL)--然后設(shè)置mytable2的myName為外鍵,刪除方式和上面差不多,也是采用drop關(guān)鍵字alter table mytable2 add constraint myforeign foreign key(myName) references mytable3(myName)
--創(chuàng)建表時(shí)在列的后面加上check關(guān)鍵字則添加了約束create table mytable3(myID int NOT NULL check (myID>0),myName nvarchar(32) NOT NULL)--新增check約束alter table mytable3 add constraint mycheck check(myName!='hh')--刪除check約束alter table mytable3 drop mycheck--創(chuàng)建表時(shí)在列的后面加上default關(guān)鍵字,只是這個(gè)地方SQL2008做得還不夠好,添加一行數(shù)據(jù)如果不填myName它會(huì)顯示NULL,關(guān)了再查看才為fyzcreate table mytable3(myID int NOT NULL check (myID>0),myName nvarchar(32) default'fyz')--刪除default約束alter table mytable3 drop constraint DF__mytable3__myName__2B3F6F97;--新增default約束alter table mytable3 add default'hhh' for myName;

   最后一個(gè)default約束我差不多搞了一上午才解決。本來(lái)我是按照菜鳥(niǎo)教程上寫(xiě)的,結(jié)果發(fā)現(xiàn)并不可以,百度到w3c又發(fā)現(xiàn)菜鳥(niǎo)其實(shí)是復(fù)制w3c的,而百度基本前兩頁(yè)頁(yè)又全是那些復(fù)制菜鳥(niǎo)或者根本沒(méi)有具體例子的。好了,首先是我要?jiǎng)h除default約束,前面我都是給約束起了名字的,刪除時(shí)可以直接刪除約束。在default約束這里我是直接在創(chuàng)建表時(shí)指定的,使用菜鳥(niǎo)上的drop default并不可以,最后知道如果我在創(chuàng)建表時(shí)就添加約束則會(huì)有一個(gè)默認(rèn)約束,數(shù)據(jù)庫(kù)系統(tǒng)會(huì)自動(dòng)給這個(gè)約束命名,可以使用下面的方法得到這個(gè)約束的名字:

select c.name from sysconstraints a inner join syscolumns b on a.colid=b.colid inner join sysobjects c on a.constid=c.id where a.id=object_id('mytable3') and b.name='myName'

得到名字后再去刪除。第二個(gè)問(wèn)題是我要修改約束,最后在微軟官網(wǎng)上才知道原來(lái)如果要修改default約束,必須要先刪除已有的約束然后再設(shè)置新的約束我不知道是不是版本問(wèn)題,菜鳥(niǎo)上是ALTER TABLE Persons ALTER COLUMN City DROP DEFAULT,但是在我的SQL 2008上并沒(méi)有什么用,最后看到一位前輩使用add才添加成功。

 4.create index、auto increment和null操作

  當(dāng)數(shù)據(jù)表的數(shù)據(jù)很多時(shí),我們可以利用索引在不讀取整個(gè)表的情況下更快地查找數(shù)據(jù)。我們可以在表中創(chuàng)建索引,它是看不到的,只能利用加速搜索/查詢(xún)。但是使用索引也有缺點(diǎn),更新一個(gè)包含索引的表比更新一個(gè)沒(méi)有索引的表花費(fèi)更多的時(shí)間,因?yàn)樗饕旧硪残枰隆S捎谒饕羞@個(gè)缺點(diǎn),因此一般較好的做法是僅僅在常常被搜索的列上使用索引。我在敲完教程上的索引后竟然發(fā)現(xiàn)沒(méi)有講如何使用索引,把教程上的例子敲完我會(huì)再去深入學(xué)習(xí)下索引。auto increment從名字可以看到是自增的意思,這樣可以保證在新記錄插入表中時(shí)生成一個(gè)唯一的數(shù)字。

--創(chuàng)建索引,可以使用重復(fù)的值create index myIdindex on mytable3(myId);--創(chuàng)建不允許有重復(fù)值,一個(gè)索引只能對(duì)應(yīng)這唯一的一行create unique index myuniqueIndex on mytable3(myId);--使用drop可以刪除索引、表、數(shù)據(jù)庫(kù)等drop index myIdindex on mytable3;drop index mytable3.myuniqueIndex;--tip:如果我們需要清空表里的數(shù)據(jù)而不刪除表本身truncate table myrank;--alter table可用于在已有的表中添加、刪除和修改列alter table mybook add bookOther nvarchar(32);alter table mybook alter column bookOther nvarchar(64);alter table mybook drop column bookOther;--設(shè)置auto-increment主鍵字段,identity是設(shè)置主鍵的關(guān)鍵字,第一個(gè)1表示從1開(kāi)始,第二個(gè)1表示每條記錄遞增1create table mytable4(myId int identity(1,1) primary key,myname nvarchar(16))

null代表未知數(shù)據(jù),在sql里我們不能用“=”來(lái)判斷是否為null,必須使用is null和is not null來(lái)進(jìn)行判斷。另外有時(shí)候我們需要對(duì)某一列的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,可是這個(gè)時(shí)候這列的某些數(shù)據(jù)還是null,這樣就無(wú)法完成操作。既然有這個(gè)需求那肯定是有解決方案的,sql里有一個(gè)isnull函數(shù),可將為null的某列的值設(shè)置一個(gè)默認(rèn)值。下面是sql語(yǔ)句:

insert into mytable4 values('hh');insert into mytable4 (myname) values (null);--查找為空的行和不為空的行select * from mytable4 where myname is null;select * from mytable4 where myname is not null;--isnull()函數(shù),這樣如果某行的myname為null,則會(huì)輸出fyzselect myId,ISNULL(myname,'fyz') as myaname from mytable4;

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
mysql基本命令總結(jié)
SQL 約束 (Constraints)
如何在sql server中設(shè)置兩個(gè)主鍵
SQL語(yǔ)句---創(chuàng)建表(約束的用法)
創(chuàng)建和使用約束
oracle學(xué)習(xí)筆記之約束
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服