Java数据库编程_第3章_基本SQL语句

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第三章基本SQL语句回顾如何创建数据库如何创建表结构数据类型和约束什么是索引,创建和管理索引如何更改数据库表目标掌握如何使用Insert向表中插入数据掌握如何使用Update更新表中已有数据掌握如何使用Delete删除表中已有数据掌握如何使用Select查询数据什么是CRUDCRUD就是Create,Retrieve,Update,Delete的英文首字母的缩写CRUD是指在做计算处理时的增加、查询(重新得到数据)、更新和删除几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能添加新数据使用INSERT的最基本的语法INSERTINTO表名(列名列表)VALUES(值列表);INSERTINTOEmployees(FirstName,LastName,HireDate,ReportsTo)VALUES('John','Clinton','2004-01-01',2);讲述T-SQL之前…语法检查数据库对象执行选择数据库T-SQL执行结果插入数据行7-1InSert[INTO]表名[列名]Values值列表INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES('张青裁','上海松江',6,'ZQC@Sohu.com',0)插入数据行7-2注意事项1:每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES('张青裁')代码错误插入数据行7-3注意事项2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配;INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES('张青裁','上海松江',ZQC,'ZQC@Sohu.com','ZG')代码错误插入数据行7-4注意事项3:不能为标识列指定值,因为它的数字是自动增长的;INSERTINTOStudents(SCode,SName,SAddress,SGrade,SEmail,SSEX)VALUES(32,'张青裁','上海松江',6,'ZQC@Sohu.com',0)代码错误插入数据行7-5注意事项4:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;INSERTINTOStudents(SAddress,SGrade,SEmail,SSEX)VALUES('上海松江',6,'ZQC@Sohu.com',0)代码错误插入数据行7-6注意事项5:插入的数据项,要求符合检查约束的要求INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES('张青裁','上海松江',6,'ZQC',0)代码错误插入数据行7-7注意事项6:具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值INSERTINTOStudents(SName,SAddress,SGrade,SEmail,SSEX)VALUES('张青裁',DEFAULT,6,'ZQC@Sohu.com',0)示例CREATETABLEStudent1(StudentIDintIDENTITYPRIMARYKEY,StudentNamevarchar(20)DEFAULT'Anonymous',BirthDatevarchar(20)DEFAULT'Unknown');INSERTINTOStudent1(StudentName)VALUES(DEFAULT);示例如果StudentID列是一个标识列,那么我们就可以在INSERT语句中省略它,因为RDBMS会负责自动为该列添加数据。如果我们试图对一个标识列插入数据,在某些RDBMS中会出错在INSERT语句中,包含列名不是严格必须的。如果我们知道每个列的名字,并且知道列在数据库中的顺序,那么我们就可以忽略列名列表CREATETABLEStudents(StudentIDintPRIMARYKEY,StudentNamevarchar(50));INSERTINTOStudents(StudentID,StudentName)VALUES(1,'John1')INSERTINTOStudentsVALUES(2,'John2');执行多行插入SQL不允许使用常量值一次添加多行。但是SQL允许使用从一个嵌入的SELECT查询中获取的值,来一次向表中添加多行以这种方式使用INSERT语句,与上小节的语法有两点不同:在INSERT语句中不用VALUES关键字,而是以一个嵌入在INSERT中的SELECT查询获取的数据来替代插入数据的列名列表是可选的。如果提供了列名列表,那么被SELECT查询返回的,组成INSERT语句值的列必须跟列表中的列有相同列数、数据类型和顺序。如果没有提供列名列表,那么SELECT查询中的列必须匹配目标表中的列。作为规则之一,我们最好在INSERT语句中包含列名,因为这样可以使调试更容易这条语句经常用于在数据库中移动大量数据,例如备份数据INSERTINTO表名(列名列表)SELECTSelect语句;示例与Select(列名)into(表名)from(表名)的区别INSERTINTOStudent1(StudentName)VALUES('John2');INSERTINTOStudent1(StudentName)VALUES('John3');INSERTINTOStudent1(StudentName)VALUES('John4');INSERTINTOStudent1(StudentName)VALUES('John5');INSERTINTOStudents(StudentID,StudentName)SELECTStudentID+2,StudentNameFROMStudent1;更改已有数据UPDATE表名SET新列值列表WHERE过滤条件;删除数据DELETEFROM表名WHERE过滤条件Truncatetable表名Droptable表名问题:三者有什么区别?查询数据有哪些查询操作投影、选择、联接、除、并、交、差、笛卡尔乘积语法Select[distinct]{*|列名[别名],…}From表名[where条件][orderby列名]投影操作语法Select列名列表from表名要点表别名、列别名计算列排除重复数据:distinct限定行数:topn[percent]返回单列语法DEMOSELECT列名FROM表名;SELECTNameFROMProfessor;SELECTProfessor.NameFROMProfessor;返回多列语法DEMOSELECT列A,列B,列CFROM表名;SELECTStudentID,ExamID,CommentsFROMStudentExam;SELECT*FROMStudentExam;使用别名语法DEMOSELECT列AASA,列BASB,列CASCFROM表名AST;SELECTT.列AASA,T.列BASB,T.列CASCFROM表AST;SELECTT.列AA,T.列BB,T.列CCFROM表T;SELECTNameASStudentName,StudentIDASIDFROMStudent;返回计算列执行数学计算连接字符串值SELECTStudentID,ExamID,Mark*IfPassedASMarkIfPassedFROMStudentExam;SELECTFirstName+''+LastNameASFullNameFROMPeople;说明:不同的数据库连接字符串方式是不一样的。过滤重复数据语法DEMOSELECTDISTINCT列AFROM表;SELECTDISTINCT列A,列BFROM表;SELECTSustainedOnfromExam;SELECTDISTINCTSustainedOnFROMExam;SELECTDISTINCTCustomerName,CreditCardFROMCustomers;SELECTDISTINCTExamID,SustainedOnFROMExam;返回限定行数的查询为什么要限定行数数据库有100万条记录,能不能一次查询出来?如何限定行数第一种:指定返回多少行语法:selecttop行数列1,列2from表第二种:指定返回的百分比语法:selecttop百分数PERCENT列1,列2from表示例:SelectTOP120from表SelectTOP15PERCENTfrom表单条件选择语法DEMOSELECT列A,列BFROM表WHERE条件;SELECT列A,列BFROM表WHERE列C=值;SELECTNameFROMStudentWHEREStudentID=3;SELECTFirstName,LastName,AddressFROMCustomersWHERELastName=FirstName;多条件选择操作组合WHERE条件And:并且Or:或者DEMOSELECT列A,列BFROM表WHERE条件1(and或者or)条件2;SELECTStudentID,Mark,CommentsFROMStudentExamWHEREExamID=1ANDPassed=1;SELECTStudentID,Mark,CommentsFROMStudentExamWHERE(Passed=1ORMark80)and(Passed=1)SELECTStudentID,Mark,CommentsFROMStudentExamWHEREExamID=1ANDNOTPassed=1;BETWEEN关键字语法DEMOSELECT列A,列BFROM表WHERE列CBETWEEN下限AND上限;SELECTExamID,SustainedOn,CommentsFROMExamWHERESustainedOnBETWEEN'2003-03-20'AND'2003-03-24';SELECTExamID,SustainedOn,CommentsFROMExamWHERESustainedOnNOTBETWEEN'2003-03-20'AND'2003-03-24';IN关键字语法DEMOSELECT列A,列BFROM表WHERE列C=Value1OR列C=Value2OR列C=Value3;SELECT列A,列BFROM表WHERE列CIN(值集合);SELECT列A,列BFROM表WHERE列CIN('Value1','Value2','Value3');SELECT列A,列BFROM表WHERE列CIN(SELECT列DFROM表2);SELECTStudentID,ExamID,MarkFROMStudentExamWHEREStudentIDin(1,2,3)LIKE关键字语法使用百分号(%)通配符使用下划线(_)通配符SELECT列A,列BFROM表WHERE列CLIKE模式;SELECTExamID,CommentsFROMExamWHERECommentsLIKE'%hour%';--包含hourSELECTExamID,CommentsFROMExamWHERECommentsLIKE'%hour';--以hour结尾SELECTExamID,CommentsFROMExamWHERECommentsLIKE'hour%';--以hour开始SELECTnameFROMprofessorWHEREnameLIKE'_____%';模式匹配注意事项使用模式匹配时

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功