随笔分类 -  SQL必知必会--笔记

SQL必知必会的学习笔记
摘要:1.约束 为正确地进行关系数据库设计,需要一种方法来保证只在表中插入合法的数据。例如,如果Orders表存储订单信息,OrderItems表存储订单详细内容,应该保证Orderitems中引用的任何订单ID存在于Orders中。类似地,在Orders表中引用的任意用户必须存在于Customers表中 阅读全文
posted @ 2016-12-04 19:45 Sumomo 阅读(195) 评论(0) 推荐(0)
摘要:1.游标 游标(cursor):是一个存储在DBMS服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。存储游标之后,应用程序可以根据需要滚动或浏览其中的数据。 不同DBMS支持不同的游标选项和特性。常见特性如下: 能标记游标为制度,是数据能读取,但不能更新或删除; 能控 阅读全文
posted @ 2016-12-04 19:44 Sumomo 阅读(267) 评论(0) 推荐(0)
摘要:1.事务处理 通过事务处理,通过确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性。 事务处理是一种机制,用来管理必须成批执行的SQL操作,保证数据库不包含不完整的操作结果。利用事务处理,可以保证一组操作不会中途停止,它们要么完全执行,要么完全不执行。如果没有错误发生,整组语句提 阅读全文
posted @ 2016-12-04 19:43 Sumomo 阅读(285) 评论(0) 推荐(0)
摘要:1.存储过程 存储过程是为以后使用而保存的一条或多条SQL语句 可以单独编写每条SQL语句,并根据结果有条件地执行其他语句。 2.为什么要使用存储过程 (1)通过把处理封装在一个易用的单元中,可以简化复杂的操作; (2)由于不要求反复建立在一系列处理步骤,因而保证了数据的一致性; (3)简化对变动的 阅读全文
posted @ 2016-12-04 19:43 Sumomo 阅读(205) 评论(0) 推荐(0)
摘要:1.视图 视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。 第12课的列子,用SELECT语句从三个表中检索数据,列出订购物品'RGAN01'的所有顾客。输入: SELECT cust_name, cust_contact FROM Customers, Orders, O 阅读全文
posted @ 2016-12-04 19:42 Sumomo 阅读(402) 评论(0) 推荐(0)
摘要:1.创建表 一般有两种方法: 多数DBMS都具有交互式创建和管理数据库表的工具; 也可以直接用SQL语句操纵。 (1)表创建基础 新表的名字,在关键字CREARE TABLE之后给出; ‚表列的名字和定义,用逗号分隔; ƒ有的DBMS还要求指定表的位置。 输入: CREATE TABLE Prod 阅读全文
posted @ 2016-12-04 19:35 Sumomo 阅读(249) 评论(0) 推荐(0)
摘要:1.更新数据 更新(修改)表中的数据,可以使用UPDATE语句,有两种方式: 更新表中的特定行; 更新表中的所有行。 注意,不要省略WHERE子句。 基本的UPDATE语句由三部分组成: 要更新的表; 列名和它们的新值; 确定要更新哪些行的过滤条件。 (1)UPDATE语句总是以要更新的表名开始,S 阅读全文
posted @ 2016-12-04 19:34 Sumomo 阅读(171) 评论(0) 推荐(0)
摘要:1.数据插入 INSERT用来将行插入(或添加)到数据库表。插入有几种方式: 插入完整的行; 插入行的一部分。 插入某些查询的结果。 (1)插入完整的行 使用基本的INSERT语法,输入: INSERT INTO Customers VALUES('1000000006', 'Tony Land', 阅读全文
posted @ 2016-12-04 19:32 Sumomo 阅读(224) 评论(0) 推荐(0)
摘要:1.组合查询 SQL允许执行多个查询(多个SELECT语句),并将结果作为一个查询结果集。这些组合查询通常称为并(union)或者复合查询(compound query)。 需要使用组合查询主要有两种情况: (1)对一个查询中从不同的表返回数据结构 (2)对一个表执行多个查询,按一个查询返回数据。 阅读全文
posted @ 2016-12-04 19:31 Sumomo 阅读(219) 评论(0) 推荐(0)
摘要:1.使用表别名 给列起别名的语法如下(第7章),输入: SELECT Concat(vend_name, ' (', RTRIM(vend_country), ')') FROM Vendors ORDER BY vend_name; 输出: SQL除了可以对列名和计算字段使用别名,还允许给表名起别 阅读全文
posted @ 2016-12-04 19:30 Sumomo 阅读(169) 评论(0) 推荐(0)
摘要:1.联结 SQL最强大的功能之一就是能在数据查询的执行中联结(join)表。 (1)关系表 关系表的设计是把信息分解成多个表,一类数据一个表。各表通过某些共同的值互相联系。 建立两个表:一个存储供应商信息,另一个存储产品信息。 Vendors表包含所有供应商信息,每个供应商占一行,具有唯一标识,称为 阅读全文
posted @ 2016-12-04 19:26 Sumomo 阅读(167) 评论(0) 推荐(0)
摘要:1.子查询 查询(query):任何SQL语句都是查询,但此术语一般指SELECT语句。 子查询(subquery):嵌套在其他查询中的查询。 2.利用子查询进行过滤 假设需要列出订购物品'RGAN01'的所有顾客,检索步骤为: (1)检索包含物品RGAN01的所有订单的编号; (2)检索具有前一步 阅读全文
posted @ 2016-12-04 19:25 Sumomo 阅读(278) 评论(0) 推荐(0)
摘要:1.数据分组 目前为止的所有计算都是在表的所有数据或匹配特定的WHERE子句的数据上进行的,如返回供应商DLL01提供的产品数目,输入: SELECT COUNT(*) AS num_prods FROM Products WHERE vend_id = 'DLL01'; 输出: 而使用分组可以将数 阅读全文
posted @ 2016-12-04 19:24 Sumomo 阅读(361) 评论(0) 推荐(0)
摘要:1.聚集函数(aggregate function) 对某些行运行的函数,计算并返回一个值。 汇总表中的数据,而不需要实际数据本身的SQL查询有: 确定表中行数; 获得表中某些行的和; 找出表列的最大值、最小值、平均值。 为了方便这种类型的检索,SQL给出了5个聚集函数。 函数 语法(MySQL) 阅读全文
posted @ 2016-12-04 19:23 Sumomo 阅读(158) 评论(0) 推荐(0)
摘要:1.函数 与SQL语句不同,SQL函数是不可移植的。 可移植(portable):所编写的代码可以在多个系统上运行。 每个DBMS都有特定的函数: 函数 语法(MySQL) 提取字符串的组成部分 SUBSTRING() 数据类型转换 CONVERT() 提取当前日期 CURDATE() 函数 语法( 阅读全文
posted @ 2016-12-04 19:22 Sumomo 阅读(207) 评论(0) 推荐(0)
摘要:1.LIKE操作符 通配符:用来匹配值的一部分的特殊字符。实际上是SQL的WHERE子句中含有特殊含义的字符,在搜索子句中使用通配符,必须使用LIKE操作符指示DBMS,后跟的搜索模式利用通配符匹配而不是简单的相等匹配进行比较。 搜索模式:由字面值、通配符或者两者组合构成的搜索条件。 谓词:LIKE 阅读全文
posted @ 2016-12-04 19:21 Sumomo 阅读(354) 评论(0) 推荐(0)
摘要:1.计算字段 字段(field):基本上与列的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常与计算字段一起使用。 2.拼接字段 (1)拼接(concatenate):将值联结到一起(将一个值附加到另一个值)构成单个值。 在SQL的SELECT语句中,可以使用一个特殊的操作符来拼接两个 阅读全文
posted @ 2016-12-04 19:21 Sumomo 阅读(232) 评论(0) 推荐(0)
摘要:组合WHERE子句以建立功能更强、更高级的搜素条件。 1.组合WHERE子句 为了实现更强的过滤控制,SQL允许给出多个WHERE子句。这些子句有两种使用方式,即以操作符AND或OR进行联结或改变。 (1)AND操作符 用来指示检索满足所有给定条件的行。 输入: SELECT prod_id, pr 阅读全文
posted @ 2016-12-04 19:19 Sumomo 阅读(225) 评论(0) 推荐(0)
摘要:使用WHERE子句 在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出。 输入: SELECT prod_price, prod_name FROM Products WHERE prod_price = 3.49; 输出: 检索两个列 阅读全文
posted @ 2016-12-04 19:18 Sumomo 阅读(196) 评论(0) 推荐(0)
摘要:1.排序数据 单个列未排序,输入: SELECT prod_name FROM Products; 输出: 该数据顺序不具有任何意义。 按字母顺序进行排序,输入: SELECT prod_name FROM Products order by prod_name; 输出: 注意,ORDER BY子句 阅读全文
posted @ 2016-12-04 19:17 Sumomo 阅读(176) 评论(0) 推荐(0)