您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 第4章1结构化查询语言SQL
4-1第4章结构化查询语言SQL4.1SQL简介SQL(StructuredQueryLanguage):1986年提出,最终成为关系数据库的标准语言。综合统一数据定义语言DDLCREATE、ALTER、DROP数据操纵语言DMLSELECT,INSERT,DELETE,UPDATE数据控制语言DCLGRANT,DENY,REVOKE非过程化只需提出“做什么”,不必指明“怎么做”操作方式面向集合使用方法既是自含式语言,又是嵌入式语言Transact-SQL:SQLServer中扩展的SQL实现。增加了变量、运算符、函数、流程控制等语言元素。4.2数据库的创建、删除4.2.1创建数据库CREATEDATABASEdatabase_name[ON[filespec[,...n]][,filegroup[,...n]]][LOGON{filespec[,...n]}]CREATEDATABASETestCREATEDATABASESalesON(NAME=Sales_dat,FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\saledat.mdf',SIZE=10,MAXSIZE=50,FILEGROWTH=5)LOGON(NAME='Sales_log',4-2FILENAME='c:\programfiles\microsoftsqlserver\mssql\data\salelog.ldf',SIZE=5MB,MAXSIZE=25MB,FILEGROWTH=5MB)GO将GO之前的SQL语句作为一个批处理提交给SQLServerSQLServer的内部流程:①使用model数据库的复本初始化数据库及其元数据。②SQLServer使用空页填充数据库的剩余部分,除了包含记录数据库中空间使用情况以外的内部数据页。4.2.2设置当前数据库use数据库名useTest14.2.3删除数据库dropDATABASE数据库名dropDATABASETest14.3表结构的建立、修改和删除4.3.1建立表结构及表内约束CREATETABLE[数据库名.所有者名.]基本表名(列定义,……[,表级完整性约束,……])CREATETABLES(SnoCHAR(8)Primarykey,SnameCHAR(6)notnullUNIQUE,SsexCHAR(2)notnullcheck(Ssex='男'orSsex='女'),SbirthdayDATETIMEcheck(Sbirthday='1990-12-31'),SdeptCHAR(10)DEFAULT'信科系',SgradeINTcheck(Sgrade=1andSgrade=4));Sbirthday='1990-12-31':在1990-12-31之前。4-3CREATETABLEC(CnoCHAR(4)PRIMARYKEY,CnameCHAR(10)notnullUNIQUE,CcreditINTCheck(Ccredit=1andCcredit=6));4.3.2建立表间约束(约束参照完整性)CREATETABLESC(SnoCHAR(8),CnoCHAR(4),SCscoreINTcheck(Scscore=0andScscore=100),Primarykey(Sno,Cno),foreignkey(Sno)referencesS(Sno),foreignkey(Cno)referencesC(Cno));4.3.3观察、理解表结构理解查询分析器的对象浏览器中的层次结构:表列、约束、相关性、索引、触发器列包含类型定义、列级约束(null)约束包含主键约束(PK)、检查约束(CK)、默认约束(DF)、外键约束(FK)相关性包含检查约束(CK)操作细节:命令执行后,效果需要刷新才能显示。4.3.4修改基本表的结构ALTERTABLE表名[ADD新列名数据类型[完整性约束]][DROP完整性约束名][ALTERCOLUMN列名数据类型];ALTERTABLESADDScomeDATETIME/*注:新增列一律为空值。*/ALTERTABLESADDScomeDATETIMEDEFAULT'2008-9-1'/*注:新增列一律为缺省值。*/4-4ALTERTABLESDROPCOLUMNScomeALTERTABLES2ALTERCOLUMNSdeptCHAR(20);/*注:涉及各种约束的列不能直接修改注:修改原有的列定义有可能会破坏已有数据*/4.3.5基本表的删除不能删除被FOREIGNKEY约束的表错误流程正确流程DROPTABLES;DROPTABLEC;DROPTABLESC;DROPTABLESC;DROPTABLES;DROPTABLEC;4.4表数据的插入、修改和删除4.4.1插入数据INSERT[INTO]基本表名(列名,……)VALUES(列值,……)InsertintoS(Sno,Sname,Ssex,Sbirthday,Sdept,Sgrade)values('95001','李勇','男','1990-1-1','信科系',1);InsertintoS(Sno,Sname,Ssex,Sbirthday,Sdept,Sgrade)values('95002','刘晨','男','1989-1-1','物理系',2);InsertintoS(Sno,Sname,Ssex,Sbirthday,Sdept,Sgrade)values('95003','王敏','女','1988-1-1','英语系',3);InsertintoS(Sno,Sname,Ssex,Sbirthday,Sdept,Sgrade)values('95004','张立','男','1987-1-1','信科系',4);InsertintoCvalues('1','数据库',4);InsertintoCvalues('2','数学',2);InsertintoCvalues('3','信息系统',4);InsertintoCvalues('4','操作系统',3);InsertintoCvalues('5','数据结构',4);InsertintoCvalues('6','数据处理',2);InsertintoCvalues('7','PASCAL语言',4);InsertintoSCvalues('95001','1',92);InsertintoSCvalues('95001','2',85);4-5InsertintoSCvalues('95001','3',88);InsertintoSCvalues('95002','2',90);InsertintoSCvalues('95002','3',80);4.4.2修改数据UPDATE表名SET列名=表达式,……[WHERE逻辑表达式]UPDATESCSetSCscore=SCscore+2;UPDATESCSetSCscore=99whereSno='95001'andCno='1';4.4.3删除数据由于参照完整性约束,有些记录不能删除DELETE表名[WHERE逻辑表达式]deleteSwhereSbirthday'1988-01-01';deleteSwhereSno='95003';DELETES;DELETESC;DELETES;数据被删除,但表结构保留。
本文标题:第4章1结构化查询语言SQL
链接地址:https://www.777doc.com/doc-2194521 .html