版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
結(jié)構(gòu)化語言查詢EverythingindatabaseEveryworkoverSQL在SQL的世界,一切信手拈來同一片藍(lán)天同一種語言SQL:StructuredQueryLanguage結(jié)構(gòu)化查詢語言;是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng);1974年,由Boyce和Chamber提出;1975-1979年,在SystemR上實(shí)現(xiàn),由IBM的SanJose研究室研制,稱為SEQUEL語言;后來在SEQUEL的基礎(chǔ)上發(fā)展了SQL語言。SQL歷史SQL-86:數(shù)據(jù)庫語言SQLSQL-89:增加了對(duì)完整性約束的支持SQL-92:增加了許多新特性,如新的數(shù)據(jù)類型,更豐富的數(shù)據(jù)操作,更強(qiáng)的完整性、安全性支持等。SQL-99:增加對(duì)面向?qū)ο竽P偷闹С諷QL-2003:支持XML,支持Window函數(shù)、Merge語句等SQL-2006:增強(qiáng)XML對(duì)數(shù)據(jù)處理的能力SQL-2008:繼續(xù)增強(qiáng)對(duì)XML的支持SQL標(biāo)準(zhǔn)化SQL用戶BaseTableB1ViewV1ViewV2BaseTableB2BaseTableB3BaseTableB4StoredFileS1StoredFileS1StoredFileS1StoredFileS1外模式模式內(nèi)模式SQL對(duì)三級(jí)模式的支持綜合統(tǒng)一(一體化)集DDL,DML,DCL于一體單一的結(jié)構(gòu)----關(guān)系,帶來了數(shù)據(jù)操作符的統(tǒng)一面向集合的操作方式一次一集合高度非過程化用戶只需提出“做什么”,無須告訴“怎么做”,不必了解存取路徑兩種使用方式,統(tǒng)一的語法結(jié)構(gòu)SQL既是自含式語言(用戶使用),又是嵌入式語言(程序員使用)語言簡潔,易學(xué)易用SQL特點(diǎn)GRANTREVOKEDatacontrollanguage(DCL)CREATEALTERDatadefinitionlanguage(DDL)DROPINSERTUPDATEDatamanipulationlanguage(DML)DELETESELECTDataretrieval(DQL)SQL分類數(shù)據(jù)操作語言DML2數(shù)據(jù)查詢語言DQL3數(shù)據(jù)控制語言DCL4課堂練習(xí)51數(shù)據(jù)定義語言DDL不同的數(shù)據(jù)庫,數(shù)據(jù)庫對(duì)象有所差別數(shù)據(jù)庫對(duì)象索引是根據(jù)指定的數(shù)據(jù)庫表列建立起來的順序。視圖:是由查詢數(shù)據(jù)庫表產(chǎn)生的虛擬表。圖表:數(shù)據(jù)庫表之間的關(guān)系示意圖。缺省值:對(duì)沒有指定其具體值的列或列數(shù)據(jù)項(xiàng)賦予事先設(shè)定好的值。規(guī)則:是對(duì)數(shù)據(jù)庫表中數(shù)據(jù)信息的限制。它限定的是表的列。觸發(fā)器:由事件來觸發(fā)的相關(guān)操作SQL。存儲(chǔ)過程:完成特定功能而匯集在一起的一組SQL程序語句。用戶:有權(quán)限訪問數(shù)據(jù)庫的人。序列:通過提供唯一數(shù)值的順序表用于簡化程序設(shè)計(jì)工作。EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO-------------------------------------------------------------------------7839KINGPRESIDENT17-NOV-815000107698BLAKEMANAGER783901-MAY-812850307782CLARKMANAGER783909-JUN-811500107566JONESMANAGER783902-APR-812975207654MARTINSALESMAN769828-SEP-8112501400307499ALLENSALESMAN769820-FEB-811600300307844TURNERSALESMAN769808-SEP-8115000307876ADAMSCLERK778812-JAN-831100207934MILLERCLERK778223-JAN-82130010EMP(職員表)DEPT(部門表)DEPTNODNAMELOC--------------------------------- 10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTON
GRADELOSALHISAL---------------------------17001200212011400314012000420013000530019999SALGRADE(薪水等級(jí)表)課程中使用的表課程中使用的表SnoSNameSSexSBirthdateSchoolID----------------------------------------200333103213蔡立雄男1986-07-09350200333103222陳宇鋒男1986-02-06400200333103231崔繼明男1985-11-04400200333103240鄧忻女1984-11-21400200333103277郭冠鴻男1986-05-22400200333103286何英煒男1987-03-15400200433103019張彬彬男1986-02-25480200433103028張超男1986-06-15480200433103046張佳祺女1987-05-27480……Student(學(xué)生信息)SchoolIDSchoolNameaddr----------------------------300機(jī)械工程學(xué)院機(jī)械大樓350建筑學(xué)院建筑大樓432新聞與傳播學(xué)院B8棟433政治與公共管理學(xué)院5號(hào)樓400藝術(shù)學(xué)院B1棟440外國語學(xué)院22號(hào)樓450電子商務(wù)學(xué)院B2棟470自動(dòng)化學(xué)院3號(hào)樓480計(jì)算機(jī)學(xué)院B3棟……School(學(xué)院代碼)SnoCnoScore-------------------------2003331032404800514472200333103240480052548620033310327748000543892003331032864800054395200433103019480004438620043310301948000543782004331030284800044388200433103028480005436920043310304648000543662004331030554800054352SC(選課成績表)Course(課程信息表)Cno
Cname
CpnoCCredit--------
------------------
----------------48000443C++程序設(shè)計(jì)語言NULL
248000543數(shù)據(jù)庫系統(tǒng)概論
48000443448003010計(jì)算機(jī)應(yīng)用基礎(chǔ)
NULL
248005034匯編語言與程序設(shè)計(jì)NULL448005144數(shù)據(jù)結(jié)構(gòu)
48003010448005254計(jì)算機(jī)組成原理
48005345348005345操作系統(tǒng)
48003010348005946軟件工程
480005434
字符型char(n)補(bǔ)齊空格varchar(n)不補(bǔ)空格數(shù)值型Integer-2EXP(31)到2EXP(31)的正負(fù)整數(shù)Smallint-2EXP(15)到2EXP(15)的正負(fù)整數(shù)decimal(p,q)/numeric(p,q)real、double、float(n)日期/時(shí)間型Datetime1753.1.1-9999.12.31Smalldatetime1900.1.1-2079.12.31Timestamp貨幣類型money/smallmoneySQL-92常用數(shù)據(jù)類CREATEDATABASEdatabase_name
[ON
[<filespec>]
[,<filegroup>]]
[LOGON{<filespec>}]
<filespec>::=[PRIMARY]
([NAME=logical_file_name,]
FILENAME='os_file_name'
[,SIZE=size]
[,MAXSIZE={max_size|UNLIMITED}]
[,FILEGROWTH=growth_increment])[,...n]<filegroup>::=FILEGROUPfilegroup_name<filespec>[,...n]1)創(chuàng)建數(shù)據(jù)庫/數(shù)據(jù)庫表空間CREATEDATABASEEmployeeON(NAME=Employee_dat,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\Employeedat.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME='Employee_log',FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\Employeelog.ldf',SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)A.指定數(shù)據(jù)和日志文件CREATEDATABASEArchiveONPRIMARY(NAME=Arch1,FILENAME='c:\archdat1.mdf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Arch2,FILENAME='c:\archdat2.ndf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20)LOGON(NAME=Archlog1,FILENAME=‘'c:\archlog1.ldf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),(NAME=Archlog2,FILENAME='c:\archlog2.ldf',SIZE=100MB,MAXSIZE=200,FILEGROWTH=20)B.指定多個(gè)數(shù)據(jù)和日志文件CREATEDATABASETeach注意觀察:數(shù)據(jù)庫存放的位置及各種參數(shù)的取值C.創(chuàng)建一個(gè)簡單數(shù)據(jù)庫必須具備:CREATETABLE的權(quán)限表存儲(chǔ)空間需要:表名、列名,數(shù)據(jù)類型,列大小2)創(chuàng)建表(CREATETABLE)CREATETABLEtable-name (column
datatype[DEFAULTexpr];CREATETABLE表名(
列名數(shù)據(jù)類型[缺省值][NOTNULL]
[,列名數(shù)據(jù)類型[缺省值][NOTNULL]]….
[,UNIQUE(列名[,列名]….)]
[,PRIMARYKEY(列名[,列名]…)]
[,F(xiàn)OREIGNKEY(列名[,列名]…)REFERENCES表名(列名[,列名]…)]
[,CHECK(條件)])創(chuàng)建表的語法結(jié)構(gòu)DEFAULT(缺省值):指定列的缺省值;NOTNULL:列值不能為空值;UNIQUE:取值唯一的列名;PRIMARYKEY:主關(guān)鍵字(主碼)列名;FOREIGNKEY:外部碼列名;REFERENCES:引用的外部碼的表名和列名CHECK:指定表級(jí)約束條件。參數(shù)說明
--學(xué)院代碼表CREATETABLESchool(SchoolIDchar(3)primarykey,--學(xué)院IDSchoolNamevarchar(50)notnull)--學(xué)院名稱--學(xué)生信息表CREATETABLEStudent(Snochar(12)Primarykey,--學(xué)號(hào)SNameVarChar(30)notnull,--姓名SSexchar(2)CONSTRAINTck_SexCHECK(SSexin('男','女')),--性別SBirthdatesmalldatetime,--出生日期SchoolIDchar(3))--所屬學(xué)院例子--課程信息表CREATETABLECourse(Cnochar(8)primarykey,--課程編號(hào)Cnamevarchar(40)notnull,--課程名稱Cpnochar(8),--先修課程CCreditintnotnull)--學(xué)分
--學(xué)生選課表CREATETABLESC(SnoCHAR(12),--學(xué)號(hào)CnoCHAR(8),--課程號(hào)Scoreintdefault0,--成績Primarykey(Sno,Cno),CONSTRAINTFK_SnoFOREIGNKEY(Sno)REFERENCESStudent(Sno),CONSTRAINTFK_CnoFOREIGNKEY(Cno)REFERENCESCourse(Cno))例子--創(chuàng)建部門信息表CREATETABLEDEPT(DEPTNOchar(2)notnull,DNAMEvarchar(20)notnull,LOCvarchar(30)notnull,constraintPK_DEPTprimarykey(DEPTNO))--創(chuàng)建職員信息表CREATETABLEEMP(EMPNOchar(4)notnull,ENAMEvarchar(20)notnull,JOBvarchar(18)notnull,MGRchar(4)null,HIREDATEsmalldatetimenotnull,SALfloatnull,COMMfloatnull,DEPTNOchar(2)notnull,constraintPK_EMPprimarykey(EMPNO),constraintFK_EMP_DEPTforeignkey(DEPTNO)referencesDEPT(DEPTNO))例子--薪水等級(jí)表CREATETABLESALGRADE(GRADEvarchar(2)notnull,LOSALfloatnotnull,HISALfloatnotnull,constraintPK_SALGRADEprimarykey(GRADE))例子Sp_helptable-name表創(chuàng)建后的相關(guān)信息ThefollowingconstrainttypesarevalidinSQLServer/Oracle:NOTNULLUNIQUEKeyPRIMARYKEYFOREIGNKEYCHECKCreateaconstraint:AtthesametimeasthetableiscreatedAfterthetablehasbeencreatedDefineaconstraintatthecolumnortablelevel.約束(constraint)列級(jí)約束定義
表級(jí)約束定義定義約束column[CONSTRAINTconstraint_name]constraint_type,column,...
[CONSTRAINTconstraint_name]constraint_type(column,...),保證空值不進(jìn)入定義的列NOTNULL約束
EMP(職員信息表)EMPNO ENAME JOB ...COMMDEPTNO7839 KING PRESIDENT 107698 BLAKE MANAGER 307782 CLARK MANAGER 107566 JONES MANAGER 20NOTNULL約束(在此列沒有空值)允許空值存在NOTNULL約束定義在列級(jí)NOTNULL約束CREATETABLEemp( empno NUMBER(4), ename VARCHAR2(10)NOTNULL, job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2), deptno NUMBER(7,2)NOTNULL);UNIQUEKEY約束
DEPTDEPTNODNAME LOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTONUNIQUEkeyconstraint
50 SALES DETROIT60 MARKETING BOSTONInsertintoNotallowed
(SALESalreadyexists)Allowed既可定義在列級(jí)也可以定義在表級(jí)UNIQUEKEY約束CREATETABLEdept( deptno NUMERIC(2), dname VARCHAR(14), loc VARCHAR(13), CONSTRAINTdept_dname_ukUNIQUE(dname))PRIMARYKEY約束
DEPTDEPTNODNAME LOC------------ --------10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTONPRIMARYKEYInsertinto
20 MARKETING DALLAS FINANCE NEWYORKNotallowed(DEPTNO-20alreadyexists)Notallowed(DEPTNOisnull)既可定義在表級(jí)也可定義在列級(jí)PRIMARYKEY約束CREATETABLEdept( deptno char(2), dname VARCHAR(14), loc VARCHAR(13), CONSTRAINTdept_dname_ukUNIQUE(dname), CONSTRAINTdept_deptno_pkPRIMARYKEY(deptno))FOREIGNKEY約束
DEPTDEPTNODNAME LOC---------------- --------10 ACCOUNTING NEWYORK20 RESEARCH DALLASPRIMARY
KEY
EMPEMPNO ENAME JOB ...COMMDEPTNO7839 KING PRESIDENT 107698 BLAKE MANAGER 30...FOREIGN
KEY
7571 FORD MANAGER ...200 97571 FORD MANAGER ...200InsertintoNotallowed
(DEPTNO-9不在DEPT表中Allowed
既可在列級(jí)定義也可以在表級(jí)定義FOREIGNKEY約束CREATETABLEemp( empno char(4), ename VARCHAR(10)NOTNULL, job VARCHAR(9), mgr NUMERIC(4), hiredate DATETIME, sal NUMERIC(7,2), comm NUMERIC
(7,2),--傭金
deptno NUMERIC(7,2)NOTNULL, CONSTRAINTemp_deptno_fkFOREIGNKEY(deptno) REFERENCESdept(deptno))定義一個(gè)行必須滿足的條件CHECK約束...,deptno NUMERIC(2),CONSTRAINTemp_deptno_ckCHECK(DEPTNOBETWEEN10AND99),...用子查詢創(chuàng)建表CREATETABLEtable [column(,column...)]ASsubquery;CreatetableCsStudentasselect*fromstudentwhereschool='480';select*intonewtablefromexisttablewherecondition例:建立計(jì)算機(jī)系學(xué)生情況基本表select*intoCsStudentfromstudentwhereschoolID='480'SQLServer:Oracle:用ALTERTABLE:增加一個(gè)新列、約束修改一個(gè)存在的列刪除列3)修改表定義ALTERTABLEALTERTABLEtable_nameADD (columndatatype[DEFAULTexpr] [,columndatatype]...)ALTERTABLEtable_nameMODIFY/Alter(columndatatype[DEFAULTexpr] [,columndatatype]...)ALTERTABLEtable_nameDROP (column...)Student增加新列增加一個(gè)名族列進(jìn)入學(xué)生信息表新列SnoSNameSSexSBirthdateSchoolID----------------------------------------200333103213蔡立雄男1986-07-09350200333103222陳宇鋒男1986-02-06400200333103231崔繼明男1985-11-04400200333103240鄧忻女1984-11-21400200333103277郭冠鴻男1986-05-22400…
NationSnoSNameSSexSBirthdateSchoolID200333103213蔡立雄男1986-07-09350200333103222陳宇鋒男1986-02-06400200333103231崔繼明男1985-11-04400200333103240鄧忻女1984-11-21400200333103277郭冠鴻男1986-05-22400
Nation用ADD語句增加列定義增加列SnoSNameSSexSBirthdateSchoolIDNation-------------------------------------------------200433103019張彬彬男1986-02-25480200433103028張超男1986-06-15480200433103046張佳祺女1987-05-27480200433103055張今寧男1986-04-02480200433103213張志兵男1985-06-01480200433103222趙昭男1986-06-15480200433103231鄭棣樺女1984-04-25480200433103240鄭妍女1987-05-29480ALTERTABLEstudentADDnationVARCHAR(9)Tablealtered.新增加的列變成最后的列,不論基本表中原來是否已有數(shù)據(jù),新增加的列一律為空值。你能修改表一個(gè)列的數(shù)據(jù)類型,大小、默認(rèn)值對(duì)默認(rèn)值的變更只影響后續(xù)插入表的數(shù)據(jù)修改列ALTERTABLE studentAltercoulumn SnameVARCHAR(50)為列增加約束條件,但受到表中已有數(shù)據(jù)的限制增加約束條件altertablestudentaddunique(sname)INSERTINTOstudentVALUES('200633103028','張超','男','1987-06-15',480)CREATEUNIQUEINDEX終止,唯一索引沖突。刪除學(xué)生姓名必須取唯一值的約束。ALTERTABLEStudentDROPUNIQUE(Sname)刪除屬性列:直接/間接刪除先把表中要保留的列及其內(nèi)容復(fù)制到一個(gè)新表中,再刪除原表,再將新表重命名為原表名直接刪除屬性列:ALTERTABLEStudentDROPcoloumnnation刪除列定義及約束所有的數(shù)據(jù)及結(jié)構(gòu)均被刪除任何未決的事務(wù)被提交所有索引被刪除你不能rollback這個(gè)操作4)刪除表(droptable)DROPTABLEstudent???建立索引是加快查詢速度的有效手段建立索引DBA或表的屬主(即建立表的人)根據(jù)需要建立有些DBMS自動(dòng)建立以下列上的索引PRIMARYKEYUNIQUE維護(hù)索引
DBMS自動(dòng)完成
使用索引
DBMS自動(dòng)選擇是否使用索引以及使用哪些索引5)建立索引CREATEINDEX
create[unique][clustered]index<索引名>on<表名>(<列名>[<次序>][,<列名>[<次序>]]…)CREATEINDEX emp_ename_idxON emp(ename)在職工信息表中基于姓名建立索引建立索引(CREATEINDEX)unique(distinct):唯一性索引,不允許表中不同的行在索引列上取相同值。若已有相同值存在,則系統(tǒng)給出相關(guān)信息,不建此索引。系統(tǒng)并拒絕違背唯一性的插入、更新clustered:聚簇索引,表中元組按索引項(xiàng)的值排序并物理地聚簇在一起。一個(gè)基本表上只能建一個(gè)聚簇索引。適用范圍:很少對(duì)基表進(jìn)行增刪操作很少對(duì)其中的變長列進(jìn)行修改操作asc/desc:索引表中索引值的排序次序,缺省為asc幾種常見的索引類型可以動(dòng)態(tài)地定義索引,即可以隨時(shí)建立和刪除索引;不允許用戶在數(shù)據(jù)操作中引用索引。索引如何使用完全由系統(tǒng)決定,這支持了數(shù)據(jù)的物理獨(dú)立性;一個(gè)表上可建多個(gè)索引。索引可以提高查詢效率,但索引過多耗費(fèi)空間,且降低了插入、刪除、更新的效率;建立索引的兩個(gè)主要目的:加快查詢速度、保證行的唯一性。索引的說明下列情況,需要建立索引在WHERE或連接條件中頻繁使用的列列取值范圍較大時(shí)列包含大量的非空值查詢少于2-4%行的大表下列條件不要?jiǎng)?chuàng)建索引:小表列并不頻繁用在查詢條件中查詢超過2–4%的行表頻繁被更新(如操作日志表、事件表)索引的注意事項(xiàng)從數(shù)據(jù)字典中刪除索引定義6)刪除索引DROPINDEXDROPINDEXindex-name數(shù)據(jù)操作語言DML2數(shù)據(jù)查詢語言DQL3數(shù)據(jù)控制語言DCL4課堂練習(xí)51數(shù)據(jù)定義語言DDL
DEPTDEPTNODNAME LOC10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON
新的一行記錄50 DEVELOPMENT DETROIT
DEPTDEPTNODNAME LOC10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON“…insertanewrowintoDEPTtable…”
50 DEVELOPMENT DETROIT1)插入數(shù)據(jù)INSERT向表中增加一行數(shù)據(jù)采用INSERT語句
采用這種Insert語句一次只能插入一行記錄INSERTINTO table[(column[,column...])]VALUES (value[,value...]);INSERT語法Insertanewrowcontainingvaluesforeachcolumn.Listvaluesinthedefaultorderofthecolumnsinthetable.OptionallylistthecolumnsintheINSERTclause.Enclosecharacteranddatevalueswithinsinglequotationmarks.插入一行記錄INSERTINTO dept(deptno,dname,loc)VALUES ('50','DEVELOPMENT','DETROIT')1rowcreated.Implicitmethod:Omitthecolumnfromthecolumnlist.INSERTINTO dept(deptno,dname)VALUES ('60','MIS')1rowcreated.Explicitmethod:SpecifytheNULLkeyword.INSERTINTO deptVALUES ('70','FINANCE',NULL)1rowcreated.插入帶空值的行INSERTINTO emp(empno,ename,job, mgr,hiredate,sal,comm, deptno)VALUES (7196,'GREEN','SALESMAN', 7782,GETDATE(),2000,NULL, 10)1rowcreated.GetDate函數(shù)記錄當(dāng)前的日期和時(shí)間插入函數(shù)值EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO-----------------------------------------------2296AROMANOSALESMAN77822005-03-31130010INSERTINTOempVALUES(2296,'AROMANO','SALESMAN',7782, convert(smalldatetime,'03-31-2005',110), 1300,NULL,10)1rowcreated.增加一個(gè)新的職員插入特定的日期值驗(yàn)證你的增加沒有指定列,Values的值必須與數(shù)據(jù)庫表結(jié)構(gòu)的定義一致(包括順序、類型、字段數(shù)),除identity字段。INTO子句中沒有出現(xiàn)的屬性列,新記錄在這些列上將取空值(NULL)或默認(rèn)值。如果在表定義時(shí)說明了NOTNULL的屬性列不能取空值則操作失敗。注意事項(xiàng)INSERTINTO<表名>[(<屬性列1>[,<屬性列2>…)]子查詢CREATETABLECS_student(SnoCHAR(12)primarykey,snamevarchar(50)notnull)--插入計(jì)算機(jī)學(xué)院的學(xué)生到cs_student表中insertintoCS_studentselectsno,snamefromStudentwhereschoolID='480'插入子查詢數(shù)據(jù)DBMS在執(zhí)行插入語句時(shí)會(huì)檢查所插元組是否破壞表上已定義的完整性規(guī)則:實(shí)體完整性參照完整性用戶定義的完整性如:對(duì)于有NOTNULL約束的屬性列是否提供了非空值對(duì)于有UNIQUE約束的屬性列是否提供了非重復(fù)值對(duì)于有值域約束的屬性列所提供的屬性值是否在值域范圍內(nèi)插入修改數(shù)據(jù)的約束性檢查
在表中變更數(shù)據(jù)EMP更新一行數(shù)據(jù)EMPEMPNO ENAME JOB ...DEPTNO7839 KING PRESIDENT 107698 BLAKE MANAGER 307782 CLARK MANAGER 107566 JONES MANAGER 20...20EMPNO ENAME JOB ...DEPTNO7839 KING PRESIDENT 107698 BLAKE MANAGER 307782 CLARK MANAGER 107566 JONES MANAGER 20...修改存在的行用UPDATE語句UPDATE可以對(duì)多行進(jìn)行修改UPDATE語句UPDATE tableSET column=value[,column=value][WHERE condition]SpecficroworrowsaremodifiedwhenyouspecifytheWHEREclause.AllrowsinthetablearemodifiedifyouomittheWHEREclause.更新行UPDATE empSET deptno=20WHERE empno=77821rowupdated.UPDATE employeeSET deptno=2014rowsupdated.Updateemployee7698’sjobanddepartmenttomatchthatofemployee7499.采用子查詢進(jìn)行更新UPDATEempSET(job,deptno)= (SELECTjob,deptnoFROMempWHEREempno=7499)WHEREempno=76981rowupdated.Oracle支持UsesubqueriesinUPDATEstatementstoupdaterowsinatablebasedonvaluesfromanothertable.基于別的表進(jìn)行更新 UPDATE emp SET deptno=(SELECT deptno FROM emp WHERE empno=7788) WHERE job=(SELECT job FROM emp WHERE empno=7788)2rowsupdated.
從DEPT表中刪除一行從表中刪除數(shù)據(jù)DEPTDEPTNODNAME LOC10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON50 DEVELOPMENT
DETROIT60 MIS ...
DEPTDEPTNODNAME LOC10 ACCOUNTING NEWYORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON60 MIS ...YoucanremoveexistingrowsfromatablebyusingtheDELETEstatement.DELETE語句DELETE[FROM] table[WHERE condition]SpecificroworrowsaredeletedwhenyouspecifytheWHEREclause.
AllrowsinthetablearedeletedifyouomittheWHEREclause.從表中刪除數(shù)據(jù)DELETEFROM deptWHERE dname='DEVELOPMENT'1rowdeleted.DELETEFROM dept4rowsdeleted.UsesubqueriesinDELETEstatementstoremoverowsfromatablebasedonvaluesfromanothertable.基于另一個(gè)表刪除行DELETEFROM empWHERE deptno= (SELECTdeptno FROMdept WHEREdname='SALES')6rowsdeleted.Youcannotdeletearowthatcontainsaprimarykeythatisusedasaforeignkeyinanothertable.刪除行違背約束DELETEFROM deptWHERE deptno=‘10’DELETEFROMdeptDELETE語句與COLUMNREFERENCE約束'FK_EMP_DEPT'沖突課堂練習(xí)SnoSNameSSexSbirthdateSchoolID----------------------------------------200333103213蔡立雄男1986-07-09350200333103222陳宇鋒男1986-02-06400200333103231崔繼明男1985-11-04400200333103240鄧忻女1984-11-21400200333103277郭冠鴻男1986-05-22400200333103286何英煒男1987-03-15400200433103019張彬彬男1986-02-25480200433103028張超男1986-06-15480200433103046張佳祺女1987-05-27480……Student(學(xué)生信息)SchoolIDSchoolNameaddr----------------------------300機(jī)械工程學(xué)院機(jī)械大樓350建筑學(xué)院建筑大樓432新聞與傳播學(xué)院B8棟433政治與公共管理學(xué)院5號(hào)樓400藝術(shù)學(xué)院B1棟440外國語學(xué)院22號(hào)樓450電子商務(wù)學(xué)院B2棟470自動(dòng)化學(xué)院3號(hào)樓480計(jì)算機(jī)學(xué)院B3棟……School(學(xué)院代碼)SnoCnoScore-------------------------2003331032404800514472200333103240480052548620033310327748000543892003331032864800054395200433103019480004438620043310301948000543782004331030284800044388200433103028480005436920043310304648000543662004331030554800054352SC(選課成績表)Course(課程信息表)Cno
Cname
CpnoCCredit--------
------------------
----------------48000443C++程序設(shè)計(jì)語言NULL
248000543數(shù)據(jù)庫系統(tǒng)概論
48000443448003010計(jì)算機(jī)應(yīng)用基礎(chǔ)
NULL
248005034匯編語言與程序設(shè)計(jì)NULL448005144數(shù)據(jù)結(jié)構(gòu)
48003010448005254計(jì)算機(jī)組成原理
48005345348005345操作系統(tǒng)
48003010348005946軟件工程
480005434
1、學(xué)生張超轉(zhuǎn)到了建筑學(xué)院學(xué)習(xí)2、把“數(shù)據(jù)庫系統(tǒng)概論”課程的學(xué)生成績均加2分3、刪除“張佳琪”學(xué)生信息4、插入一門“組成原理”課程信息5、在學(xué)生信息中加入“民族”屬性課堂練習(xí)數(shù)據(jù)操作語言DML2數(shù)據(jù)查詢語言DQL3數(shù)據(jù)控制語言DCL4過程語言51數(shù)據(jù)定義語言DDLSELECT語句選擇投影Table1Table2Table1Table1連接SELECT標(biāo)識(shí)哪些列輸出FROM標(biāo)識(shí)從哪個(gè)表獲取數(shù)據(jù)SELECT語法SELECT [DISTINCT]{*,column[alias],...}FROM table
選擇所有列(*)DEPTNODNAMELOC------------------------------------10ACCOUNTINGNEWYORK20RESEARCHDALLAS30SALESCHICAGO40OPERATIONSBOSTONSELECT*FROM deptDEPTNOLOC----------------------10NEWYORK20DALLAS30CHICAGO40BOSTON
選擇特定的列SELECTdeptno,locFROMdept基于數(shù)值、日期等表達(dá)式計(jì)算需采用下面的數(shù)學(xué)運(yùn)算符。數(shù)學(xué)運(yùn)算符操作符+-*/ 描述加減乘除
用數(shù)學(xué)運(yùn)算符
SELECTename,sal,sal+300FROM empENAMESAL----------------------------KING50005300BLAKE28503150CLARK24502750JONES29753275MARTIN12501550ALLEN16001900...14rowsselected.
用圓括弧來提升優(yōu)先級(jí)SELECTename,sal,12*(sal+100)FROMempENAMESAL------------------------------KING500061200BLAKE285035400CLARK245030600JONES297536900MARTIN125016200...14rowsselected.ENAMEJOBCOMM----------------------------KINGPRESIDENTNullBLAKEMANAGERNull...TURNERSALESMAN0...14rowsselected.
Anullisavaluethatisunavailable,unassigned,unknown,orinapplicable.Anullisnotthesameaszeroorablankspace.NULL值SELECT ename,job,commFROM emp
包含空值的數(shù)學(xué)表達(dá)式結(jié)果仍為空值。NULL值在數(shù)學(xué)表達(dá)式中
selectenameNAME,12*sal+commfromempWHEREename='KING'NAME---------------------KING重命名一列的列名常用于查詢計(jì)算結(jié)果列的輸出在列名和別名之間可采用AS關(guān)鍵字進(jìn)行標(biāo)識(shí)如果別名中包含空格、特殊字符、大小寫敏感字符則需要用單引號(hào)(’’)對(duì)別名標(biāo)注定義列的別名(alias)
用列的別名輸出實(shí)例
SELECTenameASname,salsalaryFROMempNAMESALARY----------------------
...SELECTename'Name',sal*12'AnnualSalary'FROMemp
NameAnnualSalary--------------------------
...連接列或字符串采用連接符號(hào)“+”能創(chuàng)建一個(gè)列為組合字符串表達(dá)式選擇輸出中用連接符號(hào)(+)Employees-------------------KINGPRESIDENTBLAKEMANAGERCLARKMANAGERJONESMANAGERMARTINSALESMANALLENSALESMAN...14rowsselected.用連接符號(hào)舉例SELECT ename+jobAS'Employees'FROM emp例子EmployeeDetails-------------------------KINGisaPRESIDENTBLAKEisaMANAGERCLARKisaMANAGERJONESisaMANAGERMARTINisaSALESMAN...14rowsselected.SELECTename +''+'isa'+''+job AS'EmployeeDetails'FROMemp
默認(rèn)顯示查詢中的所有行,包括重復(fù)行。查詢結(jié)果包含重復(fù)行SELECTdeptnoFROMempDEPTNO---------10301020...14rowsselected.
消除重復(fù)行在SELECT語句中用DISTINCT消除重復(fù)行SELECTDISTINCTdeptnoFROMempDEPTNO---------102030
用選擇限制行的輸出獲取所有在10部門工作的員工
EMPEMPNO ENAME JOB ...DEPTNO7839 KING PRESIDENT 107698 BLAKE MANAGER 307782 CLARK MANAGER 107566 JONES MANAGER 20...
EMPEMPNO ENAME JOB ...DEPTNO7839 KING PRESIDENT 107782 CLARK MANAGER 107934 MILLER CLERK 10用WHERE語句獲取滿足條件的行記錄WHERE語句放在FROM之后SELECT中的WHERE語法SELECT [DISTINCT]{*,column[alias],...}FROM table[WHERE condition(s)]ENAMEJOBDEPTNO----------------------------JAMESCLERK30SMITHCLERK20ADAMSCLERK20MILLERCLERK10用WHERE語句SELECTename,job,deptnoFROMempWHEREjob='CLERK'字符串和日期采用單引號(hào)分隔字符串是否大小寫敏感視不同的數(shù)據(jù)庫而定。日期格式根據(jù)數(shù)據(jù)庫默認(rèn)的日期格式而定。SQLSERVER默認(rèn)格式為:YYYY-MON-DAYHOUR:MINUTE:SECONDORACLE默認(rèn)格式為:'DD-MON-YY'條件判斷中的字符串和日期處理SELECT ename,job,deptnoFROM empWHERE ename='JAMES'條件判斷中使用比較運(yùn)算符運(yùn)算符=>>= <<= <>描述等于大于大于等于小于小于等于不等于用比較運(yùn)算符進(jìn)行條件判斷SELECTename,sal,commFROMempWHEREsal<=commENAMESALCOMM----------------------------MARTIN12501400其他比較運(yùn)算符OperatorBETWEEN...AND...IN(list)LIKEISNULLMeaningBetweentwovalues(inclusive)MatchanyofalistofvaluesMatchacharacterpatternIsanullvalue獲取一個(gè)范圍的結(jié)果用運(yùn)算符BETWEEN…AND用BETWEEN運(yùn)算符ENAMESAL-------------------MARTIN1250TURNER1500WARD1250ADAMS1100MILLER1300SELECT ename,salFROM empWHERE salBETWEEN1000AND1500Lower
limitHigher
limit用IN判斷在枚舉數(shù)據(jù)中的存在性用IN操作符SELECT empno,ename,sal,mgrFROM empWHERE mgrIN(7902,7566,7788)EMPNOENAMESALMGR-------------------------------------7902FORD300075667369SMITH80079027788SCOTT300075667876ADAMS11007788用LIKE操作符用LIKE操作符從一個(gè)字符串中進(jìn)行匹配查詢%代表0到多個(gè)字符匹配_代表單個(gè)字符匹配SELECT enameFROM empWHERE enameLIKE'S%'Youcancombinepatternmatchin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TS 21219-13:2025 EN Intelligent transport systems - Traffic and travel information via transport protocol experts group,generation 2 (TPEG2) - Part 13: Public transport
- 2025標(biāo)準(zhǔn)農(nóng)田建設(shè)合同管理的任務(wù)和方法
- 2025員工個(gè)人勞動(dòng)合同
- 2025年度房屋置換增值服務(wù)全新房屋置換對(duì)方房屋置換及增值合同3篇
- 2025農(nóng)村合作建房項(xiàng)目施工臨時(shí)用電安全合同2篇
- 二零二五年度公司股權(quán)轉(zhuǎn)讓及后續(xù)管理服務(wù)合同3篇
- 二零二五年度房地產(chǎn)項(xiàng)目合作合同解除協(xié)議2篇
- 二零二五年度農(nóng)產(chǎn)品批發(fā)市場(chǎng)租賃合作合同3篇
- 二零二五年度智能家居產(chǎn)品開發(fā)合作協(xié)議書3篇
- 二零二五年度辦公室租賃合同模板:含員工激勵(lì)及福利計(jì)劃3篇
- 部編人教版四年級(jí)數(shù)學(xué)上冊(cè)期末考試卷(可打印)
- 一例阿爾茨海默病患者的護(hù)理查房
- 農(nóng)貿(mào)市場(chǎng)安全生產(chǎn)工作方案
- 咸陽租房合同
- 《鋼筋保護(hù)層檢測(cè)》課件
- YJ-T 27-2024 應(yīng)急指揮通信保障能力建設(shè)規(guī)范
- 合伙人協(xié)議書決策機(jī)制
- 西藏畜牧獸醫(yī)知識(shí)培訓(xùn)課件
- 護(hù)理專業(yè)人才培養(yǎng)方案論證報(bào)告
- 我的家鄉(xiāng)武漢
- 眼鏡制造業(yè)灌膠機(jī)市場(chǎng)前景與機(jī)遇分析
評(píng)論
0/150
提交評(píng)論