sql常用需记忆_第1页
sql常用需记忆_第2页
sql常用需记忆_第3页
sql常用需记忆_第4页
sql常用需记忆_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、应用程序作用:响应操作并显示结果、向数据库请求数据要求:美观、操作简单方便数据库作用:存储数据、检索数据、生成新的数据要求:统一、安全、性能等数据库能够做什么存储大量数据,方便检索和访问保持数据信息的一致、完整共享和安全通过组合分析,产生新的有用信息关系数据库关系数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关系模型由关系数据结构、关系操作集合、关系完整性约束三部分组成。关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。关系模块中常用的操作包括: 数据查询,选择,投影,连接,并、交、差、除 数据操作,增加,

2、删除,修改,更新。完整性约束包括: 实体完整性,参照完整性,用户定义完整性。创建数据库表通过SQL创建基本语法:create table table_name(column_name1 data_type,column_name2 data_type,)表命名规范:1.表名对大小写不敏感,为多个单词组合时每个单词间用_分割。2.首字母必须是AZ之一,其余的字符可以是字母、_、#、$和等符号。实例:创建一个student表,包括学号(sno)、姓名(sname)、性别(sex)、出生年月(birthday)、系号(dno) use studycreate table student (sno i

3、nt ,sname varchar(50),sex tinyint,birthday datetime,dno int)表的删除语法格式: drop table table_name注意:这里表的删除不仅删除表内存储的数据,而是整个表结构都被删除了,即该表不存在了。 查看表中的数据use my_studygoselect * from student增加新列语法格式:alter table table_nameadd column_name data_type注意事项: 也可以对列设置非空约束和缺省值。 除非指定缺省值,否则DBMS为已有行上的新列设null值。 如果表中已有记录,为添加的新列

4、指定了not null约束,则必须同时提供缺省值。 删除列语法格式:alter table table_namedrop column column_name注意事项:1.一次可以删除多个列,在列名后用逗号分隔。2.在SQL SERVER中,那些赋予默认值的列、或者作为主键的列或者在另外表中标识为外键的列不能被删除,要删除这些列必须删除相应的约束,而具有非空约束的列可以被删除。 修改列在不破坏数据的情况下,SQL允许修改表中某列的结构,常用的修改操作包括字符长度限制的修改和非空约束的限制和取消语法格式:(SQL)alter table table_namealter column column

5、_name data_type语法格式:(mySQL)ALTER TABLE student CHANGE haha haha CHAR(30)SQL Server不仅允许改变列的数据长度,还允许改变其数据类型。但是当列为以下情况时,则不能改变其数据类型。l 是TEXT、IMAGE 、NTEXT类型l 是索引的一部分l 是primary key或者 foreign key的一部分l 具有缺省值约束l 具有check约束l 具有unique约束SQL中的库函数与mySQL不一样使用系统存储过程可以查看表的结构,语法如下:sp_help table_nameSQL Server 允许使用sp_re

6、name关键词可以修改表的名字而不改变其他信息语法格式:sp_rename table_name, new_table_namesp_rename关键词不仅可以对表进行重命名,还可以对表中的列进行重命名。 实例:将my_student表中的sname列该名为student_namesp_rename 'my_student.sname' ,student_name,column数据插入操作插入单行记录基本语法:insert into table_namecolumn1,column2,values (value1,value2,.)注意: 1.values中值的个数与表中字段的

7、个数相同,且顺序必须与各字段的顺序相对应。 2.如果表名table_name后面没有指定列,则认为是整行插入。3.插入的数据类型应与被插入字段的数据类型相同。4.数据的大小应在规定的范围内。给部分列插入数据insert into student(sname,sex) values('smm',0)没有插入值的列将被填入空值给所有列插入数据insert into student values('smm','2008-9-21',0)这时不需要一一指定所有的列插入多行记录语法格式:insert into table_name(column1,colu

8、mn2,)select column1,column2,from table_name2where search_condition注意事项:1.table_name和table_name2不能为同一个表。2.insert into 语句中列的数目和类型必须等于从select语句返回列的数目和类型。 实例,将student表中所有女学生的记录插入到一个新表female_student(sno,sname,birthday)中。create table female_student (sno int not null,sname varchar(50),birthday datetime)ins

9、ert into female_student select sno,sname,birthday from student where sex = 0使用selectinto语句通过selectinto语句,直接将表中的数据复制到新表且该新表不需要预先创建。语法格式:select column1,column2,into new_tablefrom table_namewhere search_condition实例,将student表中所有男学生的记录插入到一个新表male_student(sno,sname,birthday)中。select sno,sname,birthday int

10、o male_student from student where sex = 1使用 UPDATE 更改数据 基本语法update table_name set column1=value1, column2=value2,.where search_condition删除表中的数据基本语法delete from table_namewhere search_condition注释: 1. - 单行注释2. /*/ 块注释简单的查询一、查询的基本结构二、列的查询三、排序查询结果四、使用where子句定义搜索条件查询SELECT语句的结构语法格式:select distinct column_

11、listfrom table_namewhere search_conditiongroup by group_by_expressionhaving search_conditionorder by order_expression ASC|DESC(distinct:消除重复行)执行步骤:1.执行from子句,根据from子句中的一个或者多个表创建工作表。如果在from子句中有两个或多个表,DBMS将对表进行交叉连接,作为工作表。 2.如果有where子句,DBMS将WHERE子句列出的搜索条件作用于步骤(1)生成的工作表。DBMS将保留那些满足搜索条件的行,删除那些不满足搜索条件的行。

12、3.如果有group by子句,DBMS将步骤2生成的结果表中的行分成多个组,每个组所有行的group_by_expression字段具有相同的值,DBMS将每组减少到单行,而后将其添加到新的结果表中。 4.如果有having子句,DBMS将having子句列出的搜索条件作用于3生成的“组合”表中的每一行。DBMS将保留那些满足条件的行,删除那些不满足搜索条件的行。 5.将select子句作用于结果表。删除结果表中不包含在select_list中的列,如果select子句中包含distinct关键字,DBMS将从结果中删除重复的行。 6.如果有order by子句,按照指定的排序规则对结果进行

13、排序。7.对于交互式select语句,在屏幕上显示结果,对于嵌入式sql,使用游标将结果传递到宿主程序中。 列的查询单列查询select columnfrom table_name多列查询select column1,column2,columnnfrom table_name排序查询结果单列排序多列排序反向排序单列排序语法规则:select column1,column2,from table_nameorder by column N多列排序语法规则:select column1,column2,from table_name_nameorder by column1,column2,co

14、lumnm逆序语法规则:select column1,column2,from table_name_nameorder by column1 desc,column2仅返回查询结果的指定行使用top n percent 仅返回n行1. select top 5 * from teacher order by sal desc2. select top 20 percent * from teacher order by sal desc修改结果中列的标题(别名)1. select name as '姓名' from student2. select name '姓名&

15、#39; from student3. select '姓名'=name from studentwhere子句定义搜索条件查询1.where子句单条件查询2.单值比较运算符3.between运算符范围筛选4.null值的判断Where子句单条件查询语法规则select columnfrom table_namewhere column condition value单值比较运算符运算符含义=等于>大于<小于>=大于或等于<=小于或等于<>不等于!非Between运算符在where子句中,可以采用between运算符在两个值之间进行比较筛选。

16、比如,选择范围在5-10之间的数字。 Null值的判断select tname, sal,age,sex from teacher Where sal is not null组合查询条件AND运算符OR运算符AND、OR运算符的组合使用AND、OR运算符语法如下select columnfrom table_namewhere condition1or condition2AND、OR运算符的组合使用select tname,dname,sal from teacher where (dname='计算机' or dname='生物') and sal >

17、 1000注意事项:和大多数语言一样,AND的优先级要高于ORIN运算符和NOT运算符利用“IN”运算符可以查询属性值属于指定集合的记录。利用“NOT IN”可以查询属性值在指定集合外的元组 语法格式:select column_listfrom table_namewhere column_expressionin (value1,valuen)not运算符不能单独使用,常和其他运算符联合使用如,not in、not betweenand、not null等select tname,dname,age,sexfrom teacher where dname (not) in ('计算

18、机' ,'生物','机械工程')使用like进行模糊查询Like关键字是一个匹配运算符,它与字符串表达式相匹配,用于查询与给定的某些串相匹配的数据,通常称模糊查询。字符串表达式由字符串和通配符组成,sql中包含以下4个通配符:1. %百分号,匹配任何包含0个或多个字符的字符串2. _下划线,匹配任何单个字符3. 排列通配符,匹配任何在范围或集合之内的单个字符,例如,m-p匹配的是m、n、o、p单个字符4. 匹配任何不在范围或集合之内的单个字符注意:1. 通配符和字符串必须括在单引号中2. 只有char、varchar和text类型的数据才能使用like运

19、算符和通配符。Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。       方法executeQuery        用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,它几乎是使用最多的 SQL 语句。  

20、;     方法executeUpdate       用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值

21、总为零。       使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。       方法exe

22、cute:       用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能       execute方法应该仅在语句能返回多个ResultSet对象、多个更新计数或ResultSet对象与更新计数的组合时使用。当执行某个已存储过程或动态执行未知 SQL 字符串(即应用程序程序员在编译时未知)时,有可能出现多个结果的情况,尽管这种情况很少见。       因为方法 execute

23、处理非常规情况,所以获取其结果需要一些特殊处理并不足为怪。例如,假定已知某个过程返回两个结果集,则在使用方法 execute 执行该过程后,必须调用方法 getResultSet 获得第一个结果集,然后调用适当的 getXXX 方法获取其中的值。要获得第二个结果集,需要先调用 getMoreResults 方法,然后再调用 getResultSet 方法。如果已知某个过程返回两个更新计数,则首先调用方法 getUpdateCount,然后调用 getMoreResults,并再次调用 getUpdateCount。       对于不

24、知道返回内容,则情况更为复杂。如果结果是 ResultSet 对象,则方法 execute 返回 true;如果结果是 Java int,则返回 false。如果返回 int,则意味着结果是更新计数或执行的语句是 DDL 命令。在调用方法 execute 之后要做的第一件事情是调用 getResultSet 或 getUpdateCount。调用方法 getResultSet 可以获得两个或多个 ResultSet 对象中第一个对象;或调用方法 getUpdateCount 可以获得两个或多个更新计数中第一个更新计数的内容。       当

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论