SQL 必知必会笔记--完整介绍sql技巧
PS:完整介绍数据处理,表结构操作,视图,事务处理,存储过程,约束,索引,游标,触发,数据库安全等sql技巧
目录
数据处理
增:插入数据+复制表
删:删除行数据+删除指定列数据
改:更新数据
查:基本结构+相关函数+多表查询+多条查询语句
表结构操作+视图
存储过程+事物处理
游标+约束+索引+触发+数据库权限管理
数据处理:
增
- 插入数据sql:INSERT INTO table_name(list_name1,list_name2,list_name4) VALUES(list_v1,list_v2,list_v4); --插入仅有部分列的行,没有给值的列必须有默认值
 - 插入数据由子查询提供:INSERT INTO table_name SELECT.... --可同时插入多列
 - 复制表:SELECT * INTO new_table FROM old_table;|CREATE TABLE new_table AS SELECT * FROM odl_table;(mysql语法) --不同dbms语法有差异
 
删
- 删除行数据:DELETE table_name WHERE... --删除完整的行;快速删除TRUNCATE table_name
 - 删除指定列:UPDATE将指定列的值改为NULL --NULL值即无值
 
改
- 更新数据:UPDATE table_name SET table.list1=v1,table.list2=v2 SELECT/WHERE.... --可同时更新多行值,由子查询检索出更新的行
 - 用老表数据更新新表:UPDATE table_name FROM new_table;
 - 删除指定列:UPDATE table_name SET table_name.list1=null; --将table_name表的列1值更新为null,即删除列1
 
查
- 基本结构:SELECT table_name.list_name,.... FROM table_name,.... WHERE ?GROUP BY ?ORDER BY ?UNION SELECT --?代表省略条件
 - 上方等效为:SELECT子句+FROM子句+WHERE子句+GROUP BY子句+ORDER BY子句+UNION子句
 - 常见的SELECT类型:检索多个列,DISTINCT,LIMIT(类似游标)
- SELECT table_name.list1,table_name.list2...
 - SELECT DISTINCT list1,list2... --检索出来的行去除重有复值的行
 - SELECT list1,list2 FROM table_name LIMIT 5 OFFSET 3 --mysql语法,游标,检索出来的数据,打印五行,从第四行开始打印
 - SELECT TOP 5 list1,list2 FROM table_name; --sql server语法
 - SELECT list1,list2 FEOM table_name FETCH FIRST 5 ROWS ONLY; --db2语法
 
 - 排序ORDER BY:默认升序,位置在最后,降序时参数只作用desc的前一个,支持多列排序和对非检索列排序FROM函数:查询对象表,查询多个表时涉及到联结;书写sql时使用完全控制语句结构更清晰,table_name.list_name
- SELECT list1,list2 FROM table_name ORDER BY list3;
 - SELECT list1,list2,list3 FROM table_name ORDER BY list3DESC, list2;
 
 - 过滤WHERE:通过判定符,函数,多条件组合函数,通配符来设定过滤条件
- 判定符(=,!=,<,>,<=,>=)
 - 函数1‘BETWEEN list_name a AND b’, 函数2‘list_name is NULL’,函数3‘NOT list_name’
 - 多个过滤条件时:使用'AND,OR,IN'来组合过滤条件;其中IN函数可用于子查询
 - 通配符:三种通配符‘%,_,[]’;用法WHERE list_name LIKE %i_t_[V,v] --任何通配符都无法匹配null,%匹配任意位置任意数量字符;_一个符号匹配一个字符;[v1,v2]使用括号里面的任意一个字符来匹配
 
 - SELECT中对字段/列数据处理:有三种方法,‘字段计算,汇总数据,函数处理’
- 字段计算:数值计算和字段拼接;字段可以取别名,计算后的字段亦可
- 字段拼接:SELECT list1_name+list2_name AS new_list_name --非mysql数据库语法
 - 字段计算:SELECT list1_name+|-|*|/list2_name AS new_list_name --|在这表示或,注意运算符执行的顺序
 
 - 汇总数据:使用五个函数实现‘AVG,COUNT,MAX,MIN,SUM’;共同点是五个都只能作用于单列,可以是计算后的字段;且除count外均忽略NULL
- AVG求单列平均值
 - COUNT求该列有多少行
 - MAX该列最大值,若列值不是数值是,则取最后一行,即行号最大的值
 - MIN该列最小值,若列值不是数值是,则取第一行,即行号最小的值
 - SUM求该列所有值之和
 - 单条SELECT中可以使用多个汇总函数的列亦可使用多个别名
 
 - 函数处理:常用的函数有,‘文本处理函数,日期时间处理函数,数值处理函数’;函数除了在SELECT使用在WHERE中亦可使用
- 除字段空值函数,TRIM,RTRIM,LTRIM,除字段两边/右边/左边的空格;常见文本处理函数还有‘LOWER,UPPER,LEN,LEFT,RIGHT,SOUNDEX谐音函数’
 - 日期时间处理函数,各dbms区别很大;DATEPART-SQL server;DATE_PART-postgreSQL;也可通过BETWEEN TO_DATE;YEAR-MYsql
 - 数值处理函数,用来对数值进行二次计算的,用的较少,相对于上方其他函数迁移性较强
 
 
 - 字段计算:数值计算和字段拼接;字段可以取别名,计算后的字段亦可
 - 字段分组GROUP BY:对检索出的字段进行分组,分组可嵌套,位置在WHERE后;GROUP BY 可以结合HAVING使用,HAVING是分组专属过滤函数
 - 查询分两种:单表查询;多表时跨表查询,跨表查询可通过子查询或联结实现组合查询UNION:查询除了单条SELECT的查询还有多条SELECT的组合查询;组合查询类似WHERE OR的变种;其中的单个查询要有相同数据结构和字段;且排序时在最后一条SELECT排序即可;SELECT one1 UNION SELECT one1 ORDER BY...
- 子查询实现跨表查询:基本结构,SELECT list_name,list2_name FROM table_name WHERE IN(SELECT list_1,list2 FROM table_name2) --in函数里面含子查询;将子查询作为母查询的过滤条件,实现跨表查询;可同时嵌套多个子查询;子查询是完整的查询命令,支持查询相关的所有操作
 - 子查询除可以在WHERE中作为过滤条件;同时也可在SELECT中直接作为查询对象来实现跨表查询
 - 联结:联结主要讲两类四种,内联;外联;自联,自然联接;注意跨表联结时,必须要有联接条件,且联结条件中两个表要有相同或同类列,如主键和chang'y外键
- 内联:最基本跨表联结;结构,SELECT table1_name.list_a,table2_name.list_b FROM table1_name,table2_name WHERE table1_name.same_list=table2_name.same_list --这里使用了完全控制,即表名.列名;AS可用于表别名
 - 内联:其他结构,SLECT t1.list_a AS a,t1.list_b AS b,t2.list_c AS c FROM table1_name AS t1 INNER JOIN table2_name AS t1 ON t1.same_list=t2.same_list AND t1.list=value --使用了列别名和表别名;INNER JOIN ON是固定搭配;ON用法及作用和WHERE完全一致
 - 自联:特殊的内联,将查询的单个通过别名命名为多个表,使用内联来建立这多个表的联接实现查询
 - 自然联接:特殊的内联;联接条件必须是等价联接条件;且SELECT中查询的列不重复;同列不同表也不行;常用的内联基本都是自然联接
 - 外联:外联和内联区别在于;内联检索出的是在多个表中有关联的行;而外联既能检索出多个表中有关联的行,也能检索无关联值的行比如空值
- 三种外联结构:SELECT table1_name.list_a,table2_name.list_b,table1_name.list_c FROM table1_name LEFT/RIGHT/FULL OUTER JOIN table2_name ON table1_name.same_list=table2_name.same_list --LEFT/RIGHT/FULL 和ON是固定搭配;分别是左/右/全外联;注意外联不能用WHERE做过滤条件;且不同外联过滤条件顺序有要求;如这条左外联时,过滤条件table1_name.same一定要在等号左边;右外联反之
 
 - 子查询转为外联时;注意子查询的查询对象和母查询的过滤条件是;外联的联接条件;同时外联可以联接任意数量的表;注意效率;
 
 
 
表结构操作+视图(上方都是对数据的操作;下方是对表结构操作;本人日常工作基本都是通过可视化工具操作的												
											SQL 必知必会笔记--完整介绍sql技巧的更多相关文章
	
								- 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作
		
上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...
		 
						- 【SQL必知必会笔记(2)】检索数据、排序检索数据
		
上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...
		 
						- 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入
		
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
		 
						- 读书笔记汇总 - SQL必知必会(第4版)
		
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
		 
						- 读书笔记--SQL必知必会18--视图
		
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
		 
						- 《SQL必知必会》学习笔记二)
		
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
		 
						- 《SQL必知必会》笔记
		
SQL必知必会(第4版) 作者:[美]Ben Forta 本书介绍了sql在不同数据库工具(Oracle.SQLite.SQL server.MySQL.MariaDB.PostgreSQL...)是 ...
		 
						- 《SQL必知必会》学习笔记整理
		
简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...
		 
						- 读书笔记--SQL必知必会--建立练习环境
		
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
		 
		
	
随机推荐
	
									- 最新 奥买家java校招面经 (含整理过的面试题大全)
			
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.奥买家等10家互联网公司的校招Offer,因为某些自身原因最终选择了奥买家.6.7月主要是做系统复习.项目复盘.LeetCo ...
			 
						- linux_shell程序快速入门
			
1.shell的基本类型: 表达式类型:使用关键字expr申明. 声明格式 :var=`expr $a - $b` 相关运算符号:+,-,*,/,%. 坑点:一定要注意空格,某些地方空格省略会造成语法 ...
			 
						- 生信-使用NCBI进行目的基因的引物设计
			
使用NCBI进行目的基因的引物设计 全文概述 利用生信工具进行目的基因的引物设计,使用了NCBI进行筛选与设计引物,使用 idtdna对筛选出的DNA进行检查.本文分享了如何筛选出高质量的基因引物,帮 ...
			 
						- 「LOJ2091」「ZJOI2016」小星星 容斥+DP
			
题目描述 小 Y 是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用 \(m\)条彩色的细线串了起来,每条细线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉 ...
			 
						- 【剑指offer】面试题 21. 调整数组顺序使奇数位于偶数前面
			
面试题 21. 调整数组顺序使奇数位于偶数前面
			 
						- 喜马拉雅 FM 已购付费音频下载
			
如何下载在喜马拉雅 FM 中已购买的付费音频.之前想分享自己购买的付费音频给朋友听,碍于喜马拉雅 FM 的音频不能直接导出,所以准备自己搞个下载的小软件. 仅可下载已购买的付费音频.当然,如果你是会员 ...
			 
						- Mysql中MVCC的使用及原理详解
			
  准备 测试环境:Mysql 5.7.20-log 数据库默认隔离级别:RR(Repeatable Read,可重复读),MVCC主要适用于Mysql的RC,RR隔离级别 创建一张存储引擎为test ...
			 
						- Django RuntimeError: Model class app_anme.models.Ad doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.报错
			
报错内容 RuntimeError: Model class app_anme.models.Ad doesn't declare an explicit app_label and isn't in ...
			 
						- scrapy爬取相似页面及回调爬取问题(以慕课网为例)
			
以爬取慕课网数据为例   慕课网的数据很简单,就是通过get方式获取的 连接地址为https://www.imooc.com/course/list?page=2 根据page参数来分页  
			 
						- promethus监控nginx
			
一.摘要 promethues监控nginx可选两个exporter,通过nginx_exporter主要是获取nginx-status中的内建的指标,nginx自身提供status信息,较为简单,p ...
			 
			
			
							
					
上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...
上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...
文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...
本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...
读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...
<SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...
SQL必知必会(第4版) 作者:[美]Ben Forta 本书介绍了sql在不同数据库工具(Oracle.SQLite.SQL server.MySQL.MariaDB.PostgreSQL...)是 ...
简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...
书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL in 10 Minutes - Fourth Edition> MyS ...
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.奥买家等10家互联网公司的校招Offer,因为某些自身原因最终选择了奥买家.6.7月主要是做系统复习.项目复盘.LeetCo ...
1.shell的基本类型: 表达式类型:使用关键字expr申明. 声明格式 :var=`expr $a - $b` 相关运算符号:+,-,*,/,%. 坑点:一定要注意空格,某些地方空格省略会造成语法 ...
使用NCBI进行目的基因的引物设计 全文概述 利用生信工具进行目的基因的引物设计,使用了NCBI进行筛选与设计引物,使用 idtdna对筛选出的DNA进行检查.本文分享了如何筛选出高质量的基因引物,帮 ...
题目描述 小 Y 是一个心灵手巧的女孩子,她喜欢手工制作一些小饰品.她有\(n\)颗小星星,用 \(m\)条彩色的细线串了起来,每条细线连着两颗小星星.有一天她发现,她的饰品被破坏了,很多细线都被拆掉 ...
面试题 21. 调整数组顺序使奇数位于偶数前面
如何下载在喜马拉雅 FM 中已购买的付费音频.之前想分享自己购买的付费音频给朋友听,碍于喜马拉雅 FM 的音频不能直接导出,所以准备自己搞个下载的小软件. 仅可下载已购买的付费音频.当然,如果你是会员 ...
准备 测试环境:Mysql 5.7.20-log 数据库默认隔离级别:RR(Repeatable Read,可重复读),MVCC主要适用于Mysql的RC,RR隔离级别 创建一张存储引擎为test ...
报错内容 RuntimeError: Model class app_anme.models.Ad doesn't declare an explicit app_label and isn't in ...
以爬取慕课网数据为例 慕课网的数据很简单,就是通过get方式获取的 连接地址为https://www.imooc.com/course/list?page=2 根据page参数来分页
一.摘要 promethues监控nginx可选两个exporter,通过nginx_exporter主要是获取nginx-status中的内建的指标,nginx自身提供status信息,较为简单,p ...