SQL基础教程读书笔记
count(*)和count(colName)的区别,前者会包含NULL的数据行,而后者会得到非NULL的数据行数
聚合函数会将NULL排除,即在SUM,AVG等聚合函数都是排除了NULL数据行的
group by中如果聚合键包含NULL时,在结果中会以空行的形式表现出来
group by的常见错误
在select中出现了多余的列,标准的SQL中使用了group by后select后面只能出现 常数 聚合函数 group by后出现的列名,但是在mysql中可以出现其他的列名,通常是以分组的第一行的数据列返回的,但是不推荐这样的写法
group by 中出现了别名,因为别名通常是在select子句中定义的,而select子句的执行在group by后,所以这样的写法是不规范的(虽然在有些DBMS中不会报错)
group by返回的结果是随机顺序的
在where子句中使用聚合函数是错误的,因为select子句和having子句可以使用聚合函数,聚合函数的计算是在group by以后,而where子句的执行是在group by子句之前
标准SQL中删除数据只能使用delete,但是在一些DBMS中出现了truncate语句,truncate用来删除表的全部数据但是保留表的结构,速度比delete子句要快,delete语句可以使用where限定删除数据行的范围
update语句可以同时更新多个数据列,有两种方法
update tableName set colName1=.. , colName2 = .. where …
update tableName set (colName1,colName2) = (x1,x2) where …
前者是标准的写法,后者在部分DBMS中不被支持
事务就是需要在用一个处理单元中执行的一系列的更新处理的集合,在标准的SQL中并没有规定事务开启的语句是什么,在MySQL中为START TRANSACTION,事务结束的语句一般是COMMIT或者ROLLBACK两种
在无需明确指定事务开始时间的DBMS中如何区分各个事务:
每个SQL都是一个事务(自动提交模式)
直到用户COMMIT或者ROLLBACK为止算一个事务
通常的DBMS都会选择其中的一种方式,使用自动提交模式的如MySQL,SQL Server和PostgreSQL等,在执行sql的时候都会在sql的前后插入start transaction 和 commit语句
ACID特性
- 原子性 多个更新操作要么全部成功要么全部失败
- 一致性 如修改非空约束的列为NULL导致sql无法执行,那么这条不合法的sql就不会生效,其他sql还是会对数据库中的数据生效的
- 隔离性 事务之间相互隔离,在一个事务还没有结束之前,对于其他事务是不可见的,如一个事务中对数据库插入一条数据在提交之前,其他的事务是看到这条新增加的记录的
- 持久性 一旦事务提交或者回滚就会对数据库生效,保证在该时间点的状态被保存
SQL基础教程读书笔记相关推荐
- 嵌入式Linux基础教程-读书笔记
waiting to be fixed. coming soon. +读书笔记: +linux kernel <Linux内核完全剖析基于0.12内核>.pdf 嵌入式Linux基础教程第 ...
- 【SQL基础MICK读书笔记】
第一章 搭建SQL学习环境 一.PostgreSQL下载与安装 1.下载地址 https://www.enterprisedb.com/downloads/postgres-postgresql-do ...
- Objective-C基础教程读书笔记
第二章 对C的扩展 1.#import,让编译器引入一次头文件(且仅引入一次). 2.@符号,Objective-C对C的扩展. 第三章 面向对象编程基础知识 1.中缀符(infix notation ...
- python自学教程读书导图-python机器学习基础教程读书笔记八(全书总结)
全书总结 现在你知道了如何使用重要的机器学习算法进行监督学习和无监督学习,这让你可以解 决很多种机器学习问题.在带你探索机器学习提供的所有可能性之前,我们希望给你一 些最后的建议.一些额外的资源,并提 ...
- Objective-C基础教程读书笔记(3)
第3章 面向对象编程的基础知识 面向对象编程(Object-Oriented Programming)的缩写OOP,这是一种编程技术,最初是为了编写模拟程序而开发的.OOP很快就俘获了其他种类软件(尤 ...
- Python基础教程读书笔记(第1章—第2章:基础知识、列表和元组)
第一章 基础知识 1:Linux中安装 $apt-get install python ($为bash提示符) 2:数字和表达式:1/2 结果为0.from _future_ import divis ...
- Objective-C基础教程读书笔记(8)
第8章 Foundation Kit介绍 Objective-C是一门非常精巧实用的语言,目前我们还没有研究完它提供的全部功能.不过现在,我们先探索另一个方向,快速了解一下Cocoa中的Foundat ...
- Python基础教程---读书笔记四
1. 字典是python中唯一内建的映射类型,值存储在一个特定的key里,key可以是数字.字符串甚至是元祖, key必须唯一. 2. dict()函数用来创建字典 >>> dict ...
- C语言基础教程读书笔记5.2.(第五章函数和存储类2)
4.作用域规则 标示符只能在说明或对他定义它的函数体或分程序内饰可见的,而在该函数体或分程序外则是不可见的. 举个例子: # include <stdio.h> int main() { ...
- C语言基础教程读书笔记2(第二章常量、变量、类型转换)
第二章常量.变量.类型转换<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...
最新文章
- [LeetCode] Longest Substring with At Most K Distinct Characters 最多有K个不同字符的最长子串...
- 一文读懂大数据漏斗分析!
- if you canget up early
- 美国科学院公布新一批院士名单,中科院曹晓风及五名华裔教授当选
- Java任务完成后结算_Java执行程序:如何在任务完成时无阻碍地得到通知?
- php移除所有子节点,jQuery删除/清空指定元素下的所有子节点的方法
- 基于Flink CDC打通数据实时入湖
- 数组的常用方法 Array;
- 在计算机rwn代表,基于改进和RWn-SVM的化工过程故障快速诊断.pdf
- Java报错 -- The public type c must be defined in its own file
- 循环char 指针_c 学习笔记 指针
- jQuery自定义的属性内容包含单引号、双引号,页面显示异常
- 初级网络工程师面试题60例分析
- MATLAB-数据插值
- vue-cli脚手架中使用talkingData埋点的方法
- 1分钟搞定 OneNote自己账号扩容到15G永久免费空间
- 上市公司9月23日晚间公告速递
- 算法竞赛进阶指南 激光炸弹
- 2019第十届蓝桥杯A组决赛(国赛)A题(三升序列)
- 【VulnHub靶场】——CFS三层靶机内网渗透实操