sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)
第六章: 管理数据库事务
事务 是 由第五章 数据操作语言完成的 DML ,是对数据库锁做的一个操作或者修改。
- 所有事务都有开始和结束
- 事务可以被保存和撤销
- 如果事务在中途失败,事务中的任何部分都不会被记录到数据库
事务的特性:
原子性:是指每个事务都是一个不可分割的最小单元,事务要么成功提交,要么失败回滚,不存在半成功半失败的情况。
一致性:跟原子性密切相关,是指事务的执行结果应该使数据库从一种一致性状态到另一种一致性状态。
隔离性:也称为独立性,是指并行事务的修改必须与其他并行事务的修改相互独立。一个事务处理数据,要么是其他事务执行之前的状态,要么是其他事务执行之后的状态,但不能处理其他正在处理的数据。
持久性:事务一旦成功提交,它执行的结果应该能够持久化到数据库中,接下来的其他操作及故障不应该对它的执行结果又任何影响。
控制事务: commit , rollback ,savepoint;

6.1 commit
在操作之前 需要 设置: set autocommit = 0 ; // 否则所有的操作都是 自动提交的
commit: 用于把事务所做的修改保存到数据库,它把上一个commit 或 rollback 命令之后的全部事务都保存到数据库中。
6.2 rollback
用于撤销还没有保存到数据库中的命令,它只能用于撤销上一个commit 或rollback命令之后的事务
6.3 savepoint
保存点,事务过程中的一个逻辑点,可以把事务回退到这个点。
savepoint point_name ;
// update insert delete
rollback to point_name ; // 还原到某个 point
release savepoint point_name; // 删除某个 point
第七章:数据库查询
order by 用法
升序(default)
select * from student order by age , name ; // 根据年龄排序,如果年龄相同根据 name 排序
select * from student order by 1,2,3; // 根据第1,2,3列排序
降序:
select * from student order by age desc , name ; //age 降序,而name 是升序
第八章: 使用操作符对数据进行分类
1、比较操作符
相等/不等于 = <>
大于/小于 > <
大于等于/小于等于 >= <=
2、 逻辑操作符
is null : where name=null;
between : where cost between 10 and 20 ; // 包含 10 和 20
in : where cost in('5','30','39');
like : % : 代表零个,一个,多个字符
_ : 代表一个数字或字符
匹配200开头的值 where salary like '200%'
匹配包含200的值 where salary like '%200%'
匹配第二个三个字符是0 where salary like '_00%';
exists : select cost from tbl where exists (select cost from tbl where cost>100) ;
// 如果cost>100 存在,则显示所有的cost
3、连接操作符
and
or
4、 求反操作符
not between
not like
not in
not exists
not null
5、 算术操作符
第九章: 汇总查询得到的数据
1、 汇总函数:
count : 统计不含NULL记录的字段,它返回一个数值
select count(*) from stu ; 统计stu表中所有行
select count (salary) from stu; 统计stu中所有salary为非空的行数
sum : 返回一组记录中某一个字段的总和。也可以和distinct一起使用 形: sum([distinct] colum_name);
select sum(distinct code) from stu;
avg : 计算一组记录的平局值,与distinct一起使用返回的是 不重复的值得平均值 。 参数必须是数值类型的
select avg(distinct salary) from stu;
max/min 函数: 略

第十章: 数据的排序与分组
在select语句里面 , group by子句在where之后,在order by 之前。
语法结构如下:
select colum_name1 ,colum_name2 from table1 ,table2
where conditions
group by colum1,colum2
order by colum1 ,colum2
先根据salary再根据id排序输出age 和 code

返回不同salary的分组之和

group 与 order by 连在一起使用
select salary , count(*) from stu group by salary order by 2,1 ; // 先按照 salary统计的数量排序,如果数量相同按照 salary 排序
HAVING 子句的用法 (顺序)
select from where
group by
having
order by
select salary , count(*) from stu group by salary having count>2 order by 2,1; // 起到一个判定作用
十一章: 调整数据的外观
1、常用字符函数
concat : concat (colum_name [' ',],column_name2); //只是输出显示改变,表的机构没有变化
example: select concat(name , last_name) full_name from stu; // 连接 姓 和名 , 重新命名为 full_name 输出
translate : translate (character set , value1 ,value2); //mysql : function translate does not exist
repalce : replace (character set , value1 ,value2);
example : select name ,replace (name ,‘h’,'V') from stu; // replace character h in name with V ;
upper/lower : 大小写转换的函数
select name , upper(name) upper_name from stu; // 将name中所有小写字母转换为大写
substr : 获取字符串子串的函数
select name ,substr(name ,1,3) from stu; // 将name中的 前三个字符输出
第十二章: 日期和时间
sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)的更多相关文章
- 《c#入门经典第五版》简介及pdf电子书网盘下载地址(收藏)
<C#入门经典(第5版)>全面讲解C# 2010和.net架构编程知识,为您编写卓越C# 2010程序奠定坚实基础.C#入门经典系列是屡获殊荣的C#名著和超级畅销书.最新版的<C#入 ...
- sql 入门经典(第五版) Ryan Stephens 学习笔记 第四部分:建立复杂的数据库查询/
第十三章: 在查询表里结合表 1.等值结合 : // 选择 tabla_a 和table_b 中id相等的行,输出 他们的id 和name select table_a.id , table_a.na ...
- sql 入门经典(第五版) Ryan Stephens 学习笔记 后续——存储引擎
一.引擎基础 1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎两种方法: a.show table status from database_name where na ...
- sql 入门经典(第五版) Ryan Stephens 学习笔记 第五部分: 性能调整
第十六章: 利用索引改善性能 1. create index 单字段索引: create index index_name on table_name (column_name);唯一索引: ...
- sql 入门经典(第五版) Ryan Stephens 学习笔记 (第一,二,三,,四,五章)
SQL - Structured Query Language (结构化查询语言) 1/ SQL 命令的类型 : 数据定义语言: DDL 数据操作语言: DML 数据查询语言: DQL 数据控制语言 ...
- C#入门经典第五版之变量的更多内容编码题训练
1. 编写一个控制台应用程序,它接收用户输入的一个字符串,将其中的字符以与输入相反的顺序输出. public string ReverseString(string str) { string rev ...
- C#入门经典第五版之变量与表达式编码题训练
问题:编写一个控制台应用程序,要求用户输入4个int值,并显示它们的乘积.提示:可以使用Convert.ToDouble()命令,把用户在控制台上输入的数转换为double, 以此类推,转换成int命 ...
- BOOL运算符号(从C#入门经典第五版中摘录)
只总结自己觉得难的哈: (1) var1=!var2; //(非) (2) var1=var2&var3; //(与) (3)var1=var2|var3; //(或) (4 ...
- 《Python基础教程(第二版)》学习笔记 -> 第六章 抽象
抽象和结构 本章将会介绍如何让将语句组织成函数,还会详细介绍参数(parameter)和作用域(scope)的概念,以及递归的概念及其在程序中的用途. 创建函数 函数可以调用,它执行某种行为,并返回某 ...
随机推荐
- Android sdk manager不能更新下载缓慢的解决方法
通常情况下,下载Android SDK需要连接谷歌的服务器进行下载,由于国内水深火热的网络,速度基本为0.好在国内也有一个更新的镜像地址.本文章介绍如何在不FQ的情况下,使用国内镜像地址,更新andr ...
- Ideal-image-slider 幻灯片
在线实例 实例演示 默认效果 实例演示 淡入淡出 实例演示 带链接 实例演示 项目导航 实例演示 带标题描述 实例演示 回调函数 实例演示 自定义切换 使用方法 <div class=" ...
- 初次接触mootools
以下是今天所学代码,网上有这篇博客可供参考,另外还是推荐官方文档 ,以下是今天所敲代码: //用mootools创建类的方式: //方式1:用标准方式传入一个对象字面量 /* var Person = ...
- ASP.NET MVC 微信公共平台开发之 微信接入
ASP.NET MVC 接入微信公共平台 申请微信公共账号 既然要接入微信公共平台,微信公共号是必须的(当然如果只是测试的话也可以申请微信公共平台接口测试账号),来这里微信公共平台 申请微信公共号(注 ...
- SharePoint 2013 使用查阅项实现联动下拉框
SharePoint列表使用中,经常会用到下拉框,而有些特殊的需求,会用到联动的下拉框,在SharePoint中默认没有这样的字段,所以如果实现,我们需要自己想办法. 这里,我们介绍如何使用JQuer ...
- 利用在线工具自动化生成findviewById
我们在编码的时候经常会用到findviewById,不厌其烦,我之前介绍过一个很取巧的方法,挺好用的,这里再贴一下: public class KaleBaseActivity extends Act ...
- iOS 视频选择压缩
//原理,还是调用UIImagePickerController控制器,设置Type为视频 #import "ViewController.h" #import <AVFou ...
- iOSQuartz2D-03-定制个性头像
效果图 将一张图片剪切成圆形 在图片周围显示指定宽度和颜色的边框 实现思路 效果图中主要由不同尺寸的两大部分组成 蓝色的背景区域,尺寸等于图片的尺寸加上边框的尺寸 图片区域,尺寸等于图片的尺寸 绘制一 ...
- Finder增强插件XtraFinder
关于在Mac上安装XtraFinder插件,现在因为Mac更新到10.11, Mac OS X 10.11(El Capitan)默认开启了 SIP(System Integrity Protecti ...
- 27个提升效率的iOS开源库推荐
DZNEmptyDataSet(UI,空表格视图解算器) PDTSimpleCalendar(UI,drop-in日历组件) MagicalRecord(实施活跃记录模式的Core Data助手) C ...