《SQL基础教程》知识点概述

第1章 数据库和SQL

数据库(DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合。
数据库管理系统(DBMS):用来管理计算机的系统。
服务器:用来接收其他程序程序发出的请求,并对该请求进行相应处理的程序,或者安装了此类程序的设备。
客户端:向服务器发送请求的程序,或者安装了此类程序的设备。
SQL语句及其种类:SQL用关键字、表名、列名等组合而成的一条语句来描述操作的内容。种类包括:DDL、DML、DCL。
数据库的创建:CREATE DATABASE <数据库名称>;
表的创建:CREATE TABLE
命名规则:只能使用半角英文字母、数字、下划线,且必须以半角英文字母开头。
数据类型:INTEGER型,CHAR型,VARCHAR型,DATE型
约束条件:NOT NULL、PRIMARY KEY
表的删除 :DROP TABLE <>;
表定义的更新: 添加列 ALTER TABLE <> ADD COLUMN <>; 删除列 ALTER TABLE <> DROP COLUMN <>; 插入数据 INSERT INTO <> VALUES ();

第2章 查询基础

简单查询:SELECT <> FROM <>;
设置别名:AS
去重:DISTINCT
算术运算符:+ 、 - 、 * 、 /
比较运算符: = 、 <>、 >= 、 >、 <、 <= (注意:不能对NULL使用比较运算符,IS NULL ;IS NOT NULL)
逻辑运算符: NOT 、 AND 、OR

第3章 聚合与排序

聚合函数: COUNT 、SUM 、 AVG 、MAX 、 MIN
分组:GROUP BY
HAVING字句,放在GROUP BY 之后
排序:ORDER BY
ASC升序 , DESC降序
排序NULL值放在最后

第4章 数据更新

数据插入 INSERT INTO < > ()VALUES ();
插入默认值 DEFAULT
复制其他表的内容:INSERT INTO < > () SELECT
数据的删除:DROP TABLE 将表完全删除,DELETE会留下表,删除表中的全部内容
数据的更新:UPDATE <表名> SET <列名> = <表达式>;
事务:需要在同一个处理单元中执行的一系列更新处理的集合。
创建事务:START TRANSACTION;(MySQL)
COMMIT——提交处理
ROLLBACK——取消处理
事务具有ACID特性:

  • 原子性(Atomicity):在事务结束时,其中所包含的更新处理要么全部执行,要么完全不执行。
  • 一致性(Consistency): 事务中包含的处理要满足数据库提前设置的约束,如主键约束或者NOT NULL约束。
  • 隔离性(Isolation):不同事务之间互不干扰。
  • 持久性(Durability):也称耐久性,指的是在事务结束后,DBMS能够保证该时间点的数据状态会被保存的特性。

第5章 复杂查询

视图:“从SQL的角度来看视图就是一张表” 与表的区别在于是否保存了实际的数据。视图就是保存好的SELECT语句。
使用视图的优点:

  • 无需保存数据,节省了存储设备的数据空间。
  • 将频繁使用的SELECT语句保存成视图,不用每次都重复书写。
    创建视图的方法:CREATE VIEW 视图名称 (<视图列名1>,<视图列名2>,<>,······) AS <SELECT语句>
    视图的限制:
  • 定义视图时不能使用ORDER BY 子句
  • 对视图进行更新需要满足这些条件(1.SELECT子句中未使用DISTINCT 2.FROM子句中只有一张表 3.未使用GROUP BY 4. 未使用HAVING)
    删除视图:DROP VIEW
    子查询:一言以蔽之,子查询就是一次性视图。与视图不同,子查询在SELECT语句执行完毕之后就会消失。
    标量子查询:必须而且只能返回1行1列的结果。
    标量子查询的书写位置:能够使用常数或者列名的地方,无论是SELECT子句、GROUP BY子句、HAVING子句,还是ORDER BY子句,几乎所有的地方都可以使用。
    关联子查询:在子查询中添加WHERE子句的条件
    以一个例子来说明:通过关联子查询按照商品种类对平均销售单价进行比较
SELECT product_type,product_name,sale_price
FROM Product AS P1
WHERE sale_price > (SELECT AVG(sale_price)
                                FROM Product AS P2
                                WHERE P1.product_type = P2.product_type
                                GROUP BY product_type);

第6章 函数、谓词、CASE表达式

算术函数:+,-,*,/,ABS绝对值,MOD求余,ROUND四舍五入
字符串函数:||——拼接,在MySQL中用CONCAT函数;LENGTH——字符串长度;LOWER——小写转换;REPLACE——字符串的替换;SUBSTRING——字符串的替换;UPPER——大写转换;
日期函数:CURRENT_DATE——当前日期(MySQL);CURRENT_TIME——当前时间;CURRENT_TIMESTAMP——当前日期和时间;EXTRACT——截取日期元素
转换函数:CAST——类型转换;COALESCE——将NULL转换为其他值

谓词
LIKE——字符串的部分一致查询 %代表“0字符以上的任意字符串” ,_代表“任意一个字符串”
BETWEEN——范围查询
IS NULL、IS NOT NULL —— 判断是否为NULL
IN——OR的简单用法
EXIST 判断是否存在满足某种条件的记录,如果存在这样的记录就返回为真,如果不存在就返回为假。EXIST通常用关联子查询作为参数。

CASE表达式 CASE WHEN <> THEN <> ELSE <> END

第7章 集合运算

行方向:UNION(并集),UNION ALL (包含重复项),INTERSECT(交集)——选取表中的公共部分,EXCEPT——用a表减去ab俩表公共的部分
列方向(表的联结):内联结——INNER JOIN, 外联结——OUTER JOIN 选取主表的全部信息(用LEFT、RIGHT来指定主表)
交叉联结——CROSS JOIN (不常用) 笛卡尔积

第8章 SQL高级用法

窗口函数也称OLAP(Online Analysis Processing)函数,能对数据库数据进行实时分析处理。
语法:<窗口函数> OVER ([PARTITION BY <列清单>] ORDER BY <排序用列清单>)

  • 能过作为窗口函数使用的函数:(SUM,AVG,COUNT,MAX,MIN)
  • RANK、DENSE_RANK、ROW_NUMBER
    PARTITION BY设定排序的对象范围(横向对表分组)。
    ORDER BY 指定按哪一列、何种顺序进行排序(纵向排序)。
    窗口函数只能在SELECT子句之中使用。因为在DBMS内部,窗口函数是对WHERE子句或者GROUP BY子句处理后的“结果”进行的操作。
    将聚合函数当作窗口函数使用时的最大特征是以“自身记录”作为基准进行统计,SUM可以实现累计的功能。
    用AVG计算移动平均
SELECT product_id,product_name,product_price,
   AVG (sale_price) OVER (ORDER BY product_id ROWS 2 PRECEDING) AS moving_avg
   FROM Product;

ROWS(行)和PRECEDING(之前) 表示选之前的三行
GROUPING运算符
ROLLUP——同时得出合计和小计
GROUPING——让NULL更加容易分辨
CUBE——用数据来搭积木
GROUPING SETS——取得期望的积木

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,607评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,047评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,496评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,405评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,400评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,479评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,883评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,535评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,743评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,544评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,612评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,309评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,881评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,891评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,136评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,783评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,316评论 2 342

推荐阅读更多精彩内容

  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 7,764评论 5 116
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,119评论 0 9
  • 被岁月撩拨的我的理想 使我追溯我的梦 无声无息这岁月的刀锋 已侵蚀了它的容颜 幼稚儿童稚嫩的脸 是个梦想的起点 雨...
    吴里大怪阅读 288评论 2 3
  • 01 自年初在得到订阅了《武志红的心理学课》,这是我从学习心理学知识以来,学习到最触动我的心理学知识。非常喜欢武老...
    剑飞在思考阅读 333评论 0 1
  • 筝,清扬悦耳;琴,沉敛悦心。这二者的分别于我而言,某日竟忽有所悟。将它比拟成微信与日记的关系——谁说风马牛不相及呢...
    刘飞琼阅读 441评论 4 2