Click here to load reader

第 4 章 数据表的创建与操作

  • Upload
    norris

  • View
    63

  • Download
    0

Embed Size (px)

DESCRIPTION

第 4 章 数据表的创建与操作. 4.1 数据类型. 4.2 运算符与表达式. 4.3 系统内置函数. 4.4 用企业管理器创建数据表及约束对象. 4.5 用 T-SQL 语句创建数据表及约束对象. 4.6 查看表信息、输入数据、编辑和删除记录. 4.7 数据表及约束对象的删除. 4.8 数据库应用实例 《 电脑器材销售管理 》 的数据表. 数据表是数据库中最重要的对象,数据库的 全部数据都存储在不同的数据表中,因而数据表 - PowerPoint PPT Presentation

Citation preview

  • 4

  • SQL ServerSQL Server diannaoxs

  • 4.1 1 binary(n) n8K1n8000 n0 n SQL Server2673 Image231-1Excel.GIF.BMP.JPEG4.1.12 varbinary(n) n8K1n8000 n0 SQL Serverbinaryvarbinary image

  • 123410110xnnINSERTUPDATEn4-11aa2bb3cc44050x1aa2bb3cc4 binary(6)060x1aa2bb3cc400 varbinary(6)0x1aa2bb3cc4 binary(4)varbinary(4)0x1aa2bb3c

  • SQL Server8441 TinyInt 10-2552 smallInt 2-3276832767-215~215-14 Bigint 8-263263-1

    5 real47-3.40E+381.79E+38

    4.1.23 Int Integer 4-2147483648-2147483647-231-231-18 Decimal(p,s) Dec(p,s)Numeric(p,s)Decimal(p,s)identityNumeric(p,s)Decimal(p,s)identity 6 float(n)n1-247-3.40E+381.79E+384n25-5315-1.79E+3081.79E+3088 7 Numeric(p,s) .pp1p38 38-10381038-1ss0spnumericidentitynumeric: p 1 - 9 5 10-19 9 20-28 13 29-38 17

  • 4.1.3 Char(n)1n1n8000 nn2n1n8000 n Varchar Varchar(n)3Text231-12GB8000Text Text SQL ServerChar(n)Varchar(n)TextASC

  • ASC12CharVarchar1nnINSERTUPDATEn4-2abcdABCD1216 char(20) abcdABCD varchar(20) abcdABCD char(10)varchar(10) abcdABCD

  • 4.1.4 Char(n)1n1n8000 nn2n1n8000 n Varchar Varchar(n)3Ntext230-1/2 Ntext Unicode2127ASC SQL ServerNchar(n)Nvarchar(n)Ntext

  • n2*nNcharNvarcharn12nnINSERTUPDATEn4-3abcdABCD1224 Nchar(14) abcdABCD Nvarchar(14) abcdABCD Nchar(10)Nvarchar(10) abcdABCD

  • 4.1.5 /1/ Smalldatetime 4190011207966 SQL Server/ /SQLServer SQL ServerSmalldatetimeDatetime/

    2/ Datetime8175311999912310.001s SQL ServerDatetimeSmalldatetime00:00:00--//--//--//--//----

  • 4.1.6 1 Smallmoney 42222-214748.3648+214748.3647SQL ServerSmallmoneyMoney2 Money 82444-263263-1 MoneySmallmoney$$ $222.222 , -333.333$

  • 4.1.7 bit01NULL()18816201SQL Server 4.1

  • 4.1.8 1Timestamp 2Uniqueidentifier 16SQL ServerCPUGlobally Unique IdentifierGUID3sql_variant timestampSQL Server4table

  • 4.1.9 TextNtextImageSQL Server 7.0 SQL Server 2000 sp_tableoption sp_tableoption '','text in row','TRUE|FALSE'

  • TRUE24-70002564-4examplebin_1TEXTbin_2NTEXTbin_3ImageCREATE TABLE example(bin_1 text,bin_2 ntext,bin_3 ntext Image)Go /* 1000 */sp_tableoption 'example', 'text in row', 'TRUE'sp_tableoption 'example ','text in row', '1000' /* Mytable */sp_tableoption 'Mytable' , 'text in row', 'FALSE'

  • 4.1.10 DECLARE { @ [()] } [ n ] DECLARE @ x int , @s decimal(8.4) @GO SET @= PRINT SQLGOGOGO 78T-SQL

  • 4.2 4.2.1 +()-()*()/()%()4.2.2SQLTRUE FALSE UNKNOWNNULL NULL0NULLUNKNOWNUNKNOWNSQLIS NULLNULL NULL = truefalseunknown SQL Server 20007

  • 1>()>=()< ()()! 500 500TRUE500FALSE ->=/2

  • 2not () and () or () not 1 and 2 1 or 2 not > 500 500 =1000 1000 =500 or =1000 5001000UNKNOWN() TRUE UNKNOWN FALSEAND TRUE AND UNKOWN UNKOWNUNKOWN AND UNKOWN UNKOWNFALSE AND UNKOWN FALSEORTRUE OR UNKOWN TRUEUNKOWN OR UNKOWN UNKOWNFALSE OR UNKOWN UNKOWNNOT NOT TRUE FALSE NOT UNKOWN UNKOWN NOT FALSE TRUE

  • 3[not] between and [not] between and between and >= and
  • 4[not] in ( ) [not] in ( 1, 2, , n ) in ( ) Not in ( ) X in (135) X=1 or X=3 or X=5 not X in (135) X1 and X3 and X5

  • 51 ANY | ALL ANYinINANYinANY ANY () ALL () ANY() ALL() SQL-92SOMESOMEANY 2 [not] exists [not] existsexists ANY | ALL[not] exists5

  • 6[not] is null [not] is null is nullNULL not is nullNULL NULL = = UNKNOWN IS NULL

  • 7[not] like [not] like 1%2_3[abcd]4[^abc]0 like A% A like %AB AB like _ _A_ 3A like A_BC ABC like A[ABC]% AABC like A[^ABC]%AABCABC 5%_[ ] Xabc'[xyz]''%xyz''x_yz''xyzw'%like %% SQLwherewhereescape

  • 4.2.3T-SQL+||& 1 + 2 ABC+EFG ABCEFG ABC++EFG ABCEFG

  • 4.3 SQL7 SQLANSISQL T-SQLlllll5 SELECT

  • 4.3.2 4.3lxlAlAchar(n)varchar(n)nchar(n)nvarchar(n)binary(n)varbinary(n)imagetextntextlA len('this is a book')14 substring(SQL Server 2000,3,4)314SQ

  • 4.3.3 4.4 l xlDlD SET DATEFORMAT()lD getdate() 03 16 2006 4:35PM year(getdate()) 2006 year('2006-01-02') 2006 dateadd(dd,20,'2006-3-16')2004 5 2006 12:00AM datediff(yy,'1985-3-16',getdate())21 datediff()

  • 4.3.4 4.5 lSQL ServerllCast()lConvert()Style datetimesmalldatetime Realfloat(p) Smallmoneymoney style4.6Style

  • 4-5Print cast( year('1980-3-7') as char(4) ) + '' +cast(datediff(yy,'1980-3-7',getdate()) as char(2) ) + '' 198025

  • 4-6convertset dateformat mdy --declare @d datetime,@r real,@m money --set @d='11/20/2002 10:10:36 AM'set @r=268886set @m=9635225.3685print convert(varchar(30),@d,108) -- 10:10:36print convert(varchar(30),@d,111) -- 2002/11/20print convert(varchar(30),@d,120) -2002-11-20 10:10:36print convert(varchar(20),@r, 0) -- 268886print convert(varchar(20),@r, 1) --2.6888600e+005print convert(varchar(22),@r, 2)2.688860000000000e+005 print convert(varchar(25),@m, 0) -- 9635225.37print convert(varchar(25),@m, 1) -- 9,635,225.37print convert(varchar(25),@m, 2) -- 9635225.3685go

  • 4.4 4.4.1 diannaoxs4.7 1 Field8l1NFlIDl

    2 lID l2NF

  • 4.4.2 4.8 SQL Server 4.9

  • 4.4.3 1024 8060textNtextimage 20SQL Server 2000

  • 4-1 4.9diannaoxs1 diannaoxs 4-1

  • 24-2

  • 14.9l()128l ll 2lllNumeric(p,s)Decimal(p,s)psl (/)(identity)bigint, int, smallintl()200603001l1

  • 3 TABLE14-3

  • 4.4.4 SQL1

    2

    3

    5

    467

  • 4-5

  • 4.4.5 T-SQL //CHECK4-6

    /

  • 1 4-7 /CHECK//CHECKl lll///lCHECK4-2 diannaoxsn ID5nn10n SQL

  • 2 IDIDID4-6 3 ////4-8 123UNIQUE4IX_

    (1)

    (4)

    (2)

    (3)

  • 4 4-912345u uu6

    (1)

    (4)

    (2)

    (5)

    (3)

  • 5CHECK CHECK10 CHECK4-10 12bit1001bit011 =0 or =134CHECK5 CHECKCHECK

    (1)

    (3)

    (2)

    (4)

  • 6 CHECKlllCHECK uCHECK@u CHECK820065%

  • 4-3 ID5 diannaoxs4-11

  • nn5 @x like [0-9][0-9][0-9][0-9][0-9]n u @u @x like [0-9][0-9][0-9][0-9][0-9] 5

  • 4-4 20060 diannaoxs4-12 nn@x >= 0n

  • 7 4-3ID diannaoxs4-13

  • l UDTl4-14

  • nnIDn>>
  • 8 T-SQL4-5 4-15 diannaoxsnn

  • 4-6 20062006getdate() diannaoxs4-16nn getdate()n u2006u

  • 9 4-17 UDTl4-18nn>>n

  • 4-7 1.22diannaoxs14.10l 4l l l0l 024-2034nCHECKn like '[0-9][0-9][0-9][0-9]'n 444-4nnn nn

  • 4-8 1.25diannaoxs2006 120064.11 l11l l l l 0l 00l 220064-21 11

  • 3nn2006nn2006nn44-4ndiannaoxsn2006>>n

  • 500n n0@x>0n0n0nn 64-7nn2006n>>n

  • 4.5 T-SQL 4.5.1CREATE TABLE 1 [()] [ identity( ,) ][ null | not null ]l (),l Identitylnull|not null() 2 [constraint ] primary key [()] [constraint ] unique [()] [constraint ] [foreign key [()]] references () [constraint ] check() [constraint ] default llll CREATE TABLE ({ }[, n]) l ll1024

  • 4-9 1.23SQLdiannaoxs14.12 l lID4l l -2SQL Use diannaoxs -- diannaoxs CREATE TABLE -- ( ID Char (4) not null primary key check(ID like [a-zA-Z0-9][a-zA-Z0-9] [a-zA-Z0-9][a-zA-Z0-9]), Nvarchar(15) not null , Nvarchar(20) not null unique , Char(15) not null unique , Varchar(8) -- null )l ID44l uniquel SQL

  • 3SQLF54-22diannaoxs 4-23

  • 4.5.2ALTER TABLE SQLALTER TABLE ALTER TABLE add [()] [null|not null] [default ] | alter column [()][null|not null] | drop column [ , n ] | add constraint { } [ , n ] [ FOR ] | drop constraint [ , n ] | nocheck constraint | check constraint | Disable trigger | Enable trigger ALTER TABLE

  • 1addALTER TABLE add [()][ null| not null] [ default ] l l4-7char(13)13 USE diannaoxs ALTER TABLE add char(13) not null default '00000000' alter column

  • alter column ALTER TABLE alter column [()][null|not null]ll4-820null USE diannaoxs ALTER TABLE alter column char(20) 2alter column

  • 3add constraintadd constraint ALTER TABLE add constraint {[FOR ]}[,n ]l lFORFORll u primary key() u unique() u foreign key() references () u check() u default

  • 4-10 USE diannaoxs ALTER TABLE add constraint unique() FOR 4-9 0531-12345678 ALTER TABLE add constraint unique(), default 0531-12345678 FOR

  • 4nocheck|check constraint nocheck constraintcheck constraint ALTER TABLE nocheck constraint -- ALTER TABLE check constraint -- 04-10 ALTER TABLE nocheck constraint ALTER TABLE check constraint

  • 5drop constraintdrop constraint ALTER TABLE drop constraint [ , n ]6drop columndrop column ALTER TABLE drop column [ , n ] 4-11 USE diannaoxs ALTER TABLE drop constraint -- ALTER TABLE drop column --

  • 4.5.3T-SQL1SQL1CREATE RULE CREATE RULE AS @CREATE RULE 2 sp_bindrule [ EXECUTE ] sp_bindrule , '.| sp_unbindrule [ EXECUTE ] sp_unbindrule .|textimage

  • 4-11 char(15)8- USE diannaoxs -- diannaoxs GO CREATE RULE -- AS @x like [-0-9][-0-9][-0-9][-0-9][-0-9] [-0-9][-0-9][-0-9]% GO EXEC sp_bindrule , '. 8-%8

  • 4-12 20060SQL USE diannaoxs -- diannaoxs EXEC sp_unbindrule '2006.' EXEC sp_bindrule '0' , '2006.'4-24

  • 2SQL1CREATE DEFAULT CREATE DEFAULT AS llllCREATE DEFAULT2 sp_bindefaultsp_unbindefault [EXECUTE] sp_bindefault , . | [EXECUTE] sp_unbindefault . | lIDENTITYllsp_bindefault01

  • 4-12 char(15) USE diannaoxs GO CREATE DEFAULT AS 0000-0000-0000 GO EXEC sp_bindefault , .

  • 4-13 SQL2006 USE diannaoxs EXEC sp_unbindefault 2006. EXEC sp_bindefault , 2006.4-25

  • 4-13 1.24SQLdiannaoxs2006120064.12lll ll0lIDl 22006SQL Use diannaoxs CREATE TABLE 2006 ( BigInt identity(1,1) not null primary key, Smalldatetime not null,-- Char(4) not null foreign key references (), Int not null check( >0 ), Smallmoney not null, -- ID Char not null -- )

  • l2006l 200600l 0ID134-26

  • 4llSQL SQL USE diannaoxs ALTER TABLE 2006 add Varchar(8) -- ALTER TABLE 2006 -- alter column Varchar(8) not null ALTER TABLE 2006 -- add constraint foreign key() references () 4-27

  • 5 EXEC sp_bindefault , 2006. 60 EXEC sp_bindrule '0', '2006.' 7ID4IDSQL USE diannaoxs ALTER TABLE 2006 --6not null alter column ID Char(4) not null ALTER TABLE 2006 -- add constraint foreign key(ID) references (ID)

  • 4.6 4.6.111 4-29 4-30

  • 2 /CHECK34-3120062006

  • 4 4-32

  • 2T-SQLsp_help[ EXECUTE ] sp_help []sp_help sp_help 4-33

  • 3

  • 4.6.2 SQLINSERT 2006 2006

  • 14-141.22l 4ll0 4-35EXCEL4-36

  • 4-37

  • 2INSERT 1INSERT VALUES INSERT [INTO] [()] VALUES () lINSERT VALUESl INTOllNULLl NULLNULLNULLldefaultll

  • 4-15 INSERTNULL INSERT INTO (, , , , ) VALUES (1003FZ5500) defaultNULL CPU INSERT VALUES (1003FZDefault5500default) INSERT (, , , ) VALUES ( '3002', 'CPU', 'SY8800', '')

  • 4-16 1.23SQL NULLdefault00000-00000-0000 USE diannaoxs INSERT VALUES ( 'SDLC', '', '1008', '1002-305-6', '' ) INSERT VALUES ( 'BJFZ', '', '235', '20006786570', '' ) INSERT VALUES ( 'BJLX', '', '6068-6', '11204567765', '' ) INSERT VALUES ( 'SHSC', '', '8225', '336-448-669', '' ) INSERT VALUES ( 'SHKD', '', '5925', '2246800012', '' ) INSERT VALUES ( 'SDKJ', '', '9415', default , NULL ) INSERT4-39

  • 4-17 1.214.7SQLUSE diannaoxsINSERT (ID, , , , , ) VALUES ('11001', '',1,'1963-3-7', '','1985-2-6')INSERT (ID, , , , , ) VALUES ('22001', '',0,'1969-11-23','','1994-7-1')INSERT (ID, , , , , ) VALUES ('22002',' ',0,'1980-12-5','','2002-2-15')INSERT (ID, , , , , ) VALUES ('22003','',1,'1979-5-4', '', '2001-9-9')INSERT (ID, , , , , ) VALUES ('33001','', 1,'1982-9-29', default,'2001-6-1')INSERT (ID, , , , , ) VALUES ('33002','',0,'1980-11-1','','2000-5-30')INSERT (ID, , , , , ) VALUES ('33003', '', 1, '1979-6-30', default, '2003-11-1') default 4-40

  • 4-18 1.252006lllSQLllCHECK00 20064-41

  • 4-19 1.24SQL2006llIDlCHECKUSE diannaoxs INSERT 2006 (,,,,ID, ) VALUES ('2006-1-8','1001',10, 5300.00, 'SDLC', '') INSERT 2006 -- VALUES ('2006-1-8','1002',10, 5180.00, 'BJLX', '') INSERT 2006 VALUES ('2006-1-8','3001', 30, 350.00, 'BJFZ', '') INSERT 2006 VALUES ('2006-1-20','2001',30, 860.00, 'BJFZ', ' ') INSERT 2006 VALUES ('2006-1-28','2002',30, 1060.00, 'SHSC', ' ') INSERT 2006 VALUES ('2006-2-5', '4001', 80, 185.50, 'SDLC', '') INSERT 2006 VALUES ('2006-2-5', '4002', 80, 280.50, 'BJLX', '') INSERT 2006 VALUES ('2006-2-16','1001',10, 5250.00, 'SHKD', ' ') INSERT 2006 VALUES ('2006-3-7', '3001', 30, 350.00, 'SHSC', '') INSERT 2006 VALUES ('2006-3-26', '4002', 80, 280.50, 'SDLC', '')

  • 2INSERT SELECTINSERT 1 [(1)] SELECT * | 2 FROM 2 [WHERE ] 21SELECT2()1lSELECT5l22*11l1122*1l11l

  • diannaixs1CREATE TABLESELECT USE diannaoxs SELECT =, INTO FROM WHERE 1=22INSERT SELECT USE diannaoxs INSERT SELECT , FROM 4-434-14

  • 4-151CREATE TABLESELECT USE diannaoxs SELECT =, INTO FROM WHERE 1=22INSERT SELECT USE diannaoxs INSERT SELECT , FROM WHERE like '%%' 4-44

  • 4.6.31INSERT INSERT textntextcharnchar2WRITETEXT WRITETEXT . textntextimageWRITETEXTl.textntextimageltextntextimagebinary(16)ltextntextimagelWRITETEXTtextntextimage120KBl WRITETEXT textntextimageWRITETEXTTEXTPTRtextntextimage

  • 4-162000.USE diannaoxsGO EXEC sp_dboption diannaoxs,'select into/bulkcopy','true'UPDATE SET =null -- WHERE ID='11001' --GODECLARE @ptrtext binary(16) --SELECT @ptrtext =TEXTPTR() -- FROM WHERE ID='11001'WRITETEXT . @ptrtext '2000.'GOEXEC sp_dboption 'diannaoxs','select into/bulkcopy','false'GOSELECT * FROM TEXTPTR()@ptrtext WRITETEXT

  • 3TEXTCOPY.EXE MS SQL SERVER TEXTCOPY.EXEtextntextimagex86\80\Tools\Binn TextCopy TEXTCOPY[/S ][/U ][/P []] [/D ][/T ][/C ] [/W where ()][/F ] {/I|/O} /S /U SQL Serversa /C textimage /W where () {/I|/O} I O TEXTCOPY.EXEmasterxp_cmdshellTEXTCOPY.EXE exec master.[dbo].xp_cmdshell

  • 4-17(c:\pic1.jpg) USE diannaoxsUPDATE SET =0x -- WHERE ='' --GODECLARE @s varchar(200)SET @s='textcopy /U sa /D diannaoxs /T /C /W where(='''+''+''') /F c:\pic1.jpg /i'exec master..xp_cmdshell @[email protected]_cmdshellSET'''SET @s='textcopy /U sa /D diannaoxs /T /C /W where(='+''''''+ ') /F c:\pic1.jpg /iID='11001'c:\Program Files\Microsoft SQL Server\80\Tools\BinnTEXTCOPY.EXE'textcopy' 4-46SELECT4-45TextCopy(c:\pic2.jpg)DECLARE @id varchar(10), @s varchar(200)SET @id='11001'SET @s='textcopy /U sa /D diannaoxs /T /C /W where(ID=''' + @id + ''') /F c:\pic2.jpg /o'exec master..xp_cmdshell @sCpic2.jpg

  • 4.6.4 5SELECT SELECT SELECT *| INTO FROM [ WHERE ]l*lWHEREWHERElWHERE 1=2l SQL SELECT =, INTO 1 FROM

  • 4-18 USE diannaoxs SELECT =, INTO FROM WHERE like '%' 4-192006AA SELECT * INTO AA FROM 2006 4-2020062007 SELECT * INTO 2007 FROM 2006 WHERE 1=2 SELECT * INTO FROM WHERE 1=2 SELECT , , , INTO FROM WHERE 1=2

  • 4.6.5 1 5

  • 2UPDATE UPDATE 1 SET { = }[ , n ] [FROM 2|] [WHERE ] 1l1lSETlFROM253.3.3l WHEREl

  • 4-20 2006110033% USE diannaoxs UPDATE SET =*0.97 WHERE = '1003' 5500533522006=* USE diannaoxs UPDATE 2006 SET =* UPDATE 2006 SET =. FROM WHERE 2006.=.

  • u WHERE =u FROMWHEREon UPDATE SET =. FROM 2006 Join on 2006.=.u 20064-47

  • 32006BBBB62005128 USE diannaoxs SELECT * INTO BB FROM 2006 UPDATE BB SET ='2005-1-28' WHERE ='2005-1-26' --=6 UPDATE BB SET ='' WHERE ='' BB WHERE ='2005-1-26' 126128WHERE =6

  • 3UPDATETEXT UPDATETEXT . NULL| NULL| l .textntextimagelbinary(16)l0NULLlNULLl

  • 4 1DELETE DELETE [FROM ] [WHERE ] lWHERElFROMll AASQL DELETE AA WHERE IS NULL

  • 4-21BB USE diannaoxs DELETE BB WHERE LIKE %%

    4-22BB USE diannaoxs DELETE BB

    4-234-192006 AA DELETE AA FROM WHERE AA.ID=.ID AND .=''

  • 2TRUNCATE TABLE TRUNCATE TABLE ll4-24BB USE diannaoxs TRUNCATE TABLE BB

  • 4.7 4.7.1uuu 4-254-51

  • 4.7.2DROP TABLE 1DROP TABLE DROP TABLE [ n ]l DROPlll 4-261SQL DROP TABLE 1

    2DROP RULE DROP RULE [ n ]

    3DROP DEFAULT DROP DEFAULT [ n ]

  • 4.8 4-21 diannaoxs 2006-3-20 100135780 30015400 400225320 2006-3-26 1003104950

  • 1 USE diannaoxs INSERT 2006(,,,,,) VALUES ('2006-3-20', '', '1001', 3, 5780, '') INSERT 2006(,,,,,) VALUES ('2006-3-20', '', '3001', 5, 400, '') INSERT 2006(,,,,,) VALUES ('2006-3-20', '', '4002', 25, 320, '') INSERT 2006 VALUES ('2006-3-26','1003',10, 4950,'SDLC',' ')2 UPDATE 2006 SET =* WHERE >='2005-3-20' UPDATE 2006 SET =. FROM WHERE 2006.=. and >='2005-3-20'

  • diannaoxs 5diannaoxs4-52~4-56

  • *