数据库

数据库优点:

数据库是按照特定的格式存储到文件中,通过SQL语句可以方便的对大量的数据进行增删改查操作,数据库是对大量的信息进行管理的高效的解决方案.

数据的存储的方式:

1.数据保存在内存中优点:内存速度快,确定:断电,程序退出就没有,价格高。

2.数据保存在普通文件优点:永久保存 缺点:查询,增加,删除比较麻烦。

3.数据保存在数据库优点:永久保存,通过SQL语句比较方便操作数据库。

DOS命令

DOS命令方式启动步骤:net stop mysql

控制台连接数据库:登录 mysql -uroot -proot

SQL通用的语法:

DDL:数据定义语言,定义database,table等等

DML:数据操作语言,增,删,改数据。

DQL:数据查询语句,查询数据的。

 

Select语句:    

Select指定查询那些列的数据.

*号代表查询所有的列.

From指定查询那张表.

DISTINCT可选,指点显示结果,是否剔除重复数据.

where子句:进行过滤查询.

Like语句:%代表零个或多个任意字符_代表一个字符

Order by指定排序的列,Asc升序 Desc降序 这个语句应该位于Select语句结尾.

 


 

1.单条件查询

  • 运算符有:>, <, >=, <=, =, <>。is null 和 is not null

2.多条件查询

  • 连接符有:and(且), or(或), not(不否定语句)

3.范围查询

  • between 开始值 and 结束值,包含开始值和结束值。
  • in(值1,值2)

4.模糊查询

  • 语法:like '表达式' 在表达式里可以写
  • _: 一个任意字符。
  • %: 任意个任意字符。“%鲁%”查询包含鲁字的姓名

5.排序查询

  • 语法:order by 排序字段 排序规则,排序字段2
  • 则有:ASC:升序,从小到大 DESC:降:从大到小

6.聚合查询

  • 聚合函数:用于统计的,常用的聚合函数有;
  • count():统计数量
  • sum();求和
  • avg():求平均值
  • max():求最大值
  • min():求最小值
  • 注意:所有的聚合函数都会忽略null值

7.分组查询

  • 语法:group by 分组字段 having 分组后的过滤条件
  • 注意:select后边,只能跟分组的字段,或者聚合函数
  • where和having的区别:
  • where在分组前执行;having在分组后执行。
  • where过滤原始表的数据;having过滤分组后的数据
  • where里不要写聚合函数;having里可以写聚合函数。

8.分页查询

  • 语法:limit 起始索引。查询数量

9.综合查询

  • 练习1:

DCL:数据控制语言,DBA使用的,管理Mysql的权限,创建用户,授权管理。

TCL:事务管理语言,管理事务的。

约束

1.主键约束

主键:一张表的唯一标识,原则上:每张表必须有主键,且只能一个主键。

  • 主键约束
  • null约束
  • not null 约束

特点:被主键约束的字段,值必须是非空,唯一

语法:primary key

2.唯一约束

  • 效果:唯一约束的字段,值不能重复,但是可以为null
  • 语法:字段名 类型 unique

3.非空约束

  • 效果:非空约束的字段,值不能为null
  • 语法:字段名 类型 not null

4.默认值约束

  • 效果:默认值约束的字段,如果不指定值,取默认值(如果指定null值。值就是null,不取默认值)
  • 语法:字段名 类型 default 默认值
  • null 空值 not null 非空

5.外键约束

  • 效果:外键约束的字段,必须从指定表的主键中取值。
  • 目的:保证数据的一致性和完整性,避免脏数据。
  • 语法:

1.创建表时设置的外键:【constraint 约束名称】foreign key(主键字段) references 主表(主键)

2.已有表里设置外键:alter table 表名称 add [constraing 约束名称]foreign key(外键字段)references 主表(主键)

表关系

1.一对一关系

2.一对多

3.多对多

备份和恢复(了解)

  • 备份(dos命令):musqldump -u用户名 -p密码 数据库名称>E:\lu.sql
  • 恢复(sql语句):
  • 登录Mysql
  • 如果库不存在,就创建库;
  • 使用库
  • 执行SQL:source E:\lu.sql

多表查询

1.多表查询技巧:确定表,确定表之间的关联的条件,从关联条件中得到结果,进行筛选。统计,计算想要的结果。

2.内连接查询:查询必定有关联的数据。

3.外连接查询:查询一张表的全部数据,及另一张表的关联的数据。

4.子查询:查询的技巧,没有固定的语法。

范式

笛卡尔积现象

内连接

内链接的查询的效果:查询两张表之间必定有关联的数据

  • 显示内链接:

    select 字段 from 表1 inner join 表2 on 关联套 件 where 条件

  • 隐示内链接:
  • select 字段 from 表一,表二 where 关联条件 and 条件
  • 外连接
  • 左外连接

    查询左边的全部数据,以及右边的关联的数据

    select 字段 from 表一 left join 表二 on 关联条件 where 条件

  • 右外连接

    查询右边的全部数据,以及左表的关联数据

    select 字段 from 表一 right join 表二 on 表关联条件 where 条件

  • 子查询
  •  是一种查询的技巧,没有固定的语法,查询嵌套.
  • 子查询结果是一行一列:一个值
  • 子查询结果是多行一列:一个集合
  • 子查询结果是多行多列:一张虚拟表

事务(重点)

1.什么是事务

  • 什么是事务:数据库的概念,指 事务组成的一级操作单元,要么全部成功,要么全部失败。
  • 事务的作用:保证多个操作要么全部成功,要么全部失败。
  • 什么时候使用事务:多条DML语句执行时,要求都成功或都失败。事务无关查询操作
  • 事务的经典使用场景:张三要给李四转账100
    回滚事务:SQL语句
  • 开启事务
  • 执行SQL:张三扣钱100
  • 执行SQL:李四加钱100
  • 关闭事务:
  • 提交事务:SQL语句生效

 

2.事务管理

  • 数据准备

2.1手动提交事务管理

2.2自动提交的事务管理

  • 自动提交的开关设置和查询
  • 通过自动提交开关,进行事务管理

3.回滚点

  • 回滚点:事务里可以回滚到指定额回滚点,二不必回滚事务里所有的操作

4.事务特性和隔离级别

4.1事务的四大特性ACIL(面试题)

  • A:Atomicity,原子性。事务不可分割,即:事务里所有操作要成功,都成功;要失败,都失败。不可能成功一半
  • C: Consistency,一致性。事务提交前后,数据是完整一致的
  • I:Isolation,隔离性。多事务并发时,理论上事务应该是完全隔离,相互独立、互不影响的
  • D:Durability,持久性。事务一旦提交,数据变更就永久保存到磁盘文件上了。

4.2事务的隔离级别和并发问题

4.2.1事务并发问题

  • 脏读:一个事务里,读取到里另一个事务未提交的数据
  • 不可以重复:一个事务里,多次读取的数据不一致;受到了其他事务的update干扰
  • 虚度、幻读:一个事务里,多次读取的数据数量不一致;受到了其他事务的insert,delete干扰

4.2.2事务的隔离级别

隔离级别

脏读

不可重复读

虚读

read uncommitted

read committed

repeatable read

serializable

 

4.3事务的隔离级别效果的演示

  • 隔离级别的操作

4.3.1演示read uncommitted

  1. 开启两个连接:A(效果演示的事务)和B(干扰事务)
  2. 修改A的隔离级别:read uncomitted
  3. A和B都开启事务
  4. A查询tom的确定原始数据
  5. B修改tom的余额,但是不提交事务
  6. A在查询tom的余额
  7. 如果查询结果改变了,说明存在战脏读问题。