sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)

第六章: 管理数据库事务

  事务 是 由第五章 数据操作语言完成的  DML ,是对数据库锁做的一个操作或者修改。

  • 所有事务都有开始和结束
  • 事务可以被保存和撤销
  • 如果事务在中途失败,事务中的任何部分都不会被记录到数据库

事务的特性:

原子性:是指每个事务都是一个不可分割的最小单元,事务要么成功提交,要么失败回滚,不存在半成功半失败的情况。

一致性:跟原子性密切相关,是指事务的执行结果应该使数据库从一种一致性状态到另一种一致性状态。

隔离性:也称为独立性,是指并行事务的修改必须与其他并行事务的修改相互独立。一个事务处理数据,要么是其他事务执行之前的状态,要么是其他事务执行之后的状态,但不能处理其他正在处理的数据。

持久性:事务一旦成功提交,它执行的结果应该能够持久化到数据库中,接下来的其他操作及故障不应该对它的执行结果又任何影响。

控制事务: commit , rollback ,savepoint;

sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)

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 函数:   略

                        sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)

第十章: 数据的排序与分组

在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

sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)

返回不同salary的分组之和

              sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)

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中的 前三个字符输出

第十二章:  日期和时间

上一篇:<构建之法>第十一章、十二章有感


下一篇:单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法