目录
1.
2.字符集
3.
4.update搭配order by 和limit
5.drop table 和delete from 表名
6.主键 primary key
7.修改表
8.外键的父与子的约束关系
9.案例
10.把一个表的内容完全复制到另一个空表中去
11.更复杂的查询
12.group by 分组
13.联合查询
14.内连接和外连接
15.创建索引
16.事务
17.JDBC 编程
1.
关系型数据库对数据的格式比较严格
2.字符集
创建数据库的时候指定字符集: create database sss charset utf8;
不指定utf8可能插入中文失败
3.
游戏的类别
FPS 比如说apex
MOBA 比如说lol
RTS 魔兽3冰封王座 RTS和MOBA的区别是它不仅控制英雄 还控制小兵和建造防御塔商店之类的
RPG 角色扮演游戏 比如说GTA5 巫师3
4.update搭配order by 和limit
去使用
decimal(3,1)有效数字最多3个 保留一位小数
5.drop table 和delete from 表名
区别是 drop后表不存在了
而delete from 表名是把表里面的数据删空
6.主键 primary key
非空 不和行重复
not null+ unique
主码后设置一个 auto_increment
如果传入主码为空可以让主码再上个主码的最大数的基础上加1 .如果指定那么就在指定那里,但是再传入空还是再最大那个+1
7.修改表
给表加一个属性
8.外键的父与子的约束关系
子行添加或者更新只能从父类种去选择
父亲删除更新的话如果子类正在用父类那么删除和更新不了
9.案例
有一个商品要下架了 但是客户还能通过订单查询之前的订单.怎么做?
首先明确不能先删除订单表再删除商品表,这样用户就查不到了,应该给商品表加一列表示是否下架
成为逻辑删除,并不是真删了,而是标记无效
10.把一个表的内容完全复制到另一个空表中去
要求是表的列数的数目和类型要相同
11.更复杂的查询
聚合查询
把查询过程中 表的行和行之间进行一定的运算
以来聚合函数 ,是SQL的库函数
sum 只针对数字 并且会自动跳过为null的行
count是计算行的个数 不算null
12.group by 分组
分组还可以筛选,分组前筛选 用where
分组后筛选 用 having 条件
13.联合查询
把多个表联合在一起查询
1对多 1的那个用多的主键来进行关联
多对多 要中间建立一个关联表 关联表中有两个表的主键 和关联表本身的属性
分组的话,select后面要么搭配聚合函数,要么写被分组的列
普通二叉搜索树 时间复杂度平均logN 最坏的话如果是单叉树的话是N
平衡二叉搜索树 是logN
treemap里面是红黑树
哈希表查询由于有映射是O(1)
14.内连接和外连接
如果两个表的数据一一对应,一个总能在另一个找到它的对应,那么内外连接相同.
如果不在一一对应那么内连接和外连接不同,
内连接只生成对应的列的临时表
外连接仍然生成所有的,不管是否对应.
左外连接生成左边的所有的, 右边如果没有对应则为空
右外连接生辰右边的数据,左边没有对应为空
外连接当两张表中数据不匹配才会有意义
15.创建索引
create index 索引名 on 表名(列名)
key 和unique 自带索引
16.事务
start transaction; //开启事务
commit; // 提交事务
事务的四大特征:
原子性:事务要么全部执行,要么一个不执行,实现事务的原子性要支持回滚操作.回滚操作就是数据库异常断电断网的时候再次恢复的时候会回滚到未操作之前的状态
一致性:事务执行前后,数据是靠谱的
持久性:事务修改后是持久的,由于是写到硬盘上的,重启等一系列操作并不影响它的状态
隔离性: 为了解决并发执行事务所引起的问题
并发: 客户端齐头并进的对服务器发出请求,而服务器对客户的请求同时回复就成为并发
并发引发的问题:脏读
解决方法:给写加锁,写完别的事务才能读,加锁降低了效率,提高了数据准确性,fan
17.JDBC 编程
1.创建初始化数据源