sql中的运算符和常用的模糊查询

sql运算符及其语义如下

其中in关键字可能很多小白不会使用,它用于查询指定查询范围中的数据,一般为in(xxx,xxx,xxx)

is null: 就是空值的意思,数据库中没有值的部分就是<null>,空值;这里注意去辨别,究竟是null字符串(要用='null'才可以)还是真正的<null>

模糊查询like

sql中除了使用运算符之外,还可以使用like操作符配合通配符进行模糊查询

模糊查询的语法:

select *
from t1
where x  like '通配符+字符'

通配符用来匹配值的一部分,类似正则

结合这两个通配符就可以对字符串进行一些相应的查询了,比如我想要查询以C开头,以a结尾的国家信息,就可以这么写:

select *
from country
where name like 'C%a'

注意%可以表示出现任意次数的字符,但是_只能表示一个字符,也就相当于是占位符了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《精通SQ:结构化查询语言详解》全面讲解SQL语言,提供317个典型应用,读者可以随查随用,针对SQL Server和Oracle进行讲解,很有代表性。 全书共包括大小实例317个,突出了速学速查的特色。《精通SQ:结构化查询语言详解》内容丰富,讲解通俗易懂,具有很强的实用性和可操作性。 目录 第1章 数据库与SQL基础  1.1 数据库的基本概念  1.1.1 数据库的由来  1.1.2 数据库系统的概念  1.2 数据库系统的结构、组成及工作流程 1.2.1 数据库的体系结构  1.2.2 数据库系统的组成  1.2.3 数据库的工作流程  1.3 数据库的发展  1.3.1 第一代数据库  1.3.2 第二代数据库  1.3.3 新一代数据库技术的研究和发展  1.4 关系数据库  1.4.1 关系模型  1.4.2 Codd十二法则  1.4.3 范式  1.5 SQL语言基础  1.5.1 SQL的历史  1.5.2 SQL语言的组成 1.5.3 SQL语句的结构  1.5.4 SQL的优点  1.5.5 SQL的执行  1.6 SQL环境  1.6.1 环境  1.6.2 SQL的层次结构  1.6.3 客户程序和服务程序系统  1.6.4 SQL环境对象的命名规则  第2章 主要的关系数据库与SQL  2.1 SQL Server  2.1.1 SQL Server的结构  2.1.2 数据库访问标准化接口-ODBC  2.1.3 使用查询分析器执行SQL语句  2.2 Transact-SQL  2.2.1 Transact-SQL 概述  2.2.2 Transact-SQL的主要组成  2.2.3 Transact-SQL的一些重要命令  2.3 Oracle数据库  2.3.1 Oracle数据库软件组成 2.3.2 Oracle数据库体系结构  2.3.3 Oracle数据库系统结构 2.3.4 使用SQL*Plus执行SQL语句 2.4 PL/SQL简介  2.4.1 PL/SQL的特点  2.4.2 PL/SQL程序结构 第3章 创建、修改和删除表 3.1 表的基础知识  3.1.1 表的基本结构  3.1.2 表的种类  3.2 SQL数据类型  3.2.1 字符型数据 3.2.2 数字型数据  3.2.3 日期数据类型 3.2.4 二进制数据类型 3.2.5 文本和图形数据类型  3.2.6 自定义数据类型  3.3 表的创建(CREATE)  3.3.1 创建基本表  3.3.2 非空约束  3.3.3 DEFAULT指定缺省值  3.4 表的修改  3.4.1 增加新列 3.4.2 删除列  3.4.3 修改列  3.5 表的删除与重命名  3.5.1 重命名表  3.5.2 删除表  3.6 创建、删除数据库  3.6.1 数据库的创建  3.6.2 SQL Server数据库的创建 3.6.3 删除数据库  第4章 索引与视图的创建 4.1 索引的基础知识 4.1.1 索引的概念  4.1.2 索引的结构  4.2 索引的创建与销毁  4.2.1 基本创建语法  4.2.2 本章实例用到的实例表 4.2.3 创建简单的非簇索引 4.2.4 多字段非簇索引的创建  4.2.5 使用UNIQUE关键字创建惟一索引  4.2.6 使用CLUSTERDE关键字创建簇索引 4.2.7 索引的销毁  4.2.8 使用索引的几点原则  4.3 视图的基础知识  4.3.1 视图简介  4.3.2 视图的优缺点  4.4 视图的创建与销毁  4.4.1 基本创建语法  4.4.2 创建简单的视图  4.4.3 利用视图简化表的复杂连接  4.4.4 利用视图简化复杂查询 4.4.5 视图的销毁  4.4.6 使用视图的几点原则  第5章 简单的查询  5.1 查询的基本结构  5.1.1 SELECT语句的结构  5.1.2 SELECT语句的执行步骤  5.2 列的查询  5.2.1 本章用到的实例表  5.2.2 单列查询  5.2.3 使用DISTINCT去除重复信息  5.2.4 多列查询  5.2.5 查询所有的列 5.3 排序查询结果 5.3.1 单列排序  5.3.2 多列排序 5.3.3 采用序号进行多列排序 5.3.4 反向排序  5.4 使用WHERE子句定义搜索条件查询  5.4.1 WHERE子句单条件查询 5.4.2 单值比较运算符 5.4.3 BETWEEN运算符范围筛选 5.4.4 NULL值的判断 第6章 复杂搜索条件查询  6.1 本章用到的实例表  6.2 组合查询条件  6.2.1 AND运算符  6.2.2 OR运算符  6.2.3 AND、OR运算符的组合使用  6.3 IN运算符  6.3.1 IN运算符的使用  6.3.2 IN运算符与OR运算符  6.4 NOT运算符 6.4.1 使用NOT运算符  6.4.2 NOT运算符运算符  6.5 使用LIKE进行模糊查询 6.5.1 LIKE运算符  6.5.2 “%”通配符 6.5.3 “_”通配符 6.5.4 “[]”通配符  6.5.5 使用ESCAPE定义转义符  第7章 连接符、数值运算与函数  7.1 本章实例用到的表 7.2 连接符 7.2.1 连接符的应用  7.2.2 使用别名 7.3 数值运算  7.3.1 数学运算符的种类 7.3.2 数学运算符的运用  7.3.3 使用CAST表达式转换数据类型  7.3.4 使用CASE表达式  7.4 函数  7.4.1 有关函数的说明  7.4.2 字符处理函数  7.4.3 算术运算函数  7.4.4 日期时间函数  7.4.5 CONVERT()函数转换日期、时间 第8章 聚合分析与分组  8.1 聚合分析的基本概念  8.1.1 聚合分析  8.1.2 聚合函数  8.2 聚合函数的应用  8.2.1 求和函数-SUM()  8.2.2 计数函数-COUNT()  8.2.3 最大/最小值函数-MAX()/MIN()  8.2.4 均值函数-AVG()  8.2.5 聚合分析的重值处理  8.2.6 聚合函数的组合使用  8.3 组合查询  8.3.1 GROUP BY子句创建分组  8.3.2 GROUP BY子句根据多列组合行  8.3.3 ROLLUP运算符和CUBE运算符  8.3.4 GROUP BY子句的NULL值处理  8.3.5 HAVING子句  8.3.6 HAVING子句与WHERE子句  8.3.7 SELECT语句各查询子句总结  第9章 多表查询  9.1 本章用到的实例表  9.2 表的基本连接  9.2.1 连接表的目的 9.2.2 简单的二表连接 9.2.3 多表连接 9.2.4 使用表别名 9.2.5 采用JOIN关键字建立连接 9.3 表的连接类型  9.3.1 自连接  9.3.2 自然连接(NATURAL JOIN)  9.3.3 内连接(INNER JOIN) 9.3.4 外连接(OUTER JOIN)  9.3.5 交叉连接(CROSS JOIN)  9.4 UNION与UNION JOIN  9.4.1 关系的集合运算  9.4.2 UNION运算符  9.4.3 ORDER BY子句排序UNION运算结果  9.4.4 对多表进行UNION运算  9.4.5 UNION JOIN 连接表  9.5 表连接的其他应用及注意问题  9.5.1 连接表进行聚合运算  9.5.2 多表连接的综合运用  9.5.3 多表连接注意事项  第10章 子查询  10.1 创建和使用返回单值的子查询  10.1.1 在多表查询使用子查询  10.1.2 在子查询使用聚合函数  10.2 创建和使用返回多行的子查询  10.2.1 IN子查询  10.2.2 IN子查询实现集合交和集合差运算 10.2.3 EXISTS子查询  10.2.4 EXISTS子查询实现两表交集  10.2.5 SOME/ALL子查询  10.2.6 UNIQUE子查询  10.3 相关子查询  10.3.1 使用IN引入相关子查询  10.3.2 比较运算符引入相关子查询 10.3.3 在HAVING子句使用相关子查询  10.4 嵌套子查询  10.5 使用子查询创建视图  10.6 树查询 第11章 数据插入操作  11.1 插入单行记录  11.1.1 基本语法  11.1.2 整行插入  11.1.3 NULL值的插入 11.1.4 惟一值的插入  11.1.5 特定字段数据插入  11.1.6 通过视图插入行 11.2 插入多行记录 11.2.1 由VALUES关键字引入多行数据插入  11.2.2 使用SELECT语句插入值 11.3 表数据的复制  11.3.1 基本语法  11.3.2 应用实例  11.4 从外部数据源导入、导出数据  11.4.1 Access数据库数据的导出  11.4.2 Access数据库数据的导入  11.4.3 SQL Server数据库数据导出  11.4.4 SQL Server数据库数据导入  第12章 数据的更新和删除  12.1 更新表的数据  12.1.1 UPDATE语句的基本语法 12.1.2 UPDATE语句更新列值  12.1.3 利用子查询更新多行的值 12.1.4 依据外表值更新数据 12.1.5 分步更新表 12.2 删除表的数据  12.2.1 DELETE语句基本语法  12.2.2 DELETE语句删除单行数据  12.2.3 DELETE语句删除多行数据  12.2.4 DELETE语句删除所有行  12.2.5 TRUNCATE TABLE语句 12.3 通过视图更新表  12.3.1 可更新视图的约束  12.3.2 通过视图更新表数据  12.3.3 通过视图删除表数据  第13章 安全性控制  13.1 SQL安全模式  13.1.1 授权ID  13.1.2 SQL的安全对象和权限 13.1.3 授权图  13.2 角色管理  13.2.1 CREATE语句创建角色  13.2.2 DROP语句删除角色  13.2.3 GRANT语句授予角色  13.2.4 REVOKE语句取消角色  13.3 权限管理  13.3.1 GRANT语句授予权限  13.3.2 REVOKE语句取消权限 13.3.3 SELECT权限控制 13.3.4 INSERT权限控制  13.3.5 UPDATE权限控制 13.3.6 DELETE权限控制  13.4 SQL Server安全管理  13.4.1 SQL Server登录认证 13.4.2 SQL Server用户ID的管理 13.4.3 SQL Server权限管理  13.4.4 SQL Server角色管理  13.5 Oracle安全管理  13.5.1 Oracle用户、资源、概要文件、模式的概念 13.5.2 Oracle的用户管理  13.5.3 Oracle的资源管理  13.5.4 Oracle的权限管理 13.5.5 Oracle的角色管理  第14章 完整性控制 14.1 完整性约束简介  14.1.1 数据的完整性  14.1.2 完整性约束的类型  14.2 与表有关的约束  14.2.1 列约束与表约束的创建  14.2.2 NOT NULL(非空)约束 14.2.3 UNIQUE(惟一)约束  14.2.4 PRIMARY KEY(主键)约束 14.2.5 FOREIGN KEY(外键)约束 14.2.6 CHECK(校验)约束 14.3 深入探讨外键与完整性检查  14.3.1 引用完整性检查  14.3.2 MATCH子句  14.3.3 更新、删除操作规则 14.4 域约束与断言 14.4.1 域与域约束 14.4.2 利用断言创建多表约束 14.5 SQL Server的完整性控制  14.5.1 创建规则(Rule) 14.5.2 规则的绑定与松绑 14.5.3 创建缺省值(Default)  14.5.4 缺省值的绑定与松绑  第15章 存储过程与函数  15.1 SQL的存储过程与函数  15.2 SQL Server 的流控制语句  15.2.1 BEGIN...END语句 15.2.2 IF...ELSE语句  15.2.3 WHILE、BREAK和CONTINUE语句 15.2.4 DECLARE语句 15.2.5 GOTO label语句 15.2.6 RETURN语句  15.2.7 WAITFOR语句  15.2.8 PRINT语句  15.2.9 注释 15.3 SQL Server的存储过程和函数  15.3.1 系统存储过程  15.3.2 使用CREATE PROCEDURE创建存储过程 15.3.3 使用EXECUTE语句调用存储过程  15.3.4 使用CREATE FUNCTION创建函数  15.3.5 使用Enterprise Manager创建存储过程和函数 15.3.6 修改和删除存储过程和函数  15.4 Oracle的流控制语句  15.4.1 条件语句  15.4.2 循环语句  15.4.3 标号和GOTO  15.5 Oracle数据库的存储过程  15.5.1 存储过程的创建与调用  15.5.2 Oracle存储过程和函数的管理 第16章 SQL触发器  16.1 触发器的基本概念  16.1.1 触发器简介  16.1.2 触发器执行环境 16.2 SQL Server的触发器  16.2.1 SQL Server触发器的种类  16.2.2 使用CREATE TRIGGER命令创建触发器 16.2.3 INSERT触发器  16.2.4 DELETE触发器  16.2.5 UPDATE触发器  16.2.6 INSTEAD OF触发器  16.2.7 嵌套触发器  16.2.8 递归触发器  16.2.9 SQL Server触发器的管理  16.3 Oracle数据库触发器的操作  16.3.1 Oracle触发器类型  16.3.2 触发器的创建 16.3.3 创建系统触发器  16.3.4 触发器的触发次序和触发谓词的使用  16.3.5 Oracle触发器的管理  第17章 SQL游标的使用  17.1 SQL游标的基本概念  17.1.1 游标的概念  17.1.2 游标的作用及其应用 17.2 SQL游标的使用 17.2.1 使用DECLARE CURSOR语句创建游标  17.2.2 使用OPEN/CLOSE语句打开/关闭游标  17.2.3 使用FETCH语句检索数据  17.2.4 基于游标的定位DELETE语句  17.2.5 基于游标的定位UPDATE语句 17.3 SQL Server游标的扩展  17.3.1 Transact_SQL扩展DECLARE CURSOR语法  17.3.2 @@CURSOR_ROWS全局变量确定游标的行数  17.3.3 @@FETCH_STATUS全局变量检测FETCH操作的状态 17.3.4 游标的关闭与释放 17.3.5 游标变量  17.3.6 使用系统过程管理游标  17.4 Oracle游标的使用  17.4.1 显式游标与隐式游标 17.4.2 游标的属性  17.4.3 %TYPE、%ROWTYPE定义记录变量  17.4.4 参数化游标  17.4.5 游标的循环  17.4.6 游标变量 17.5 小结  第18章 事务控制与并发处理 18.1 SQL事务控制  18.1.1 事务控制的引入  18.1.2 事务的特性  18.1.3 SQL与事务有关的语句  18.2 事务控制的具体实现 18.2.1 开始事务  18.2.2 SET CONSTRAINTS语句设置约束的延期执行  18.2.3 终止事务  18.3 并发控制 18.3.1 并发操作的问题 18.3.2 事务隔离级别  18.3.3 SET TRANSACTION设置事务属性  18.4 SQL Server的并发事务控制  18.4.1 锁的分类  18.4.2 SQL Server表级锁的使用  18.4.3 设置隔离级别实现并发控制 18.4.4 死锁及其预防  18.5 Oracle的并发事务控制  18.5.1 通过加锁避免写数据丢失 18.5.2 设置只读事务(READ ONLY)  18.5.3 Oracle的隔离级别  第19章 嵌入式SQL  19.1 SQL的调用  19.1.1 直接调用SQL 19.1.2 嵌入式SQL  19.1.3 SQL调用层接口(CLI)  19.2 嵌入式SQL的使用  19.2.1 创建嵌入式SQL语句  19.2.2 SQL通信区  19.2.3 主变量  19.2.4 嵌入式SQL使用游标  19.3 检索、操作SQL数据  19.3.1 不需要游标的SQL DML操作 19.3.2 使用游标的SQL DML操作 19.3.3 动态SQL技术  19.4 SQL Server嵌入式SQL的编译运行 19.4.1 嵌入式SQL代码  19.4.2 预编译文件  19.4.3 设置Visual C++ 6.0连接  19.4.4 编译运行程序  19.5 Oracle嵌入式SQL的编译运行  19.5.1 嵌入式SQL代码 19.5.2 预编译文件  19.5.3 设置Visual C++ 6.0编译环境  19.5.4 编译运行程序  附录A SQL保留字  附录B 常用SQL命令  附录C 关于运行环境的说明  C.1 SQL Server 2000  C.1.1 直接访问  C.1.2 从企业管理器访问 C.2 Oracle系统
一、选择题:(20分) 1、根据关系数据基于的数据模型——关系模型的特征判定下列正确的一项:(___) A、只存在一对多的实体关系,以图形方式来表示。 B、以二维表格结构来保存数据,在关系表不答应有重复行存在。 C、能体现一对多、多对多的关系,但不能体现一对一的关系。 D、关系模型数据库是数据库发展的最初阶段。 2、在“连接”组有两种连接认证方式,其在(___)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。 A、Windows身份验证 B、SQL Server 身份验证 C、以超级用户身份登录时 D、其他方式登录时 3、SQL Server 2000 在安装之前,应留意的事项:(___) A、SQL Server 2000的任何版本在安装时都不用考虑操作系统的制约。 B、SQL Server 2000的安装对硬件的要求不作任何限制。 C、SQL Server 2000 在安装之前,必须在操作系统级启用TCP/IP。 D、在Windows NT Server 4.0上安装SQL Server 2000时,最低的要求是必须安装Service Pack 4(SP4)以上。 4、关系数据库,主键是(1___),主键的建立有(2___)种方法,当运用Transact-SQL语句创建主键时,可以是(3___)。 ⑴ A、为标识表唯一的实体 B、创建唯一的索引,答应空值 C、只答应以表第一字段建立 D、答应有多个主键的 ⑵ A、一 B、二 C、三 D、四 ⑶ A、create table table1 (column1 char(13) not null primary, column2 int not) on primary; B、alter table table1 with notcheck add constraint [PK_table1] primary key nonclustered ( column1) on primary; C、alter table table1 column1 primary key ; 5、表在数据库是一个非常重要的数据对象,它是用来(1___)各种数据内容的,数据库创建后就可以创建表了,创建表可以用(2___)等方法来创建。 ⑴ A、显示 B、查询 C、存放 D、检索 ⑵ A、企业治理器 B、查询分析器 C、OSQL D、企业治理器和CREATE TABLE语句 6、为数据表创建索引的目的是(1___),可以在创建表时用(2___)来创建唯一索引,也可以用(2___)来创建唯一索引。 ⑴ A、提高查询的检索性能 B、创建唯一索引 C、创建主键 D、归类 ⑵ A、设置主键约束,设置唯一约束 B、Create table,Create index C、设置主键约束,Create index D、以上都可以 7、 在Transact-SQL语法,用来插入数据的命令是(___),用于更新的命令是(___)。 A、INSERT,UPDATE B、UPDATE,INSERT C、DELETE,UPDATE D、CREATE,INSERT INTO 8、在Transact-SQL语法,SELECT语句的完整语法较复杂,但至少包括的部分(1___),使用要害字(2___)可以把重复行屏蔽,将多个查询结果返回一个结果集合的运算符是(3___),假如在SELECT语句使用集合函数时,一定在后面使用(4___)。 ⑴ A、SELECT,INTO B、SELECT,FROM C、SELECT,GROUP D、仅SELECT ⑵ A、DISTINCT B、UNION C、ALL C、TOP ⑶ A、JOIN B、UNION C、INTO C、LIKE ⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 9、视图是一种常用的数据对象,它是提供(1___)和(1___)数据的另一种途径,可以简化数据库操作,当使用多个数据表来建立视图时,表的连接不能使
查询数据指从数据库获取所需要的数据。查询数据是数据库操作常用,也是最重要的操作。用户可以根据自己对数据的需求,使用不同的查询方式。通过不同的查询方式,可以获得不同的数据。MySQL是使用SELECT语句来查询数据的。在这一章将讲解的内容包括。 1、查询语句的基本语法 2、在单表上查询数据 3、使用聚合函数查询数据 4、多表上联合查询 5、子查询 6、合并查询结果 7、为表和字段取别名 8、使用正则表达式查询 什么是查询? 怎么查的? 数据的准备如下: [sql] view plain copy create table STUDENT( STU_ID int primary KEY, STU_NAME char(10) not null, STU_AGE smallint unsigned not null, STU_SEX char(2) not null ); insert into STUDENT values(2001,'小王',13,'男'); insert into STUDENT values(2002,'明明',12,'男'); insert into STUDENT values(2003,'红红',14,'女'); insert into STUDENT values(2004,'小花',13,'女'); insert into STUDENT values(2005,'天儿',15,'男'); insert into STUDENT values(2006,'阿猎',13,'女'); insert into STUDENT values(2007,'阿猫',16,'男'); insert into STUDENT values(2008,'阿狗',17,'男'); insert into STUDENT values(2009,'黑子',14,'男'); insert into STUDENT values(2010,'小玉',13,'女'); insert into STUDENT values(2011,'头头',13,'女'); insert into STUDENT values(2012,'冰冰',14,'女'); insert into STUDENT values(2013,'美丽',13,'女'); insert into STUDENT values(2014,'神乐',12,'男'); insert into STUDENT values(2015,'天五',13,'男'); insert into STUDENT values(2016,'小三',11,'男'); insert into STUDENT values(2017,'阿张',13,'男'); insert into STUDENT values(2018,'阿杰',13,'男'); insert into STUDENT values(2019,'阿宝',13,'女'); insert into STUDENT values(2020,'大王',14,'男'); 然后这是学生成绩表,其定义了外键约束 [sql] view plain copy create table GRADE( STU_ID INT NOT NULL, STU_SCORE INT, foreign key(STU_ID) references STUDENT(STU_ID) ); insert into GRADE values(2001,90); insert into GRADE values(2002,89); insert into GRADE values(2003,67); insert into GRADE values(2004,78); insert into GRADE values(2005,89); insert into GRADE values(2006,78); insert into GRADE values(2007,99); insert into GRADE values(2008,87); insert into GRADE values(2009,70); insert into GRADE values(2010,71); insert into GRADE values(2011,56); insert into GRADE values(2012,85); insert into GRADE values(2013,65); insert into GRADE values(2014,66); insert into GRADE values(2015,77); insert into GRADE values(2016,79); insert into GRADE values(2017,82); insert into GRADE values(2018,88); insert into GRADE values(2019,NULL); insert into GRADE values(2020,NULL); 一、查询语句的基本语法 查询数据是指从数据库的数据表或视图获取所需要的数据,在mysql,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy SELECT 属性列表 FROM 表名或视图列表 [WHERE 条件表达式1] [GROUP BY 属性名1 [HAVING 条件表达式2]] [ORDER BY 属性名2 [ASC|DESC]] 属性列表:表示需要查询的字段名。 表名或视图列表:表示即将进行数据查询的数据表或者视图,表或视图可以有多个。 条件表达式1:设置查询的条件。 属性名1:表示按该字段的数据进行分组。 条件表达式2:表示满足该表达式的数据才能输出。 属性2:表示按该字段的数据进行排序,排序方式由ASC或DESC参数指定。 ASC:表示按升序的顺序进行排序。即表示值按照从小到大的顺序排列。这是默认参数。 DESC:表示按降序的顺序进行排序。即表示值按照从大到小的顺序排列。 如果有WHERE子句,就按照“条件表达式1”指定的条件进行查询;如果没有WHERE子句,就查询所有记录。 如果有GROUP BY子句,就按照“属性名1”指定的字段进行分组;如果GROUP BY子句后面带着HAVING关键字,那么只有满足“条件表达式2”指定的条件的记录才能够输出。GROUP BY子句通常和COUNT()、SUM()等聚合函数一起使用。 如果有ORDER BY子句,就按照“属性名2”指定的字段进行排序。排序方式由ASC或DESC参数指定。默认的排序方式为ASC。 二、在单表上查询数据 2.1、查询所有字段 [sql] view plain copy select * from STUDENT; 2.2、按条件查询 (1) 比较运算符 > , < ,= , != (),>= , 13; in(v1,v2..vn) ,符合v1,v2,,,vn才能被查出 IN关键字可以判断某个字段的值是否在指定的集合。如果字段的值在集合,则满足查询条件,该纪录将被查询出来。如果不在集合,则不满足查询条件。其语法规则如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n ) [sql] view plain copy select * from STUDENT where STU_AGE in(11,12); between v1 and v2 在v1至v2之间(包含v1,v2) BETWEEN AND关键字可以判读某个字段的值是否在指定的范围内。如果字段的值在指定范围内,则满足查询条件,该纪录将被查询出来。如果不在指定范围内,则不满足查询条件。其语法规则如下: [ NOT ] BETWEEN 取值1 AND 取值2 [sql] view plain copy select * from STUDENT where STU_AGE between 13 and 15; (2)逻辑运算符 not ( ! ) 逻辑非 [sql] view plain copy select * from STUDENT where STU_AGE NOT IN(13,14,16); or ( || ) 逻辑或 OR关键字也可以用来联合多个条件进行查询,但是与AND关键字不同。使用OR关键字时,只要满足这几个查询条件的其一个,这样的记录将会被查询出来。如果不满足这些查询条件的任何一个,这样的记录将被排除掉。OR关键字的语法规则如下: 条件表达式1 OR 条件表达式2 [ …OR 条件表达式n ] 其,OR可以用来连接两个条件表达式。而且,可以同时使用多个OR关键字,这样可以连接更多的条件表达式。 [sql] view plain copy select * from STUDENT where STU_ID2015; and ( && ) 逻辑与 AND关键字可以用来联合多个条件进行查询。使用AND关键字时,只有同时满足所有查询条件的记录会被查询出来。如果不满足这些查询条件的其一个,这样的记录将被排除掉。AND关键字的语法规则如下: 条件表达式1 AND 条件表达式2 [ … AND 条件表达式n ] 其,AND可以连接两个条件表达式。而且,可以同时使用多个AND关键字,这样可以连接更多的条件表达式。 (3)模糊查询 like 像 LIKE关键字可以匹配字符串是否相等。如果字段的值与指定的字符串相匹配,则满足查询条件,该纪录将被查询出来。如果与指定的字符串不匹配,则不满足查询条件。其语法规则如下:[ NOT ] LIKE '字符串' “NOT”可选参数,加上 NOT表示与指定的字符串不匹配时满足条件;“字符串”表示指定用来匹配的字符串,该字符串必须加单引号或双引号。 通配符: % 任意字符 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '%王'; 表示匹配任何以王结尾的 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '阿%'; 表示匹配任何以阿开头的 _ 单个字符 比如说插入 [sql] view plain copy insert into STUDENT values(2021,'天下无镜',14,'男'); 然后 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '_下_'; 查询的结果为空 但是如果下后面加两个_符号 [sql] view plain copy select * from STUDENT where STU_NAME LIKE '_下__'; 查询结果不为空 “字符串”参数的值可以是一个完整的字符串,也可以是包含百分号(%)或者下划线(_)的通配字符。二者有很大区别 “%”可以代表任意长度的字符串,长度可以为0; “_”只能表示单个字符。 如果要匹配姓张且名字只有两个字的人的记录,“张”字后面必须要有两个“_”符号。因为一个汉字是两个字符,而一个“_”符号只能代表一个字符。 (4)空值查询 IS NULL关键字可以用来判断字段的值是否为空值(NULL)。如果字段的值是空值,则满足查询条件,该记录将被查询出来。如果字段的值不是空值,则不满足查询条件。其语法规则如下: IS [ NOT ] NULL 其,“NOT”是可选参数,加上NOT表示字段不是空值时满足条件。 IS NULL是一个整体,不能将IS换成”=”. 三、使用聚合函数查询数据 3.1、group by 分组 如下: [sql] view plain copy select * from STUDENT group by STU_SEX; 不加条件,那么就只取每个分组的第一条。 如果想看分组的内容,可以加groub_concat [sql] view plain copy select STU_SEX,group_concat(STU_NAME) from STUDENT group by STU_SEX; 3.2、一般情况下group需与统计函数(聚合函数)一起使用才有意义 先准备一些数据: [sql] view plain copy create table EMPLOYEES( EMP_NAME CHAR(10) NOT NULL, EMP_SALARY INT unsigned NOT NULL, EMP_DEP CHAR(10) NOT NULL ); insert into EMPLOYEES values('小王',5000,'销售部'); insert into EMPLOYEES values('阿小王',6000,'销售部'); insert into EMPLOYEES values('工是不',7000,'销售部'); insert into EMPLOYEES values('人人乐',3000,'资源部'); insert into EMPLOYEES values('满头大',4000,'资源部'); insert into EMPLOYEES values('天生一家',5500,'资源部'); insert into EMPLOYEES values('小花',14500,'资源部'); insert into EMPLOYEES values('大玉',15000,'研发部'); insert into EMPLOYEES values('条条',12000,'研发部'); insert into EMPLOYEES values('笨笨',13000,'研发部'); insert into EMPLOYEES values('我是天才',15000,'研发部'); insert into EMPLOYEES values('无语了',6000,'审计部'); insert into EMPLOYEES values('什么人',5000,'审计部'); insert into EMPLOYEES values('不知道',4000,'审计部'); mysql的五种统计函数: (1)max:求最大值 求每个部门的最高工资: [sql] view plain copy select EMP_NAME,EMP_DEP,max(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (2)min:求最小值 求每个部门的最仰工资: [sql] view plain copy select EMP_NAME,EMP_DEP,min(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (3)sum:求总数和 求每个部门的工资总和: [sql] view plain copy select EMP_DEP,sum(EMP_SALARY) from EMPLOYEES group by EMP_DEP (4)avg:求平均值 求每个部门的工资平均值 [sql] view plain copy select EMP_DEP,avg(EMP_SALARY) from EMPLOYEES group by EMP_DEP; (5)count:求总行数 求每个部门工资大于一定金额的人数 [sql] view plain copy select EMP_DEP,count(*) from EMPLOYEES where EMP_SALARY>=500 group by EMP_DEP; 3.3、带条件的groub by 字段 having,利用HAVING语句过滤分组数据 having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句定义的列和聚合表达式上。通常,你需要通过在HAVING子句重复聚合函数表达式来引用聚合值,就如你在SELECT语句做的那样。 [sql] view plain copy select EMP_DEP,avg(EMP_SALARY),group_concat(EMP_NAME)from EMPLOYEES group by EMP_DEP HAVING avg(EMP_SALARY) >=6000; 查找平均工资大于6000的部门,并把部门里的人全部列出来 四、多表上联合查询 多表上联合查询分为内连接查询和外连接查询 (1)隐式内连接查询 [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT,GRADE WHERE STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90; 查找大于90分的学生信息: (2)显式内连接查询 [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT inner join GRADE on STUDENT.STU_ID=GRADE.STU_ID AND GRADE.STU_SCORE >=90; 用法:select .... from 表1 inner join 表2 on 条件表达式 (3)外连接查询 left join.左连接查询。 用法 :select .... from 表1 left join 表2 on 条件表达式 意思是表1查出来的数据不能为null,但是其对应表2的数据可以为null [sql] view plain copy select STUDENT.STU_ID,STUDENT.STU_NAME,STUDENT.STU_AGE,STUDENT.STU_SEX,GRADE.STU_SCORE from STUDENT left join GRADE on STUDENT.STU_ID=GRADE.STU_ID; right join就是相反的了,用法相同 用left join的时候,left join操作符左侧表里的信息都会被查询出来,右侧表里没有的记录会填空(NULL).right join亦然;inner join的时候则只有条件合适的才会显示出来 full join() 完整外部联接返回左表和右表的所有行。当某行在另一个表没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据 值。 仅当至少有一个同属于两表的行符合联接条件时,内联接才返回行。内联接消除与另一个表的任何行不匹配的行。而外联接会返回 FROM 子句提到的至少一个表或 视图的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。将检索通过左向外联接引用的左表的所有行,以及通过右向外联接引用的右表的所有行。完整外 部联接两个表的所有行都将返回。 五、子查询 以一个查询select的结果作为另一个查询的条件 语法:select * from 表1 wher 条件1(select ..from 表2 where 条件2) 1、与In结合 [sql] view plain copy select * from STUDENT where STU_ID IN(select STU_ID from GRADE where STU_SCORE>85); 查找大于85分的学生信息 2、与EXISTS结合 EXISTS和NOT EXISTS操作符只测试某个子查询是否返回了数据行。如果是,EXISTS将是true,NOT EXISTS将是false。 [sql] view plain copy select * from STUDENT where EXISTS (select STU_ID from GRADE where STU_SCORE>=100); 如果有学生成绩大于100,才查询所有的学生信息 3、ALL、ANY和SOME子查询 any和all的操作符常见用法是结合一个相对比较操作符对一个数据列子查询的结果进行测试。它们测试比较值是否与子查询所返回的全部或一部分值匹配。比方说,如果比较值小于或等于子查询所返回的每一个值,<=all将是true,只要比较值小于或等于子查询所返回的任何一个值,<=any将是true。some是any的一个同义词。 [sql] view plain copy select STU_ID from GRADE where STU_SCORE = any (select STU_ID from GRADE where STU_SCORE 80 order by STU_SCORE; 默认是按升序的, 也可以这么写 [sql] view plain copy select * from GRADE where STU_SCORE >80 order by STU_SCORE ASC; 结果如下: 如果想换成降序的: [sql] view plain copy select * from GRADE where STU_SCORE >80 order by STU_SCORE desc; 7.2、limit limit [offset,] N offset 偏移量,可选,不写则相当于limit 0,N N 取出条目 取分数最高的前5条 [sql] view plain copy select * from GRADE order by STU_SCORE desc limit 5; 取分数最低的前5条 [sql] view plain copy select * from GRADE order by STU_SCORE asc limit 5; 取分数排名在10-15之间的5条 [sql] view plain copy select * from GRADE order by STU_SCORE desc limit 10,5 八、为表和字段取别名 使用AS来命名列 [sql] view plain copy select STU_ID as '学号',STU_SCORE as '分数' from GRADE; 当表的名称特别长时,在查询直接使用表名很不方便。这时可以为表取一个别名。用这个别名来代替表的名称。 MySQL为表取别名的基本形式如下: 表名 表的别名 [sql] view plain copy select S.STU_ID,S.STU_NAME,S.STU_AGE,S.STU_SEX,G.STU_SCORE from STUDENT S,GRADE G WHERE S.STU_ID=G.STU_ID AND G.STU_SCORE >=90; 九、使用正则表达式查询 正则表达式是用某种模式去匹配一类字符串的一个方式。例如,使用正则表达式可以查询出包含A、B、C其任一字母的字符串。正则表达式的查询能力比通配字符的查询能力更强大,而且更加的灵活。正则表达式可以应用于非常复杂查询。 MySQL,使用REGEXP关键字来匹配查询正则表达式。其基本形式如下: 属性名 REGEXP '匹配方式' 在使用前先插入一些数据: [sql] view plain copy insert into STUDENT values(2022,'12wef',13,'男'); insert into STUDENT values(2023,'faf_23',13,'男'); insert into STUDENT values(2024,'fafa',13,'女'); insert into STUDENT values(2025,'ooop',14,'男'); insert into STUDENT values(2026,'23oop',14,'男'); insert into STUDENT values(2027,'woop89',14,'男'); insert into STUDENT values(2028,'abcdd',11,'男'); (1)使用字符“^”可以匹配以特定字符或字符串开头的记录。 查询所有以阿头的 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^阿'; 以数字开头 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^[0-9]'; (2)使用字符“$”可以匹配以特定字符或字符串结尾的记录 以数字结尾 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '[0-9]$'; (3)用正则表达式来查询时,可以用“.”来替代字符串的任意一个字符。 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '^w....[0-9]$'; 以w开头,以数字结束,间有4个 (4)使用方括号([])可以将需要查询字符组成一个字符集。只要记录包含方括号的任意字符,该记录将会被查询出来。 例如,通过“[abc]”可以查询包含a、b、c这三个字母任何一个的记录。 使用方括号可以指定集合的区间。 “[a-z]”表示从a-z的所有字母; “[0-9]”表示从0-9的所有数字; “[a-z0-9]”表示包含所有的小写字母和数字。 “[a-zA-Z]”表示匹配所有字母。 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '[0-9a-z]'; 查询所有包含有数字和小写字母的 使用“[^字符集合]”可以匹配指定字符以外的字符 (5){}表示出现的次数 正则表达式,“字符串{M}”表示字符串连续出现M次;“字符串{M,N}”表示字符串联连续出现至少M次,最多N次。例如,“ab{2}”表示字符串“ab”连续出现两次。“ab{2,4}”表示字符串“ab”连续出现至少两次,最多四次。 o出现2次 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP 'o{2}'; (6)+表示到少出现一次 fa至少出现一次 [sql] view plain copy select * from STUDENT where STU_NAME REGEXP '(fa)+'; 注意: 正则表达式可以匹配字符串。当表的记录包含这个字符串时,就可以将该记录查询出来。如果指定多个字符串时,需要用符号“|”隔开。只要匹配这些字符串的任意一个即可。每个字符串与”|”之间不能有空格。因为,查询过程,数据库系统会将空格也当作一个字符。这样就查询不出想要的结果。 正则表达式,“*”和“+”都可以匹配多个该符号之前的字符。但是,“+”至少表示一个字符,而“*”可以表示零个字符。
第1章 数据库与sql基础 1 1.1 数据库的基本概念 1 1.1.1 数据库的由来 1 1.1.2 数据库系统的概念 3 1.2 数据库系统的结构、组成及工作流程 3 1.2.1 数据库的体系结构 3 1.2.2 数据库系统的组成 4 1.2.3 数据库的工作流程 5 1.3 数据库的发展 6 1.3.1 第一代数据库 7 1.3.2 第二代数据库 7 1.3.3 新一代数据库技术的研究和发展 7 1.4 关系数据库 8 1.4.1 关系模型 8 1.4.2 codd十二法则 9 1.4.3 范式 10 1.5 sql语言基础 11 1.5.1 sql的历史 11 1.5.2 sql语言的组成 12 1.5.3 sql语句的结构 13 .1.5.4 sql的优点 13 1.5.5 sql的执行 14 1.6 sql环境 15 1.6.1 环境 15 1.6.2 sql的层次结构 15 1.6.3 客户程序和服务程序系统 17 1.6.4 sql环境对象的命名规则 18 第2章 主要的关系数据库与sql 21 2.1 sql server 21 2.1.1 sql server的结构 21 2.1.2 数据库访问标准化接口—odbc 22 2.1.3 使用查询分析器执行sql语句 22 2.2 transact-sql 24 2.2.1 transact-sql 概述 24 2.2.2 transact-sql的主要组成 25 2.2.3 transact-sql的一些重要命令 26 2.3 oracle数据库 29 2.3.1 oracle数据库软件组成 29 2.3.2 oracle数据库体系结构 29 2.3.3 oracle数据库系统结构 30 2.3.4 使用sql*plus执行sql语句 31 2.4 pl/sql简介 32 2.4.1 pl/sql的特点 32 2.4.2 pl/sql程序结构 33 第3章 创建、修改和删除表 37 3.1 表的基础知识 37 3.1.1 表的基本结构 37 3.1.2 表的种类 38 3.2 sql数据类型 39 3.2.1 字符型数据 39 3.2.2 数字型数据 40 3.2.3 日期数据类型 41 3.2.4 二进制数据类型 43 3.2.5 文本和图形数据类型 44 3.2.6 自定义数据类型 44 3.3 表的创建(create) 46 3.3.1 创建基本表 46 3.3.2 非空约束 47 3.3.3 default指定缺省值 49 3.4 表的修改 50 3.4.1 增加新列 50 3.4.2 删除列 51 3.4.3 修改列 53 3.5 表的删除与重命名 55 3.5.1 重命名表 55 3.5.2 删除表 56 3.6 创建、删除数据库 56 3.6.1 数据库的创建 56 3.6.2 sql server数据库的创建 57 3.6.3 删除数据库 58 第4章 索引与视图的创建 61 4.1 索引的基础知识 61 4.1.1 索引的概念 61 4.1.2 索引的结构 61 4.2 索引的创建与销毁 63 4.2.1 基本创建语法 63 4.2.2 本章实例用到的实例表 64 4.2.3 创建简单的非簇索引 66 4.2.4 多字段非簇索引的创建 69 4.2.5 使用unique关键字创建惟一索引 70 4.2.6 使用clusterde关键字创建簇索引 71 4.2.7 索引的销毁 73 4.2.8 使用索引的几点原则 73 4.3 视图的基础知识 74 4.3.1 视图简介 74 4.3.2 视图的优缺点 74 4.4 视图的创建与销毁 75 4.4.1 基本创建语法 75 4.4.2 创建简单的视图 75 4.4.3 利用视图简化表的复杂连接 78 4.4.4 利用视图简化复杂查询 79 4.4.5 视图的销毁 81 4.4.6 使用视图的几点原则 82 第5章 简单的查询 83 5.1 查询的基本结构 83 5.1.1 select语句的结构 83 5.1.2 select语句的执行步骤 84 5.2 列的查询 84 5.2.1 本章用到的实例表 85 5.2.2 单列查询 85 5.2.3 使用distinct去除重复信息 86 5.2.4 多列查询 87 5.2.5 查询所有的列 88 5.3 排序查询结果 89 5.3.1 单列排序 89 5.3.2 多列排序 90 5.3.3 采用序号进行多列排序 91 5.3.4 反向排序 92 5.4 使用where子句定义搜索条件查询 93 5.4.1 where子句单条件查询 93 5.4.2 单值比较运算符 94 5.4.3 between运算符范围筛选 96 5.4.4 null值的判断 97 第6章 复杂搜索条件查询 99 6.1 本章用到的实例表 99 6.2 组合查询条件 100 6.2.1 and运算符 100 6.2.2 or运算符 101 6.2.3 and、or运算符的组合使用 103 6.3 in运算符 104 6.3.1 in运算符的使用 104 6.3.2 in运算符与or运算符 105 6.4 not运算符 106 6.4.1 使用not运算符 106 6.4.2 not运算符与[]运算符 108 6.5 使用like进行模糊查询 109 6.5.1 like运算符 109 6.5.2 “%”通配符 110 6.5.3 “_”通配符 112 6.5.4 “[]”通配符 114 6.5.5 使用escape定义转义符 115 第7章 连接符、数值运算与函数 117 7.1 本章实例用到的表 117 7.2 连接符 118 7.2.1 连接符的应用 118 7.2.2 使用别名 119 7.3 数值运算 121 7.3.1 数学运算符的种类 121 7.3.2 数学运算符的运用 122 7.3.3 使用cast表达式转换数据类型 123 7.3.4 使用case表达式 124 7.4 函数 126 7.4.1 有关函数的说明 126 7.4.2 字符处理函数 126 7.4.3 算术运算函数 131 7.4.4 日期时间函数 133 7.4.5 convert()函数转换日期、时间 136 第8章 聚合分析与分组 139 8.1 聚合分析的基本概念 139 8.1.1 聚合分析 139 8.1.2 聚合函数 139 8.2 聚合函数的应用 140 8.2.1 求和函数—sum() 140 8.2.2 计数函数—count() 140 8.2.3 最大/最小值函数—max()/min() 143 8.2.4 均值函数—avg() 145 8.2.5 聚合分析的重值处理 147 8.2.6 聚合函数的组合使用 148 8.3 组合查询 148 8.3.1 group by子句创建分组 149 8.3.2 group by子句根据多列组合行 150 8.3.3 rollup运算符和cube运算符 151 8.3.4 group by子句的null值处理 153 8.3.5 having子句 153 8.3.6 having子句与where子句 154 8.3.7 select语句各查询子句总结 156 第9章 多表查询 157 9.1 本章用到的实例表 157 9.2 表的基本连接 158 9.2.1 连接表的目的 158 9.2.2 简单的二表连接 159 9.2.3 多表连接 161 9.2.4 使用表别名 162 9.2.5 采用join关键字建立连接 163 9.3 表的连接类型 163 9.3.1 自连接 163 9.3.2 自然连接(natural join) 166 9.3.3 内连接(inner join) 167 9.3.4 外连接(outer join) 170 9.3.5 交叉连接(cross join) 176 9.4 union与union join 177 9.4.1 关系的集合运算 177 9.4.2 union运算符 178 9.4.3 order by子句排序union运算结果 180 9.4.4 对多表进行union运算 181 9.4.5 union join 连接表 183 9.5 表连接的其他应用及注意问题 183 9.5.1 连接表进行聚合运算 183 9.5.2 多表连接的综合运用 185 9.5.3 多表连接注意事项 186 第10章 子查询 187 10.1 创建和使用返回单值的子查询 187 10.1.1 在多表查询使用子查询 187 10.1.2 在子查询使用聚合函数 188 10.2 创建和使用返回多行的子查询 190 10.2.1 in子查询 190 10.2.2 in子查询实现集合交和集合差运算 191 10.2.3 exists子查询 192 10.2.4 exists子查询实现两表交集 194 10.2.5 some/all子查询 195 10.2.6 unique子查询 197 10.3 相关子查询 198 10.3.1 使用in引入相关子查询 198 10.3.2 比较运算符引入相关子查询 200 10.3.3 在having子句使用相关子查询 201 10.4 嵌套子查询 203 10.5 使用子查询创建视图 204 10.6 树查询 205 第11章 数据插入操作 209 11.1 插入单行记录 209 11.1.1 基本语法 209 11.1.2 整行插入 209 11.1.3 null值的插入 211 11.1.4 惟一值的插入 212 11.1.5 特定字段数据插入 213 11.1.6 通过视图插入行 214 11.2 插入多行记录 216 11.2.1 由values关键字引入多行数据插入 217 11.2.2 使用select语句插入值 217 11.3 表数据的复制 220 11.3.1 基本语法 221 11.3.2 应用实例 221 11.4 从外部数据源导入、导出数据 222 11.4.1 access数据库数据的导出 223 11.4.2 access数据库数据的导入 225 11.4.3 sql server数据库数据导出 227 11.4.4 sql server数据库数据导入 230 第12章 数据的更新和删除 233 12.1 更新表的数据 233 12.1.1 update语句的基本语法 233 12.1.2 update语句更新列值 234 12.1.3 利用子查询更新多行的值 237 12.1.4 依据外表值更新数据 238 12.1.5 分步更新表 239 12.2 删除表的数据 240 12.2.1 delete语句基本语法 240 12.2.2 delete语句删除单行数据 240 12.2.3 delete语句删除多行数据 241 12.2.4 delete语句删除所有行 242 12.2.5 truncate table语句 242 12.3 通过视图更新表 243 12.3.1 可更新视图的约束 243 12.3.2 通过视图更新表数据 243 12.3.3 通过视图删除表数据 245 第13章 安全性控制 249 13.1 sql安全模式 249 13.1.1 授权id 249 13.1.2 sql的安全对象和权限 250 13.1.3 授权图 251 13.2 角色管理 251 13.2.1 create语句创建角色 252 13.2.2 drop语句删除角色 252 13.2.3 grant语句授予角色 252 13.2.4 revoke语句取消角色 253 13.3 权限管理 254 13.3.1 grant语句授予权限 254 13.3.2 revoke语句取消权限 255 13.3.3 select权限控制 256 13.3.4 insert权限控制 258 13.3.5 update权限控制 258 13.3.6 delete权限控制 259 13.4 sql server安全管理 260 13.4.1 sql server登录认证 260 13.4.2 sql server用户id的管理 261 13.4.3 sql server权限管理 263 13.4.4 sql server角色管理 266 13.5 oracle安全管理 268 13.5.1 oracle用户、资源、概要文件、模式的概念 269 13.5.2 oracle的用户管理 269 13.5.3 oracle的资源管理 274 13.5.4 oracle的权限管理 277 13.5.5 oracle的角色管理 278 第14章 完整性控制 281 14.1 完整性约束简介 281 14.1.1 数据的完整性 281 14.1.2 完整性约束的类型 281 14.2 与表有关的约束 282 14.2.1 列约束与表约束的创建 282 14.2.2 not null(非空)约束 282 14.2.3 unique(惟一)约束 284 14.2.4 primary key(主键)约束 285 14.2.5 foreign key(外键)约束 287 14.2.6 check(校验)约束 289 14.3 深入探讨外键与完整性检查 290 14.3.1 引用完整性检查 290 14.3.2 match子句 291 14.3.3 更新、删除操作规则 293 14.4 域约束与断言 295 14.4.1 域与域约束 295 14.4.2 利用断言创建多表约束 296 14.5 sql server的完整性控制 296 14.5.1 创建规则(rule) 297 14.5.2 规则的绑定与松绑 298 14.5.3 创建缺省值(default) 299 14.5.4 缺省值的绑定与松绑 300 第15章 存储过程与函数 303 15.1 sql的存储过程与函数 303 15.2 sql server 的流控制语句 304 15.2.1 begin…end语句 304 15.2.2 if…else语句 304 15.2.3 while、break和continue语句 304 15.2.4 declare语句 306 15.2.5 goto label语句 306 15.2.6 return语句 307 15.2.7 waitfor语句 307 15.2.8 print语句 308 15.2.9 注释 308 15.3 sql server的存储过程和函数 308 15.3.1 系统存储过程 308 15.3.2 使用create procedure创建存储过程 309 15.3.3 使用execute语句调用存储过程 310 15.3.4 使用create function创建函数 312 15.3.5 使用enterprise manager创建存储过程和函数 315 15.3.6 修改和删除存储过程和函数 317 15.4 oracle的流控制语句 319 15.4.1 条件语句 319 15.4.2 循环语句 320 15.4.3 标号和goto 322 15.5 oracle数据库的存储过程 322 15.5.1 存储过程的创建与调用 322 15.5.2 oracle存储过程和函数的管理 324 第16章 sql触发器 325 16.1 触发器的基本概念 325 16.1.1 触发器简介 325 16.1.2 触发器执行环境 325 16.2 sql server的触发器 326 16.2.1 sql server触发器的种类 326 16.2.2 使用create trigger命令创建触发器 326 16.2.3 insert触发器 328 16.2.4 delete触发器 329 16.2.5 update触发器 330 16.2.6 instead of触发器 332 16.2.7 嵌套触发器 334 16.2.8 递归触发器 336 16.2.9 sql server触发器的管理 338 16.3 oracle数据库触发器的操作 340 16.3.1 oracle触发器类型 340 16.3.2 触发器的创建 341 16.3.3 创建系统触发器 342 16.3.4 触发器的触发次序和触发谓词的使用 343 16.3.5 oracle触发器的管理 346 第17章 sql游标的使用 349 17.1 sql游标的基本概念 349 17.1.1 游标的概念 349 17.1.2 游标的作用及其应用 350 17.2 sql游标的使用 351 17.2.1 使用declare cursor语句创建游标 351 17.2.2 使用open/close语句打开/关闭游标 352 17.2.3 使用fetch语句检索数据 352 17.2.4 基于游标的定位delete语句 354 17.2.5 基于游标的定位update语句 356 17.3 sql server游标的扩展 357 17.3.1 transact_sql扩展declare cursor语法 357 17.3.2 @@cursor_rows全局变量确定游标的行数 359 17.3.3 @@fetch_status全局变量检测fetch操作的状态 360 17.3.4 游标的关闭与释放 361 17.3.5 游标变量 362 17.3.6 使用系统过程管理游标 363 17.4 oracle游标的使用 365 17.4.1 显式游标与隐式游标 365 17.4.2 游标的属性 366 17.4.3 %type、%rowtype定义记录变量 367 17.4.4 参数化游标 368 17.4.5 游标的循环 369 17.4.6 游标变量 371 17.5 小结 372 第18章 事务控制与并发处理 373 18.1 sql事务控制 373 18.1.1 事务控制的引入 373 18.1.2 事务的特性 373 18.1.3 sql与事务有关的语句 374 18.2 事务控制的具体实现 376 18.2.1 开始事务 376 18.2.2 set constraints语句设置约束的延期执行 377 18.2.3 终止事务 378 18.3 并发控制 380 18.3.1 并发操作的问题 381 18.3.2 事务隔离级别 382 18.3.3 set transaction设置事务属性 383 18.4 sql server的并发事务控制 384 18.4.1 锁的分类 384 18.4.2 sql server表级锁的使用 385 18.4.3 设置隔离级别实现并发控制 387 18.4.4 死锁及其预防 391 18.5 oracle的并发事务控制 393 18.5.1 通过加锁避免写数据丢失 393 18.5.2 设置只读事务(read only) 394 18.5.3 oracle的隔离级别 395 第19章 嵌入式sql 397 19.1 sql的调用 397 19.1.1 直接调用sql 397 19.1.2 嵌入式sql 398 19.1.3 sql调用层接口(cli) 399 19.2 嵌入式sql的使用 401 19.2.1 创建嵌入式sql语句 401 19.2.2 sql通信区 402 19.2.3 主变量 404 19.2.4 嵌入式sql使用游标 406 19.3 检索、操作sql数据 407 19.3.1 不需要游标的sql dml操作 407 19.3.2 使用游标的sql dml操作 410 19.3.3 动态sql技术 412 19.4 sql server嵌入式sql的编译运行 413 19.4.1 嵌入式sql代码 413 19.4.2 预编译文件 415 19.4.3 设置visual c++ 6.0连接 417 19.4.4 编译运行程序 419 19.5 oracle嵌入式sql的编译运行 420 19.5.1 嵌入式sql代码 420 19.5.2 预编译文件 421 19.5.3 设置visual c++ 6.0编译环境 423 19.5.4 编译运行程序 424 附录a sql保留字 427 附录b 常用sql命令 431 附录c 关于运行环境的说明 435 c.1 sql server 2000 435 c.1.1 直接访问 435 c.1.2 从企业管理器访问 436 c.2 oracle系统 436
SQL Server为工具,讲解SQL语言的应用,提供了近500个曲型应用,读者可以随查随用,深入讲解SQL语言的各种查询语句,详细介绍数据库设计及管理,详细讲解存储过程、解发器和游标等知识,讲解了SQL语言在高级语言的具体应用。 第1章 SQL语言的概述 1.1 认识SQL语言 1.1.1 什么是SQL语言 1.1.2 SQL的历史与发展 1.1.3 SQL的功能和优点 1.2 认识数据库 1.2.1 什么是数据库 1.2.2 数据库系统的结构 1.2.3 数据库系统的工作流程 1.2.4 常见的SQL数据库管理系统 1.3 数据模型 1.3.1 关系数据库模型 1.3.2 数据模型的构成 1.3.3 常见的数据模型 1.4 关系型数据库 1.4.1 关系型数据库的定义 1.4.2 关系型数据库与表 1.4.3 主键与外键 1.4.4 字段约束 1.4.5 数据的完整性 1.4.6 关系数据库设计原则 1.5 SQL开发环境 1.5.1 SQL环境介绍 1.5.2 SQL的层次结构 1.5.3 SQL环境的对象 1.5.4 SQL环境的程序系统 1.6 SQL语句基础 1.6.1 SQL常量 1.6.2 SQL表达式 1.6.3 SQL数据类型 1.6.4 注释符 1.6.5 批处理 1.6.6 SQL语句的执行 1.7 SQL语法知识 1.7.1 SQL语法结构 1.7.2 常用SQL语句 1.8 小结第2章 设计数据库 2.1 设计数据库基础 2.1.1 数据库设计定义 2.1.2 设计数据库的意义 2.1.3 进行数据库设计的方法 2.2 数据实体和联系 2.2.1 实体、属性与联系 2.2.2 一对一联系 2.2.3 一对多联系 2.2.4 多对多联系 2.3 规范化准则 2.3.1 范式 2.3.2 第一范式 2.3.3 第二范式 2.3.4 第三范式 2.3.5 第四范式 2.4.小结第2篇 数据库管理篇第3章 数据库的相关操作 3.1 创建数据库 3.1.1 SQL标准创建数据库的语法 3.1.2 使用SQL语句创建数据库 3.2 删除数据库 3.2.1 SQL标准删除数据库的语法 3.2.2 使用SQL语句删除数据库 3.3 修改数据库 3.3.1 修改数据库语法 3.3.2 使用SQL语句修改数据库 3.4 管理数据库 3.4.1 扩充与压缩数据库 3.4.2 导入与导出数据 3.4.3 数据库的备份与恢复 3.4.4 使用sp_helpdb查看数据库信息 3.5 小结第4章 数据表的相关操作 4.1 SQL的数据表 4.1.1 数据表的结构 4.1.2 数据表的种类 4.2 创建数据表 4.2.1 创建数据表的语句结构 4.2.2 创建基本表 4.2.3 非空约束 4.2.4 DEFAULT指定缺省值 4.3 修改数据表 4.3.1 修改数据表的语句结构 4.3.2 给数据表增添新列 4.3.3 修改数据表的列 4.3.4 删除数据表的列 4.4 数据表的删除 4.4.1 删除数据表的语句结构 4.4.2 使用SQL语句删除数据表 4.5 数据表的重命名 4.5.1 重命名数据表的语句 4.5.2 使用SQL语句重命名数据表 4.6 小结第5章 索引与视图 5.1 索引的基础知识 5.1.1 索引的概念 5.1.2 索引的类型 5.1.3 索引的结构 5.2 创建索引 5.2.1 创建索引的语句结构 20.3.3 子查询的实现 20.3.4 复合查询的实现 20.4 运算符与表达式的应用 20.4.1 连接数据表的实现 20.4.2 算术运算符的应用 20.4.3 表达式的应用 20.5 数据维护与触发器的应用 20.5.1 添加数据的实现 20.5.2 更新数据的实现 20.5.3 删除数据的实现 20.5.4 在VB.NET应用触发器20.6 小结第21章 VB 6.0与SQL Server的开发与应用 21.1 VB 6.0开发环境 21.1.1 VB 6.0介绍 21.1.2 VB 6.0的版本 21.1.3 VB 6.0开发环境 21.2 VB 6.0连接数据库 21.2.1 VB 6.0的数据库控件介绍 21.2.2 数据库连接举例 21.3 数据查询应用 21.3.1 普通数据查询的实现 21.3.2 连接查询的实现 21.3.3 子查询的实现 21.3.4 复合查询的实现 21.4 运算符与表达式的应用 21.4.1 连接数据表的实现 21.4.2 算术运算符的应用 21.4.3 表达式的应用 21.5 数据维护操作的应用 21.5.1 添加数据的实现 21.5.2 更新数据的实现 21.5.3 删除数据的实现 21.6 触发器与存储过程的应用 21.6.1在VB 6.0应用触发器 21.6.2在VB 6.0应用存储过程 21.7 小结第22章 VC++6.0与SQL Server的开发与应用 22.1 VC++6.0开发环境 22.1.1 VC++6.0介绍 22.1.2 MFC编程 22.1.3 VC++6.0开发环境 22.2 VC++6.0连接数据库 22.2.1 ADO数据控件介绍 22.2.2 数据库连接举例 22.3 数据查询应用 22.3.1 普通数据查询的实现 22.3.2 连接查询的实现 22.3.3 子查询的实现 22.3.4 复合查询的实现 22.4 运算符与表达式的应用 22.4.1 连接数据表的实现 22.4.2 算术运算符的应用 22.4.3 表达式的应用 22.5 数据维护操作的应用 22.5.1 添加数据的实现 22.5.2 更新数据的实现 22.5.3 删除数据的实现 22.6 小结第23章 PHP访问 SQL Server 2005 23.1 PHP开发环境 23.1.1 PHP简介及其特点 23.1.2 PHP开发环境的安装 23.2 PHP连接SQL Server服务器 23.2.1 使用PHP的MSSQL扩展 23.2.2 PHP连接SQL Setver的必要条件 23.3 使用PHP存取SQL Server数据库 23.3.1 选择操作的数据库 23.3.2 在数据库创建表 23.3.3 删除存在的数据表 23.4 对数据库表的操作 23.4.1 向表添加记录 23.4.2 浏览表记录 23.4.3 修改已有记录 23.4.4 删除指定记录 23.5 可回复留言板的开发(PHP+SQL Server) 23.5.1 数据表的设计 23.5.2 配置文件的创建 23.5.3 创建系统运行的表 23.5.4 创建留言显示模块 23.5.5 创建留言添加模块 23.5.6 进入留言管理模块 23.5.7 创建留言修改模块 23.5.8 创建留言删除模块 23.6 小结 5.2.2 创建非簇索引 5.2.3 创建簇索引 5.2.4 创建惟一索引 5.2.5 创建复合索引 5.3 删除索引 5.3.1 删除索引的语句结构 5.3.2 使用SQL语句删除索引 5.4 视图的基础知识 5.4.1 视图概述 5.4.2 视图的优点与缺点 5.5 视图的基本操作 5.5.1 创建视图的基本语句结构 5.5.2 使用SQL语句创建视图 5.5.3 修改视图的语句结构 5.5.4 重命名视图的名称 5.5.5 使用SQL语句修改视图 5.5.6 删除视图的语句结构 5.5.7 使用SQL语句删除视图 5.6 视图的应用 5.6.1 利用视图简化表的复杂连接 5.6.2 利用视图简化复杂查询 5.7 小结第3篇 SQL查询篇第6章 简单的SELECT语句查询 6.1 查询的基本结构 6.1.1 了解SELECT语句 6.1.2 SELECT语句的语法格式 6.1.3 SELECT语句的执行步骤 6.2 简单的查询语句 6.2.1 查询指定的字段 6.2.2 查询所有的字段 6.2.3 使用DISTINCT去除重复信息 6.2.4 使用别名 6.3 排序与分组 6.3.1 升序排序与降序排序 6.3.2 多列字段排序 6.3.3 使用GROUPBY子句对查询结果进行分组 6.3.4 HAVING子句的应用 6.4 条件查询 6.4.1 WHERE单条件语句查询 6.4.2 运算符查询 6.4.3 BETWEEN运算符范围筛选 6.4.4 使用TOP子句 6.4.5 NULL的判断 6.5 模糊查询 6.5.1 使用LIKE运算符进行查询 6.5.2 使用“_”通配符进行查询 6.5.3 使用“%”通配符进行查询 6.5.4 使用“[]”通配符进行查询 6.5.5 使用“[^]”通配符进行查询 6.6 小结第7章 运算符与表达式相关查询 7.1 逻辑运算符 7.1.1 逻辑与运算符 7.1.2 逻辑或运算符 7.1.3 逻辑运算符的组合使用 7.2 IN运算符 7.2.1 IN运算符的使用 7.2.2 NOT IN运算符的使用 7.3 NOT运算符与BETWEEN运算符 7.3.1 N0T运算符的使用 7.3.2 NOT运算符与BETWEEN运算符的组合应用 7.4 数学运算符 7.4.1 数学运算符的种类 7.4.2 数学运算符的应用 7.5 集合查询运算符 7.5.1 UNION运算符 7.5.2 INTERSECT运算符 7.6运算符的组合应用 7.6.1 逻辑运算符与IN运算符的组合应用 7.6.2 逻辑运算符与NOT运算符的组合应用 7.6.3 逻辑运算符与数学运算符的组合应用 7.6.4 逻辑运算符与集合运算符的组合应用 7.6.5 数学运算符与NOT运算符的组合应用 7.6.6 数学运算符与IN运算符的组合应用 7.6.7 数学运算符与集合运算符的组合应用 7.7 SQL的表达式 7.7.1 CAST表达式的应用 7.7.2 CASE表达式的应用 7.8 小结第8章 SQL函数 8.1 SQL函数基础 8.1.1 SQL语句函数 8.1.2 常用SQL语句函数 8.2 日期函数和数学运算函数 8.2.1 日期时间函数 8.2.2 CONVERT函数转换日期、时间 8.2.3 数据运算函数 8.3 字符串函数 8.3.1 字符串处理函数介绍 8.3.2 字符转换函数 8.3.3 去字符串空格函数 8.3.4 取字符串长度的函数 8.3.5 查询包含部分字符串内容的数据 8.3.6 颠倒字符串的顺序 8.3.7 字符串替换 8.4 聚合函数 8.4.1 聚合函数概述 8.4.2 SUM函数运算 8.4.3 MAX函数运算 8.4.4 MIN函数运算 8.4.5 AVG函数运算 8.4.6 COUNT函数运算 8.4.7 聚合函数的组合使用 8.5 小结第9章 连接查询 9.1 多表连接 9.1.1 多表连接的优点 9.1.2 简单的两表连接 9.1.3 多表连接举例 9.1.4 UNION JOIN连接表 9.2 自连接与自然连接 9.2.1 自连接 9.2.2 自然连接 9.3 内连接 9.3.1 等值连接 9.3.2 不等值连接 9.3.3 使用内连接实现多表连接 9.3.4 在内连接使用聚合函数 9.4 外连接 9.4.1 左外连接 9.4.2 右外连接 9.4.3 全外连接 9.4.4 在外连接使用聚合函数 9.5 交叉连接 9.5.l 交叉连接的定义 9.5.2 交叉连接举例 9.6 多表连接的综合应用 9.6.1 内连接与左外连接的综合应用 9.6.2 内连接与右外连接的综合应用 9.6.3 UNION集合运算与多表连接应用 9.7 小结第10章 子查询 10.1 子查询的简单应用 10.1.1 子查询概述 10.1.2 在多表查询使用子查询 10.1.3 在子查询使用聚合函数 10.1.4 使用ANY或ALL运算符 10.1.5 使用子查询创建视图 10.2 使用IN语句的子查询 10.2.1 简单的IN语句子查询 10.2.2 使用IN子查询实现集合交运算 lO.2.3 使用IN子查询实现集合差运算 10.3 使用EXISTS语句的子查询 10.3.1 简单的EXISTS语句子查询 10.3.2 使用EXISTS子查询实现两表交集 10.3.3 使用EXISTS子查询实现两表并集 10.3.4 使用NOT EXISTS的子查询 10.4 相关子查询 10.4.1 使用IN引入相关子查询 10.4.2 使用比较运算符引入相关子查询 10.4.3 在HAVING子句使用相关子查询 10.5 UNIQUE子查询与嵌套子查询 10.5.1 UNIQUE子查询 10.5.2 嵌套子查询 10.6 小结第4篇 T-SQL开发常用操作篇第11章 数据的维护操作 11.1 数据的插入操作 11.1.1 INSERT语句的基本语法 11.1.2 插入单条记录 11.1.3 NULL的插入 11.1.4 由VALUES关键字插入多行数据 11.1.5 使用SELECT语句插入数据 11.1.6 通过视图插入数据 11.1.7 使用子查询插入数据 11.2 数据的更新操作 11.2.1 UPDATE语句的基本语法 11.2.2 使用UPDATE语句更新指定的列值 11.2.3 数据字段NULL的更改 11.2.4 更新全部数据 11.2.5 利用子查询更新数据 11.2.6 通过视图更新表数据 11.3 数据的删除操作 11.3.1 DELETE语句的语法结构 11.3.2 删除指定行的数据 11.3.3 删除所有数据 11.3.4 通过视图删除表数据 11.3.5 使用子查询删除数据 11.3.6 使用TRUNCATE TABLE语句 11.4 小结第12章 完整性控制 12.1 完整性约束概述 12.1.1 数据的完整性简介 12.1.2 完整性约束的类型 12.1.3 数据完整性的意义 12.2 约束 12.2.1 DEFAULT约束 12.2.2 CHECK约束 12.2.3 PRIMARY KEY约束 12.2.4 UNIQUE约束 12.2.5 FOREIGN KEY约束 12.2.6 NOT NULL约束 12.2.7 列约束和表约束 12.3 规则 12.3.1 创建规则 12.3.2 规则的绑定与松绑 12.4 域约束与断言 12.4.1 域与域约束 12.4.2 利用断言创建多表约束 12.5 默认值 12.5.1 创建默认值 12.5.2 默认值的绑定与松绑 12.6 小结第5篇 T-SQL高级编程篇第13章 存储过程 13.1 存储过程概述 13.1.1 存储过程的基本概念 13.1.2 存储过程的优缺点 13.2 存储过程常用的流控制语句 13.2.1 IF...LSE语句 13.2.2 BEGIN...END语句 13.2.3 DECLARE语句 13.2.4 GOTO语句 13.2.5 WAITFOR语句 13.2.6 WHILE、BREAK和CONTINUE语句 13.2.7 PRINT语句 13.2.8 RETURN语句 13.2.9 注释 13.3 创建与执行存储过程 13.3.1 创建存储过程 13.3.2 创建带参数的存储过程 13.3.3 创建带0UTPUT返回,参数的存储过程 13.3.4 执行存储过程 13.4 存储过程的查看、修改和删除 13.4.1 系统存储过程 13.4.2 存储过程的查看 13.4.3 存储过程的重命名 13.4.4 修改存储过程 13.4.5 存储过程的删除 13.5 Oracle数据库的控制流语句 13.5.1 IF条件语句 13.5.2 LOOP循环语句 13.5.3 FOR循环语句 13.5.4 WHILE循环语句 13.5.5 GOTO语句 13.6 Oracle数据库的存储过程 13.6.1 0racle数据库创建存储过程 13.6.2 Oracle数据库存储过程的执行 13.7 小结第14章 触发器 14.1 触发器的基础知识 14.1.1 触发器的概念 14.1.2 触发器的种类 14.1.3 触发器的组成 14.1.4 触发器的优点 14.1.5 触发器执行环境 14.2 触发器的创建 14.2.1 创建触发器的语法结构 14.2.2 Inserted表和Deleted表 14.2.3 INSERT触发器 14.2.4 UPDATE触发器 14.2.5 DELETE触发器 14.2.6 INSTEAD OF触发器 14.2.7 嵌套触发器 14.2.8 递归触发器 14.3 查看触发器 14.3.1 使用系统存储过程sp_help查看触发器 14.3.2 使用系统存储过程sp_helptext查看触发器 14.3.3 使用系统存储过程sp_depengs查看触发器 14.4 触发器的修改及删除 14.4.1触发器的修改 14.4.2触发器的删除 14.5 Oracle数据库的触发器 14.5.1 Oracle触发器类型 14.5.2 触发器的创建 14.5.3 Oracle触发器的启用与禁用 14.5.4 0racle触发器的删除 14.6 小结第15章 游标 15.1 游标的定义 15.1.1 游标的基本概念 15.1.2 游标的分类 15.1.3 游标的作用及其应用 15.2 游标的使用 15.2.1 游标的创建 15.2.2 打开游标 15.2.3 关闭游标 15.2.4 释放游标 15.2.5 使用游标 15.2.6 检索游标 15.2.7 游标变量 15.3 游标的展使用 15.3.1 用于UJPDATE操作的可更新游标 15.3.2 用于DELETlE操作的可更新游标 15.3.3 可更新游标的综合操作 15.3.4 使用@@CURSOR_ROWS全局变量确定游标的行数 15.3.5 使用@@FETCh_STATJS全局变量检测FETCH操作的状态 15.3.6 使用系统过程管理游标 15.4 Oracle游标的使用 15.4.1 显式游标与隐式游标 15.4.2 游标属性 15.4.3 参数化游标 15.4.4 游标的循环 15.5 小结第16章 事务控制和锁定 16.1 事务 16.1.1 事务概述 16.1.2 事务的特性 16.1.3事务的分类 16.2 事务控制 16.2.1 事务控制操作 16.2.2 开始事务 16.2.3 提交事务 16.2.4 回滚事务 16.2.5 设置事务保存点 16.2.6 终止事务 16.3 并发控制 16.3.1 并发操作的问题 16.3.2 事务隔离级别 16.4 锁定 16.4.1 锁的作用及含义 16.4.2 锁的类型 16.4.3 SQL Server表级锁的使用 16.4.4 设置隔离级别实现并发控制 16.4.5 死锁及其处理 16.5 小结第17章 SQL安全 17.1 SQL安全概述 17.1.1 SQL安全的重要性 17.1.2 SQL安全的对象和权限 17.2 用户管理 17.2.1 创建SQL用户 17.2.2 删除SQL用户 17.3 角色管理 17.3.1 角色的优点 17.3.2 创建角色 17.3.3 删除角色 17.3.4 授予角色 17.3.5 取消角色 17.4 权限管理 17.4.1 授予权限 17.4.2 撤销权限 17.4.3 查询权限控制 17.4.4 插入操作权限控制 17.4.5 删除操作权限控制 17.4.6 更新操作权限控制 17.5 SQL Server的安全管理 17.5.1 SQL Server的用户管理 l7.5.2 SQL Server的角色管理 l7.5.3 SQL Server的权限管理 17.6 Oracle的安全管理 17.6.1 Oracle的用户管理 17.6.2 Oracle的权限管理 17.7小结第18章 嵌入式SQL 18.1 SQL的调用 18.1.1 直接调用SQL 18.1.2 SQL调用层接口(CLI) 18.2 嵌入式SQL的使用 18.2.1 嵌入式SQL 18.2.2 SQL通信区 18.2.3 主变量 18.2.4 在嵌入式SQL使用SQL语句 18.2.5 在嵌入式SQL使用游标 18.3 嵌入式SQLSQL Server应用 18.3.1 嵌入式SQL代码 18.3.2 预编译文件 18.3.3 设置连接VC++6.O 18.3.4 编译运行程序 18.4 小结第6篇 T-SQL结合流行语言进行开发篇第19章 C#与SQL Server的开发与应用 19.1 C#开发环境 19.1.1 C#介绍 19.1.2 C#开发环境 19.2 C#连接数据库 19.2.1 C#的数据库控件介绍 19.2.2 数据库连接举例 19.3 数据查询应用 19.3.1 普通数据查询的实现 19.3.2 连接查询的实现 19.3.3 子查询的实现 19.3.4 复合查询的实现 19.4 运算符与表达式的应用 19.4.1 连接数据表的实现 19.4.2 算术运算符的应用 19.4.3 表达式的应用 19.5 数据维护操作的应用 19.5.1 添加数据的实现 19.5.2 更新数据的实现 19.5.3 删除数据的实现 19.6 触发器与存储过程的应用 19.6.1 在C#应用触发器 19.6.2 在C#应用存储过程的示例 19.7 小结第20章 VB.NET与SQL Server的开发与应用 20.1 VB.NET介绍 20.1.1 了解VB.NET 20.1.2 VB.NET的新特点 20.2 VB.NET连接数据库 20.2.1 通过数据控件绑定连接数据库 20.2.2 通过数据对象直接连接数据库 20.3 数据查询应用 20.3.1 普通数据查询的实现 20.3.2 连接查询的实现隐藏全部目录>>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值