这一章的结构如下: SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 SELECT 语句可用于查询数据,并且可以设定条件来查询具有特定值的记录.条件的设定就需要算数运算符.比较运算符和逻辑运算符发挥作用. SELECT 语句基础 格式 SELECT <column1>, <column2>, <column3>...FROM <table>; 注意:SELECT 语句后面的对象既可以是列名,也可以是相关的算术表达式. AS 关键字 功能:利用 AS…
这一章节主要讲了三方面的内容: 数据的汇总操作a. 聚合函数b.分组操作 给汇总操作指定条件 对汇总结果进行排序 COUNT()等聚合函数 定义: 输入多行,输出一行的函数称为聚合函数 功能: 用于对数据进行汇总,如: COUNT: 计算表中的记录数( COUNT(*) 的时候为所有行的行数, COUNT(<column>)的时候是不包含 NULL 时候的行数. SUM: 计算数值列中的合计值(提前将 NULL 排除) AVG:计算数值列中的平均值(提前将 NULL 排除) MAX: 求任意列…
[SQL基础教程] 3-4 对查询结果进行排序/ORDER BY ORDER BY SELECT <列名1>,<列名2>,<列名2>... FROM ORDER BY <排序基准列1>,<排序基准列2>...; 法则3-15 ORDER BY子句通常写在select子句末尾 DESC/ASC ... ORDER BY col DESC; /*降序排列*/ ... ORDER BY col ASC; /*升序排列*/ 指定多个排序键 先按col_1…
[SQL基础教程] 3-1 对表进行聚合查询 聚合函数 用于合计的函数称为聚合函数或者集合函数 COUNT SUM AVG MAX MIN SELECT COUNT(*) FROM table; SELECT COUNT(col) FROM table 理解 聚合函数在SELECT子句中使用: 以为输入. 法则 3-1 COUNT(*) 计算包含NULL的数据行; COUNT() 计算NULL除外的数据行. 法则 3-2 聚合函数在处理数据时将NULL排除在外,但COUNT(*)除外. 法则 3…
[SQL基础教程] 5-1视图 视图和表 从SQL角度看视图就是一张表 视图与表的差别 表保存了实际的数据,视图保存的是SELECT语句: 视图的优点 节省存储空间: 将常用的Select 语句保存成视图. 视图中的数据会随着原表中数据变化而更新. 创建视图 CREATE VIEW 视图名称(<视图列名1>,<视图列名2>,<视图列名3>...) AS SELECT语句 视图就是保存好的SELECT语句 基于视图的SELECT查询语句 SELECT a,b FROM v…
[SQL基础教程] 2-1 SELECT语句基础 列的查询 Syntax SELECT<列名>,..... FROM<表名>; SELECT col_1, col_2 FROM table; 查询所有列 Syntax SELECT * FROM <表名>; SELECT * FROM table; 注意 使用*后无法指定列的显示顺序 为列设定别名 SELECT col_1 AS col1, col_2 AS col2 col_2 AS "汉语别名"…
写在前面:本文主要注重 SQL 的理论.主流覆盖的功能范围及其基本语法/用法.至于详细的 SQL 语法/用法,因为每家 DBMS 都有些许不同,我会在以后专门介绍某款DBMS(例如 PostgreSQL)的时候写到. 第 1 章 DBMS 与 SQL 1.DBMS 是什么 ? 数据库管理系统(Database Management System, DBMS) 是用来管理数据库的计算机系统. 本文采用 PostgreSQL 为 DBMS. 2.为什么要用 DBMS ? 问:为什么不用 文本文件 或…
[SQL基础教程] 4 数据更新 4-4 事务 事务 需要在同一处理单元中执行的一系列更新处理的集合 创建事务 事务开始语句; DML语句1; DML语句2; . . . 事务结束语句; 事务开始语句 // SQL Server/ PostgreSQL BEGIN TRANSACTION // MySQL START TRANSACTION 事务结束语句 COMMIT ROLLBACK 回滚数据库到事务开始状态. 事务处理何时开始和结束 几乎所有的数据库产品都不需要开始指令. 自动提交模式 非自…
[SQL基础教程] C4 数据更新 4-3 数据的更新(UPDATE) UPDATE UPDATE <表名> SET <列名> = <表达式>; UPDATE <表名> SET <列名> = <表达式> WHERE <条件>; PS : 注意SET子句和WHERE子句的顺序. 用NULL清空数据 用UPDATE清空数据,仅限于非NOT NULL约束的列. 多列UPDATE 语句 UPDATE <表名> SET…
[SQL基础教程] C4 数据更新 4-2 数据删除(DELETE) DROP TABLE / DELETE DROP TABLE - 完全删除表 DELETE - 仅删除数据,保留表容器 DELETE DELETE FROM <表名> DELETE FROM <表名> WHERE 条件…
[SQL基础教程] C4 数据更新 4-1 数据的插入(INSERT) INSERT INSERT INTO <表名>(列1,列2...) VALUES(值1,值2...); 清单 用()包含内容 (col_1,col_2...) /*列清单*/ (value_1,value_2) /*值清单*/ 多行INSERT INSERT INTO table VALUES (value_1,value_2,..), (value_3,value_4...), ...; 列清单省略 /*全列INSERT…
[SQL基础教程] 3-3 HAVING HAVING子句 SELECT col_1,col_2 FROM table GROUP BY col_1,col_2 HAVING col_1 = '2'; 法则 3-13 HAVING子句在GROUP BY子句之后 法则 3-14 HAVING 子句中元素的约束: 常数 聚合函数 聚合键 法则 3-15 WHERE 指定所选行的条件 HAVING 指定组的条件.…
[SQL基础教程] 3-2 对表进行分组 GROUP BY SELECT <列名1>,<列名2>,... FROM <表名> GROUP BY <列名1>,<列名2>,...; 聚合键 聚合键 GROUP BY 中指定的列称为聚合键或者分组列. NULL元素的行会划分为一组,以空行表示. 理解 GROUP BY 将指定列的含元素作为KEY进行分组,同值的行数据划分为一组 语句顺序与执行顺序 子语句顺序 SELECT -> FROM ->…
[SQL基础教程] 2-3 逻辑运算符 NOT AND OR 优先级 ( )改变优先级 AND 优先级高于 OR NULL 引入三值逻辑…
[SQL基础教程] 2-2 算数运算符和比较运算符 算数运算符 四则运算 运算符 含义 + - * / SELECT col_1*2 AS col_new FROM table; 注意 所有包含NULL的计算结果都是NULL 比较运算符 运算符 含义 = <> > < >= <= 注意 字符串比较时,字符串类型是按照字典顺序排序的. 注意 不能对NULL使用比较运算符. 希望选取NULL时,用 IS NULL / IS NOT NULL 作为判断条件.…
[SQL基础教程] 1-5 表的删除和更新 表的删除 语法 DROP TABLE <表名>; 法则 1-12 删除的表无法恢复 表定义的更新 语法 ALTER TABLE<表名> ADD COLUMN<列的定义>; // 添加列 ALTER TABLE<表名> DROP COLUMN<列的定义>; // 删除列 ps: **Oracle.SQL server 不用添加 COLUMN关键字* 插入数据 语法 BEGIN TRANSATION; IN…
[SQL基础教程]1-4 SQL 表的创建 创建数据库 语法 CREATE DATABASE <数据库名称> // example CREATE DATABASE shop; 创建表 语法 CREATE TABLE <表名> ( <列名1> <数据类型><约束>, <列名2> <数据类型><约束>, . . . <表的约束1>,<表的约束2>... ); // example CREAT…
我认为<SQL基础教程(第2版)>非常适合数据库学习的初学者.论述的角度是读者的角度,会换位思考到读者在看到这一段时候会发出怎样的疑问,非常难得:原始数据的例题只有一道,但是可以反复从不同角度提出不同的问题进行处理,避免了眼花缭乱之感:习题也比较有趣,有的问题反而是属于问题本身其实是个陷阱的,考验初学者. 畅销书<SQL基础教程>第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法.书中通过丰富的图示.大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基…
这两天阅读SQL基础教程,目标是把SQL语法吃透,会写一些笔记.…
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理(二) - 查询基础>的下篇. 目录 对表进行聚合查询 对表进行分组 为聚合结果指定条件 对查询结果进行排序 一.对表进行聚合查询 1.聚合函数 (1)5 个常用函数: ①COUNT:计算表中的记录(行)数. ②SUM:计算表中数值列的数据合计值. ③AVG:计算表中数值列的数据平均值. ④MAX:求出…
第3章 聚合与排序:3-4 对查询结果进行排序 ● 使用ORDER BY子句对查询结果进行排序.● 在ORDER BY子句中列名的后面使用关键字ASC可以(通常省略默认)进行升序排序,使用DESC关键字可以进行降序排序.● ORDER BY子句中可以指定多个排序键.● 排序健中包含NULL时,会在开头或末尾进行汇总.● ORDER BY子句中可以使用SELECT子句中定义的列的别名.● ORDER BY子句中可以使用SELECT子句中未出现的列或者聚合函数.● ORDER BY子句中不能使用列的…
查询基础 2.2 算数运算符和比较运算符 2.2.1算数运算符 + - * / 需要注意NULL 5 + NULL 10 - NULL 1 * NULL 4 / NULL NULL / 9 NULL / 0以上运算结果全都是NULL,实际上所有包含NULL的运算,结果肯定是NULL. 2.2.2比较运算符 1. 运算符 含义 = 和~相等 <> 和~不相等 >= 大于等于~ > 大于~ < 小于~ <= 小于等于~ 2.对字符串使用不等号时的注意事项字符串类型的数据原则…
第8章 SQL高级处理:8-1 窗口函数 ● 窗口函数可以进行排序.生成序列号等一般的聚合函数无法实现的高级操作.● 理解PARTITION BY和ORDER BY这两个关键字的含义十分重要. ■什么是窗口函数 在Oracle和 SQL Server中称为分析函数.但是 MySQL 的5.7版本还是不支持窗口函数.OLAP 是 OnLine Analytical Processing 的简称,意思是对数据库数据进行实时分析处理. 例如,市场分析.创建财务报表.创建计划等日常性商务工作.窗口函数就…
本章将以此前学过的SELECT语句,以及嵌套在SELECT语句中的视图和子查询等技术为中心进行学习.由于视图和子查询可以像表一样进行使用,因此如果能恰当地使用这些技术,就可以写出更加灵活的 SQL 了. ● 表中保存的是实际的数据,而视图中保存的是SELECT语句(视图本身并不存储数据). ● 使用视图,可以轻松完成跨多表查询数据等复杂操作.● 可以将常用的SELECT语句做成视图来使用. ● 视图包含“不能使用ORDER BY”和“可对其进行有限制的更新”两项限制. ■视图和表 通常,我们在创…
● 包含NULL的运算,其结果也是NULL. ● 判断是否为NULL,需要使用IS NULL或者IS NOT NULL运算符. ■算术运算符 ■需要注意NULL ■比较运算符 这些比较运算符可以对字符.数字和日期等几乎所有数据类型的列和值进行比较. 除此之外,还可以使用比较运算符对计算结果进行比较. ■对字符串使用不等号时的注意事项 ■不能对NULL使用比较运算符 2-3 第2章 查询基础  逻辑运算符 ■ NOT运算符 ■ AND运算符和OR运算符 ■使用括号强化处理 ■逻辑运算符和真值 ■含…
这一章讲了关于创建视图.操作视图的知识. 视图:是不保存实际数据的,来自于表的,保存好的 SELECT 语句.使用视图有三个优点: 无需保存数据,因此节省储存设备的空间 视图可以命名,然后被保存.因而可以重复使用. 视图会自动更新,随着原表的数据的变化而变化 视图的创建与删除 创建视图 格式: CREATE VIEW <viewname>(<vcol1>,<vcol2>, ...)ASSELECT ... 例子:CREATE VIEW ProductSum (produ…
第5章 复杂查询:5-3 关联子查询 ● 关联子查询会在细分的组内进行比较时使用.● 关联子查询和GROUP BY子句一样,也可以对表中的数据进行切分.● 关联子查询的结合条件如果未出现在子查询之中就会发生错误. ■普通的子查询和关联子查询的区别 使用子查询就能选取出销售单价(sale_price)高于全部商品平均销售单价的商品. 这次我们稍稍改变一下条件,选取出各商品种类中高于该商品种类的平均销售单价的商品. 这样大家就能明白该进行什么样的操作了吧.我们并不是要以全部商品为基础,而是要以细分的…
第5章 复杂查询:5-2 子查询 ● 一言以蔽之,子查询就是一次性视图( SELECT语句).与视图不同,子查询在SELECT语句执行完毕之后就会消失.● 由于子查询需要命名,因此需要根据处理内容来指定恰当的名称.● 标量子查询就是只能返回一行一列的子查询. ■子查询和视图 前一节我们学习了视图这个非常方便的工具,本节将学习以视图为基础的子查询. 子查询的特点概括起来就是一张一次性视图. ■子查询的名称 原则上子查询必须设定名称,因此请大家尽量从处理内容的角度出发为子查询设定恰当的名称. ■标量…
3-1 对表进行聚合查询 ● 使用聚合函数对表中的列进行计算合计值或者平均值等的汇总操作.● 通常,聚合函数会对NULL以外的对象进行汇总.但是只有COUNT函数例外,使用COUNT(*)可以查出包含NULL在内的全部数据的行数.● 使用DISTINCT关键字删除重复值. ■聚合函数 COUNT:   计算表中的记录数(行数)SUM:计算表中数值列中数据的合计值AVG:计算表中数值列中数据的平均值MAX:求出表中任意列中数据的最大值MIN: 求出表中任意列中数据的最小值 如上所示,用于汇总的函数…
SELECT product_name, regist_date FROM Product WHERE regist_date > '2009-04-28'; ① ~ ③中的 SQL 语句都无法选取出任何一条记录. -- SELECT语句① SELECT product_name, sale_price, purchase_price FROM Product ; -- SELECT语句② SELECT product_name, sale_price, purchase_price FROM…