久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

SQL結構化查詢語句

時間:2019-05-13 09:12:44下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《SQL結構化查詢語句》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《SQL結構化查詢語句》。

第一篇:SQL結構化查詢語句

SQL結構化查詢語句

一、數據定義功能

創建表:Createtable 表名(字段名……)修改表:Altertable表名

刪除表:Droptable表名

二、數據操縱功能

數據插入:Insertinto 表名values(…,…,)數據更新:Update表名Set表達式 Where 條件 數據刪除:DeleteFrom 表名Where 條件

三、查詢功能

SELECT*FROM表名

WHERE條件

ORDERBY 字段排序

GROUPBY 字段分組

函數:SUM()AVG()COUNT()MAX()MIN()去向:

INTOTABLE表

INTOCURSOR臨時表

INTOARRAY數組

第二篇:SQL查詢語句

SQL查詢語句

第一次:查詢(顯示)、條件、排序、空記錄

第二次:通配符、生成表、文件(記事本)、數組、臨時表,數學函數、分組、嵌套查詢

第三次:插入記錄、刪除記錄、更新記錄 第四次:超連接、新建(打開)數據庫、表的建立、表的刪除、第五次 表結構的修改,添加記錄 顯示同張芳同一天出生的學生的信息 格式:

1、查詢(顯示)記錄

顯示所有男學生的學號,姓名,性別 區分:字段、條件、表名

Select 字段名列表(*)from 表名; where 條件表達式;

into table(dbf)文件名;

into cursor 臨時表名;

into array 數組名;

to file 文件名;

order by 字段名列表(asc desc);

group by 字段名 having 條件;

顯示所有大于平均分的學生的學號、姓名 顯示同E4掙同樣工資的職工信息

Select * from 職工 where 工資=(select 工資 from 職工 where 職工號=”E4”)職工(倉庫號C(10),職工號 C(10),工資 N(10,2))

顯示所有工資大于1500的員工的倉庫號、職工號及所在的城市

2、插入記錄

Insert into 表名(字段名列表)values(記錄值)

3、刪除記錄

Delete from 表名 where 條件

4、更新記錄

Update 表名 set 字段名=記錄值; Where 條件

5、表的刪除

drop table 表名

6、表的建立

create table 表名(字段名 數據類型(寬度))

7、表結構的修改select * from 職工where 職工號!=“E4” AND 工資=(select 工資 from 職工 where 職工號=“E4”)

alter table 表名

1)增加字段

alter table student add 身份證號 c(10)

2)刪除字段

alter table student drop colum 身份證號

3)修改字段名

alter table student rename colum 出生日期 to 出生年月

4)增加字段有效性規則

alter table student alter 成績 set check 成績>=0 and 成績<=100;

error “成績輸入錯誤,成績應該在0-100之間”

5)刪除字段有效性規則

alter table student alter 成績 drop check 注意:

以上題目中用到的 SQL語句粘貼到計事本文件XY.TXT中(每行一條語句)。對兩個表操作的方法:

1)同時打開兩個表

select 倉庫.倉庫號,城市,職工號,工資 from 倉庫,職工;

where 職工.倉庫號=倉庫.倉庫號 and 工資=1250

2)超連接(內連接、左連接、右連接、全連

接)

內連接:只顯示符合條件的記錄

左連接:顯示符合條件的記錄及第一個表中不符合條件的記錄

右連接:顯示符合條件的記錄及第二個表中不符合條件的記錄

全連接:顯示符合條件的記錄及第一、二個表中不符合條件的記錄

成績表(score)

學號姓名課程名成績 2001張三計算機10 2003張四英語20 2001張三語言30 2005張三數據40 2003張四計算機50

Select sum(成績)from score group by 學號

Select sum(成績)from score group by 課程名

select 字段名列表(*)from 表名;where 條件;

order by 字段名列表 asc|desc;

into table(dbf)表名;

into array 數組名;

to file 文件名;

into cursor 臨時表名

題目練習

實現以下功能:在考生文件夾下,打開“陶的數據庫”的數據庫,并利用SQL語句在該數據庫中新建一個表:gongzi(職工號 c(4),實發工資 n(7,0)),將zhigong表中基本工資大于1330(含1330)的記錄存儲在gongzi表中,其中實發工資為:基本工資+加班費(白天20,晚上30),最后將所有的SQL語句保存到考生目錄下的sqlanswer.txt文件中(自行建立,一行一條語句)

open database 陶的數據庫

create table gongzi(職工號 c(4),基本工資 n(7,2))

select 職工號,基本工資+白班*20+晚班*30 from zhigong;where 基本工資>1350 into array xy

insert into gongzi from array xy

第三篇:Sql語句查詢

sql語句多表連接查詢

在程序開發過程中,不僅可以對單一數據表進行查詢,還可以進行多表查詢,用戶通過多表查詢從多個表中提取出需要的數據。

多表查詢可以分為內連接查詢、外連接查詢以及聯合查詢。

1.內連接查詢

連接查詢是指通過各個表之間共同列的關聯性查詢數據。連接查詢分為內連接查詢和外連接查詢。內連接是將兩個相互交叉的數據集合中重疊部分的數據行連接起來,返回表示兩個數據集合之間匹配連接關系的數據行。

可以在FORM子句中使用INNER JOIN?ON?建立內連接,也可以在WHERE子句中指定連接條件建立內連接,例如:

select a.UserName,b.BookName,b.Datetm from UserInfo as a inner join SellSheet as b on a.UserID= b.UserID

也可以用下面的語句實現。

select a.UserName,b.BookName,b.Datetm from UserInfo as a,SellSheet as b where a.UserID=b.UserID

2.外連接查詢

外連接是對內連接的擴充,除了將兩個數據集合中重疊部分以內的數據行連接起來之外,還可以根據要求返回左側或右側數據集合中非匹配的數據,即左外連接(LEFT OUTER JOIN)和右外連接(RIGHT OUTER JOIN)。

l左外連接LEFT OUTER JOIN

左外連接LEFT OUTER JOIN邏輯運算符除了返回兩個數據表中滿足連接條件的行,它還返回任何在后一個數據表中沒有匹配行的前一個數據表中的行。非匹配行的部分字段列作為空值返回。

l右外連接RIGHT OUTER JOIN

右外連接RIGHT OUTER JOIN是左外連接的反向連接。它除了返回兩個數據表中滿足連接條件的行,還返回任何在前一個數據表中沒有匹配行的后一個數據表中的行。非匹配行的部分字段列作為空值返回。

3.使用UNION進行聯合查詢

使用UNION運算符可以進行聯合查詢。UNION運算符連接多個SELECT語句,將兩個或更多查詢的結果組合為單個結果集,該結果集包含聯合查詢中所有查詢的全部行。使用UNION運算符遵循的規則如下:

(1)在使用UNION運算符組合的語句中,所有選擇列表的表達式數目必須相同(列名、算術表達式、聚集函數等)。

(2)在使用UNION組合的結果集中的相應列必須具有相同數據類型,或者兩種數據類型之間必須存在可能的隱性數據轉換,或者提供了顯式轉換。例如,在datetime數據類型的列和binary數據類型的列之間不能使用UNION運算符,除非提供了顯式轉換,而在money數據類型的列和int數據類型的列之間可以使用UNION運算符,因為它們可以進行隱性轉換。

(3)結果集中列的名字或者別名是由第一個SELECT語句的選擇列表決定的。

注意:對數據表進行聯合查詢時,結果集中行的最大數量是各表行數之“和”,而對數據表進行連接查詢時,結果集中行的最大數量是各表行數之“積”。

第四篇:SQL語句(百度查詢)

創建數據庫

創建之前判斷該數據庫是否存在

if exists(select * from sysdatabases where name='databaseName')

drop database databaseName

go

Create DATABASE database-name 刪除數據庫

drop database dbname 備份sql server

---創建備份數據的 device

USE master

EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_1.dat'

---開始備份

BACKUP DATABASE pubs TO testBack 創建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根據已有的表創建新表:

A:go

use 原數據庫名

go

select * into 目的數據庫名.dbo.目的表名 from 原表名(使用舊表創建新表)

B:create table tab_new as select col1,col2… from tab_old definition only 創建序列

create sequence SIMON_SEQUENCE

minvalue 1--最小值

maxvalue ***999999999999--最大值

start with 1--開始值

increment by 1--每次加幾

cache 20;刪除新表

drop table tabname 增加一個列

Alter table tabname add colname coltype 刪除一個列

Alter table tabname drop column colname 添加主鍵

Alter table tabname add primary key(col)

說明:刪除主鍵:Alter table tabname drop primary key(col)創建索引

create [unique] index idxname on tabname(col…。)刪除索引:drop index idxname on tabname

注:索引是不可更改的,想更改必須刪除重新建。創建視圖

create view viewname as select statement

刪除視圖:drop view viewname 簡單基本的sql語句

(1)數據記錄篩選:

sql=“select * from 數據表 where 字段名=字段值 order by 字段名 [desc]”

sql=“select * from 數據表 where 字段名 like '%字段值%' order by 字段名 [desc]”

sql=“select top 10 * from 數據表 where 字段名 order by 字段名 [desc]”

sql=“select * from 數據表 where 字段名 in('值1','值2','值3')”

sql=“select * from 數據表 where 字段名 between 值1 and 值2”

(2)更新數據記錄:

sql=“update 數據表 set 字段名=字段值 where 條件表達式”

sql=“update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式”

(3)刪除數據記錄:

sql=“delete from 數據表 where 條件表達式”

sql=“delete from 數據表”(將數據表所有記錄刪除)

(4)添加數據記錄:

sql=“insert into 數據表(字段1,字段2,字段3 …)values(值1,值2,值3 …)”

sql=“insert into 目標數據表 select * from 源數據表”(把源數據表的記錄添加到目標數據表)

(5)數據記錄統計函數:

AVG(字段名)得出一個表格欄平均值

COUNT(*;字段名)對數據行數的統計或對某一欄有值的數據行數統計

MAX(字段名)取得一個表格欄最大的值

MIN(字段名)取得一個表格欄最小的值

SUM(字段名)把數據欄的值相加

引用以上函數的方法:

sql=“select sum(字段名)as 別名 from 數據表 where 條件表達式”

set rs=conn.excute(sql)

用 rs(“別名”)獲取統計的值,其它函數運用同上。

查詢去除重復值:select distinct * from table1

(5)數據表的建立和刪除:

CREATE TABLE 數據表名稱(字段1 類型1(長度),字段2 類型2(長度)……)

幾個高級查詢運算詞

A:UNION 運算符 UNION 運算符通過組合其他兩個結果表(例如TABLE1 和TABLE2)并消去表中任何重復行而派生出一個結果表。當 ALL 隨UNION 一起使用時(即UNION ALL),不消除重復行。兩種情況下,派生表的每一行不是來自TABLE1 就是來自TABLE2。

B: EXCEPT 運算符

EXCEPT 運算符通過包括所有在TABLE1 中但不在TABLE2 中的行并消除所有重復行而派生出一個結果表。當ALL 隨EXCEPT 一起使用時(EXCEPT ALL),不消除重復行。

C:INTERSECT 運算符

INTERSECT 運算符通過只包括TABLE1 和TABLE2 中都有的行并消除所有重復行而派生出一個結果表。當ALL 隨INTERSECT 一起使用時(INTERSECT ALL),不消除重復行。

注:使用運算詞的幾個查詢結果行必須是一致的。使用外連接

A、left outer join:

左外連接(左連接):結果集既包括連接表的匹配行,也包括左連接表的所有行。

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

B:right outer join:

右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。

C:full outer join:

全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。編輯本段判斷對象是否存在 判斷數據庫是否存在

if exists(select* from sysdatabases wherename= '數據庫名')

dropdatabase[數據庫名] 判斷表是否存在

if not exists(select * from sysobjects where [name] = '表名' and xtype='U')

begin

--這里創建表

end 判斷存儲過程是否存在

if exists(select* from sysobjects whereid = object_id(N'[存儲過程名]')and OBJECTPROPERTY(id, N'IsProcedure')= 1)

dropprocedure[存儲過程名] 判斷臨時表是否存在

if object_id('tempdb..#臨時表名')isnot null

droptable#臨時表名 判斷視圖是否存在

--SQL Server 2000

IF EXISTS(SELECT* FROM sysviews WHEREobject_id = '[dbo].[視圖名]'

--SQL Server 2005 IF EXISTS(SELECT* FROM sys.views WHEREobject_id = '[dbo].[視圖名]' 判斷函數是否存在

if exists(select* from dbo.sysobjects whereid = object_id(N'[dbo].[函數名]')and xtype in(N'FN', N'IF', N'TF'))

dropfunction[dbo].[函數名] 獲取創建信息

SELECT[name],[id],crdate FROM sysobjects where xtype='U'

/*

xtype 的表示參數類型,通常包括如下這些 C = CHECK約束 D = 默認值或DEFAULT約束 F = FOREIGNKEY約束 L = 日志 FN = 標量函數 IF = 內嵌表函數 P = 存儲過程 PK = PRIMARYKEY約束(類型是K)RF = 復制篩選存儲過程 S = 系統表 TF = 表函數 TR = 觸發器U = 用戶表 UQ = UNIQUE約束(類型是K)V = 視圖 X = 擴展存儲過程 */ 判斷列是否存在

if exists(select* from syscolumns whereid=object_id('表名')and name='列名')

altertable表名dropcolumn列名 判斷列是否自增列

if columnproperty(object_id('table'),'col','IsIdentity')=1

print '自增列'

else

print '不是自增列'

SELECT* FROM sys.columns WHEREobject_id=OBJECT_ID('表名')

AND is_identity=1 判斷表中是否存在索引

if exists(select* from sysindexes whereid=object_id('表名')and name='索引名')

print '存在'

else

print '不存在 查看數據庫中對象

SELECT* FROM sysobjects WHEREname='對象名'

select * from table(所要查詢的表名)where coloum(條件)編輯本段提升 復制表

(只復制結構,源表名:a 新表名:b)(Access可用)

法一:select * into b from a where 1<>1

法二:select top 0 * into b from a 拷貝表

(拷貝數據,源表名:a 目標表名:b)(Access可用)

insert into b(x, y, z)select d,e,f from a;跨數據庫之間表的拷貝

(具體數據使用絕對路徑)(Access可用)insert into b(x, y, z)select d,e,f from a in ‘具體數據庫’ where 條件

例子:。.from b in '“&Server.MapPath(”.“&”data.mdb“ &”' where..子查詢

(表名1:a 表名2:b)

select a,b,c from a where a IN(select d from b 或者: select a,b,c from a where a IN(1,2,3)顯示文章最后時間

select a.title,a.username,b.adddate from table a,(select max(adddate)adddate from table where table.title=a.title)b 外連接查詢

(表名1:a 表名2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 在線視圖查詢

(表名1:a

select * from(Select a,b,c FROM a)T where t.a > 1;between的用法

between限制查詢數據范圍時包括了邊界值,not between不包括

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 數值1 and 數值2 in 的使用方法

select * from table1 where a [not] in(‘值1’,’值2’,’值4’,’值6’)

刪除主表沒有的信息

兩張關聯表delete from table1 where not exists(select * from table2 where table1.field1=table2.field1 四表聯查問題

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where.....日程安排提前五分鐘

SQL: select * from 日程安排 where datediff('minute',f開始時間,getdate())>5 一條sql 搞定數據庫頁

select top 10 b.* from(select top 20 主鍵字段,排序字段 from 表名 order by 排序字段 desc)a,表名 b where b.主鍵字段= a.主鍵字段 order by a.排序字段

前10條記錄

select top 10 * from table1 where 范圍 選擇排名

選擇在每一組b值相同的數據中對應的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產品分析,按科目成績排名,等等。)

select a,b,c from tablename ta where a=(select max(a)from tablename tb where tb.b=ta.b)

包括所有在TableA 中但不在TableB和TableC 中的行并消除所有重復行而派生出一個結果表

(select a from tableA except(select a from tableB)except(select a from tableC)隨機取出10條數據

select top 10 * from tablename order by newid()隨機選擇記錄

select newid()刪除重復記錄

Delete from tablename where id not in(select max(id)from tablename group by col1,col2,...)列出數據庫里的表名

select name from sysobjects where type='U' 列出表里的所有的

select name from syscolumns where id=object_id('TableName')列示排列

列示type、vender、pcs字段,以type字段排列,case可以方便地實現多重選擇,類似select 中的case。

select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end)FROM tablename group by type

顯示結果:

type vender pcs

電腦A 1

電腦A 1

光盤B 2

光盤A 2

手機B 3

手機C 3 初始化表table1

TRUNCATE TABLE table1 選擇從10到15的記錄

select top 5 * from(select top 5 * from(select top 15 * from table order by id asc)table_別名 order by id desc)table_2 order by id

數據類型轉換

declare @numid int

declare @id varchar(50)

set @numid=2005

set @id=convert(varchar,@numid)

通過上述語句完成數據類型Int轉換成varchar,其他轉換類似,可參看convert函數

編輯本段技巧 1=1,1=2的使用 在SQL語句組合時用的較多

?where 1=1?是表示選擇全部 ?where 1=2?全部不選,如:

if @strWhere!='

begin

set @strSQL = 'select count(*)as Total from [' + @tblName + '] where ' + @strWhere

end

else

begin

set @strSQL = 'select count(*)as Total from [' + @tblName + ']'

end

我們可以直接寫成

set @strSQL = 'select count(*)as Total from [' + @tblName + '] where 1=1 and '+ @strWhere 收縮數據庫

--重建索引

DBCC REINDEX

DBCC INDEXDEFRAG

--收縮數據和日志

DBCC SHRINKDB

DBCC SHRINKFILE 壓縮數據庫

dbcc shrinkdatabase(dbname)

轉移數據庫給新用戶以已存在用戶權限

exec sp_change_users_login 'update_one','newname','oldname'

go 檢查備份集

RESTORE VERIFYONLY from disk='E:dvbbs.bak' 修復數據庫

Alter DATABASE [dvbbs] SET SINGLE_USER

GO

DBCC CHECKDB('dvbbs',repair_allow_data_loss)WITH TABLOCK

GO

Alter DATABASE [dvbbs] SET MULTI_USER

GO 日志清除

SET NOCOUNT ON

DECLARE @LogicalFileName sysname,@MaxMinutes INT,@NewSize INT

USE tablename--要操作的數據庫名

Select @LogicalFileName = 'tablename_log',--日志文件名

@MaxMinutes = 10,--Limit on time allowed to wrap log.@NewSize = 1--你想設定的日志文件的大小(M)

--Setup / initialize

DECLARE @OriginalSize int

Select @OriginalSize = size

FROM sysfiles

Where name = @LogicalFileName

Select 'Original Size of ' + db_name()+ ' LOG is ' +

CONVERT(VARCHAR(30),@OriginalSize)+ ' 8K pages or ' +

CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+ 'MB'

FROM sysfiles

Where name = @LogicalFileName

Create TABLE DummyTrans

(DummyColumn char(8000)not null)

DECLARE @Counter INT,@StartTime DATETIME,@TruncLog VARCHAR(255)

Select @StartTime = GETDATE(),@TruncLog = 'BACKUP LOG ' + db_name()+ ' WITH TRUNCATE_ONLY'

DBCC SHRINKFILE(@LogicalFileName, @NewSize)

EXEC(@TruncLog)

--Wrap the log if necessary.WHILE @MaxMinutes > DATEDIFF(mi, @StartTime, GETDATE())--time has not expired

AND @OriginalSize =(Select size FROM sysfiles Where name = @LogicalFileName)

AND(@OriginalSize * 8 /1024)> @NewSize

BEGIN--Outer loop.Select @Counter = 0

WHILE((@Counter < @OriginalSize / 16)AND(@Counter < 50000))

BEGIN--update

Insert DummyTrans VALUES('Fill Log')

Delete DummyTrans

Select @Counter = @Counter + 1

END

EXEC(@TruncLog)

END

Select 'Final Size of ' + db_name()+ ' LOG is ' +

CONVERT(VARCHAR(30),size)+ ' 8K pages or ' +

CONVERT(VARCHAR(30),(size*8/1024))+ 'MB'

FROM sysfiles

Where name = @LogicalFileName

Drop TABLE DummyTrans

SET NOCOUNT OFF 更改某個表 exec sp_changeobjectowner 'tablename','dbo' 存儲更改全部表

Create PROCEDURE dbo.User_ChangeObjectOwnerBatch

@OldOwner as NVARCHAR(128),@NewOwner as NVARCHAR(128)

AS

DECLARE @Name as NVARCHAR(128)

DECLARE @Owner as NVARCHAR(128)

DECLARE @OwnerName as NVARCHAR(128)

DECLARE curObject CURSOR FOR

select 'Name' = name,'Owner' = user_name(uid)

from sysobjects

where user_name(uid)=@OldOwner

order by name

OPEN curObject

FETCH NEXT FROM curObject INTO @Name, @Owner

WHILE(@@FETCH_STATUS=0)

BEGIN

if @Owner=@OldOwner

begin

set @OwnerName = @OldOwner + '.' + rtrim(@Name)

exec sp_changeobjectowner @OwnerName, @NewOwner

end

--select @name,@NewOwner,@OldOwner

FETCH NEXT FROM curObject INTO @Name, @Owner

END

close curObject

deallocate curObject

GO SERVER中循環寫入數據

declare @i int

set @i=1

while @i<30

begin

insert into test(userid)values(@i)

set @i=@i+1

end 在SQL Server中有5種約束:

主鍵約束(primary key constraint)唯一性約束(unique constraint)檢查約束(check constraint)缺省約束(default constraint)

外部鍵約束(foreign key constraint)SQL SERVER中,(1)對于基本表的約束分為列約束和表約束

約束是限制用戶輸入到表中的數據的值的范圍,一般分為列級約束與表級約束。

列級約束有六種:主鍵Primary key、外鍵foreign key、唯一 unique、檢查 checck、默認default、非空/空值 not null/ null

表級約束有四種:主鍵、外鍵、唯

一、檢查

列約束是對某一個特定列的約束,包含在列定義中,直接跟在該列的其他定義之后,用空格分隔,不必指定列名;

表約束與列定義相互獨立,不包括在列定義中,通常用于對多個列一起進行約束,與列定義用’,’分隔,定義表約束時必須指出要約束的那些列的名稱。完整性約束的基本語法格式為:

[ CONSTRAINT <約束名> ] <約束類型> 約束名:約束不指定名稱時,系統會給定一個名稱。(2)列級約束與表級約束的區別

如果完整性約束涉及到該表的多個屬性列,必須定義在表級上,否則既可以定義在列級也可以定義在表級。簡而言之:

列級約束:列級約束是行定義的一部分,只能應用于一列上。

表級約束:表級約束是獨立于列的定義,可以應用在一個表中的多列上。(3)列級約束與表級約束在SQL中的用法(即如何在SQL中定義約束)在創建表時定義約束:

CREATE TABLE table_name

({-------列級約束定義

|column_name AS computed_column_expression-------計算列定義

|------表級約束定義

}[,….n])一個約束定義為列級約束還是表級約束???

根據實際需要和設計者思路確定。如primary key,當只涉及到一列時,定義為列級約束;當涉及到多列時,則定義為表級約束。

Prinmary key定義為列級約束時,相應SQL語句: Stu_id上建立的主鍵pk_1為列級約束 CREATE TABLE student(Stu_id int constraint pk_1 primary key,Stu_name varchar(8), ….)當定義為表級約束時,相應SQL語句: CREATE TABLE student(Stu_id int NOT NULL, Stu_id上建立的主鍵pk_1為的表級約束 Stu_name varchar(8), Constraint pk_1 primary key(Stu_id),….)各約束具體說明: 主鍵約束

PRIMARY KEY約束 PRIMARY KEY約束用于定義基本表的主鍵,起唯一標識作用,其值不能為NULL,也不能重復,以此來保證實體的完整性。PRIMARY KEY與UNIQUE約束類似,通過建立唯一索引來保證基本表在主鍵列取值的唯一性,但它們之間存在著很大的區別:

①在一個基本表中只能定義一個PRIMARY KEY約束,但可定義多個UNIQUE約束; ②對于指定為PRIMARY KEY的一個列或多個列的組合,其中任何一個列都不能出現空值,而對于UNIQUE所約束的唯一鍵,則允許為空。

注意:不能為同一個列或一組列既定義UNIQUE約束,又定義PRIMARY KEY約束。PRIMARY KEY既可用于列約束,也可用于表約束。PRIMARY KEY用于定義列約束時,其語法格式如下:

CONSTRAINT <約束名> PRIMARY KEY PRIMARY KEY用于定義表約束時,即將某些列的組合定義為主鍵,其語法格式如下:

[CONSTRAINT <約束名>]S PRIMARY KEY(<列名>[{<列名>}])2.唯一性(UNIQUE)約束

UNIQUE約束用于指明基本表在某一列或多個列的組合上的取值必須唯一。

定義了UNIQUE約束的那些列稱為唯一鍵,系統自動為唯一鍵建立唯一索引,從而保證了唯一鍵的唯一性。

唯一鍵允許為空,但系統為保證其唯一性,最多只可以出現一個NULL值。UNIQUE既可用于列約束,也可用于表約束。UNIQUE用于定義列約束時,其語法格式如下:

[CONSTRAINT <約束名>] UNIQUE 唯一性約束用于指定一個或者多個列的組合的值具有唯一性,以防止在列中輸入重復的值。當使用唯一性約束時,需要考慮以下幾個因素: ①使用唯一性約束的字段允許為空值。②一個表中可以允許有多個唯一性約束。③可以把唯一性約束定義在多個字段上。

④唯一性約束用于強制在指定字段上創建一個唯一性索引。⑤缺省情況下,創建的索引類型為非聚簇索引。

unique約束是用來確保不受主鍵約束列上的數據的唯一性.unique與primary key的區別在于:(1)unique約束主要用于非主鍵的一列或多列上要求數據唯一.(2)unique約束允許該列上存在NULL值,而主鍵決不允許出現.(3)可以在一個表創建多個unique約束,而在一個表上只能夠設置一個主鍵 3.檢查約束

CHECK約束用來檢查字段值所允許的范圍,如,一個字段只能輸入整數,而且限定在0-100的整數,以此來保證域的完整性。

CHECK既可用于列約束,也可用于表約束,其語法格式為:

[CONSTRAINT <約束名>] CHECK(<條件>)一個列級檢查約束只能與限制的字段有關;一個表級檢查約束只能與限制的表中字段有關。一個表中可以定義多個檢查約束。

每個CREATE TABLE語句中每個字段只能定義一個檢查約束。

當執行INSERT語句或者UPDATE語句時,檢查約束將驗證數據。檢查約束中不能包含子查詢。4.缺省約束

使用缺省約束時,應該注意以下幾點: 每個字段只能定義一個缺省約束。

如果定義的缺省值長于其對應字段的允許長度,那么輸入到表中的缺省值將被截斷。不能加入到帶有IDENTITY屬性或者數據類型為timestamp的字段上。如果字段定義為用戶定義的數據類型,而且有一個缺省綁定到這個數據類型上,則不允許該字段有缺省約束。5.外部鍵約束

外部鍵約束用于強制參照完整性,提供單個字段或者多個字段的參照完整性。FOREIGN KEY約束指定某一個列或一組列作為外部鍵,其中,包含外部鍵的表稱為從表(參照表),包含外部鍵所引用的主鍵或唯一鍵的表稱主表(被參照表)。

系統保證從表在外部鍵上的取值要么是主表中某一個主鍵值或唯一鍵值,要么取空值。以此保證兩個表之間的連接,確保了實體的參照完整性。FOREIGN KEY既可用于列約束,也可用于表約束,其語法格式為:

CONSTRAINT <約束名>] FOREIGN KEY

REFERENCES <主表名>(<列名>[{<列名>}])當使用外部鍵約束時,應該考慮以下幾個因素: ①外部鍵約束提供了字段參照完整性。

②外部鍵從句中的字段數目和每個字段指定的數據類型必須和REFERENCES從句中的字段相匹配。

③外部鍵約束不能自動創建索引,需要用戶手動創建。

④用戶想要修改外部鍵約束的數據,必須有對外部鍵約束所參考表的SELECT權限或者REFERENCES權限。

⑤參考同一表中的字段時,必須只使用REFERENCES子句,不能使用外部鍵子句。⑥一個表中最多可以有31個外部鍵約束。⑦在臨時表中,不能使用外部鍵約束。⑧主鍵和外部鍵的數據類型必須嚴格匹配。6.NULL 約束

(1)NULL/NOT NULL 是否允許該字段的值為NULL。NULL值不是0也不是空白,更不是填入字符串?NULL?,而是表示?不知道?、?不確定?或?沒有數據?的意思。

當某一字段的值一定要輸入才有意義的時候,則可以設置為NOT NULL。如主鍵列就不允許出現空值,否則就失去了唯一標識一條記錄的作用 只能用于定義列約束,其語法格式如下:

[constraint <約束名> ][null|not null]

第五篇:SQL 結構化查詢語言速學寶典

第二章

create database db_sqlserver2--創建db_sqlserver2數據庫on

(name= db_sqlserver2_data,--文件的邏輯名稱

filename='e:mydatadb_sqlserver2_data.mdf',--數據庫文件要保存路徑及文件名

size=4,--文件的大小

maxsize=10,--文件可增大到的最大大小filegrowth=10%--文件的自動增量)

log on

(name= db_sqlserver2_log,filename='e:mydatadb_sqlserver12_log.ldf',size=1,maxsize=6,filegrowth=1)

create database db_sqlserver3

on

(name=db_sqlserver3_data,--第一個數據文件的邏輯名稱filename='e:mydatadb_sqlserver31_data.mdf',size=4,maxsize=10,filegrowth=10%),(name=Mydatabase22_data,--第二個數據文件的邏輯名稱filename='e:mydatadb_sqlserver32_data.mdf',size=3,maxsize=10,filegrowth=1)

log on

(name=Mydatabase21_log,--第一個日志文件的邏輯名稱filename='e:mydatadb_sqlserver31_log.ldf',size=1,maxsize=6,filegrowth=1),(name=Mydatabase22_log,--第二個日志文件的邏輯名稱filename='e:mydatadb_sqlserver32_log.ldf',size=1,maxsize=6,filegrowth=10%)

下載SQL結構化查詢語句word格式文檔
下載SQL結構化查詢語句.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    無憂SQL語句(除查詢)

    【64一1】用命令新建一個名為“外匯”的數據庫,并將該命令存儲于one.txt中; CREATE DATABASE 外匯 【22一3】使用SQL語句創建一個名為"分組情況表"的自由表,"分組情況表"有兩個......

    SQL Server查詢語句學習心得

    SQL Server查詢語句學習心得 李臻敏 摘要:數據庫技術已經廣泛地滲透到各個領域,數據庫應用技術也已經成為計算機必修課程,SQL Server2005是Microsoft 公司推出的數據庫服務產品......

    SQL查詢語句學習筆記

    問題描述: 為管理崗位業務培訓信息,建立3個表: S (SID,SNAME,SDEPT,SEX,AGE) SID,SNAME,SDEPT,SEX,AGE 分別代表學號、學員姓名、所屬部門、學員性別、學員年齡 C (CID,CNAME......

    sql常用語句

    //創建臨時表空間create temporary tablespace test_temp tempfile 'E:oracleproduct10.2.0oradatatestservertest_temp01.dbf'size 32m autoextend on next 32m maxs......

    SQL語句大全

    SQL練習一、 設有如下的關系模式, 試用SQL語句完成以下操作: 學生(學號,姓名,性別,年齡,所在系) 課程(課程號,課程名,學分,學期,學時) 選課(學號,課程號,成績) 1. 求選修了課程號為“C2”......

    SQL語句

    SQL語句,用友的SQL2000,通過查詢管理器寫的語句 1、查詢 2、修改 3、刪除 4、插入表名:users 包含字段:id,sname,sage 查詢 select * from users查詢users表中所有數據 select i......

    常用SQL語句

    一、創建數據庫 create database 數據庫名 on( name='數據庫名_data', size='數據庫文件大小', maxsize='數據庫文件最大值', filegrowth=5%,//數據庫文件的增長率 filename......

    sql語句

    簡單基本的sql語句 幾個簡單的基本的sql語句 選擇:select * from table1 where范圍 插入:insert into table1(field1,field2) values(value1,value2) 刪除:delete from table1......

主站蜘蛛池模板: 和黑人邻居中文字幕在线| 亚洲自偷自偷偷色无码中文| 国产女厕偷窥系列在线视频| 国产精品高潮呻吟久久影视a片| 国产精品欧美久久久久久日本一道| 熟妇的荡欲色综合亚洲| 最近中文av字幕在线中文| 免费国产va在线观看| 无遮挡十八禁污污网站在线观看| 国产成熟人妻换╳╳╳╳| 久久综合网欧美色妞网| 亚洲色欲在线播放一区| 放荡的少妇2欧美版| 国产精品亚洲片在线| 秋霞国产午夜伦午夜福利片| 国产suv精品一区二区88l| 精品久久久久久无码不卡| 亚洲精品国产精品乱码不卡| 亚洲深深色噜噜狠狠爱网站| 午夜福利视频一区二区手机免费看| 久久国产劲爆∧v内射| 亚洲色欲色欲www在线看小说| 99e热久久免费精品首页| 亚洲人成网址在线播放小说| 强行糟蹋人妻hd中文字幕| 国产亚洲综合欧美视频| 日韩国产精品无码一区二区三区| 国产精品制服丝袜无码| 内射干少妇亚洲69xxx| 国产精品无码a∨精品| 国产精品成人无码久久久久久| 欧美黑人又粗又大久久久| 一本久久a久久精品亚洲| 亚洲国产精品一区二区制服| 天天爽夜夜爽人人爽一区二区| ,亚洲AV午夜精品无码专区| 国产成 人 综合 亚洲网站| 免费高清无码| 精品国产情侣高潮露脸在线| 亚洲av成人无码精品电影在线| 精品久久久久中文字幕app|