数据库
```
什么是数据库:存放数据的仓库
分类:关系型:MySQL 、Oracle、 SQL server、PostgreSQL、 Sybase
非关系型:Redis MongoDB Memcache Hbase
mysql
1、表的概念:行:对应一条数据
列:字段或者叫属性
进入MySQL的交互模式:mysql -u你的用户名 -p你的密码
2、建库:create database 数据库名 charset="编码方式"
use databass_name
3、数据类型:number string datetime
char(n) 数据表的这个字段就要占用n个字节 然后 不管你里面放多大数据 他始终占用n个字节
varchar(n) 用多少占多少字节,n表示的是最大占用字节数
4、建表:
create table stu (id int primary key auto_increment, name varchar(30), age int, grade_id int);
5、插入数据:
insert into stu(name, age) values("tom", 20),("bob", 20),("lucy", 39)
6、查询:
select * from stu where name="tom"
age between 20 and 30
age in (20, 30)
name like "t%" and age > 20
select * from stu limit 30 拿三十个
limit 2 offset 3 第三个数据之后拿两个
limit 3, 2
order by age 通过年纪升序排列
age desc 降序
查询1班和2班每班有多少个人,并按班级顺序排列
select class,count(*) from A where class in(1,2) group by class order by class
7、内聚函数:avg 求平均值 count 计数 max 求最大 min 最小值 sum 求和
8、分组:group by
select avg(age) from stu group by grade_id;
select avg(age) from stu group by grade_id having avg(age)>20;
9、连表查询:
select * from t1 left join t2 on t1.t2_id = t2.id where t1.id>100;
right join ....on....
select * from (select * from b) as tmp;
先查表b再查表表b的得出的结果
select * from a where name in (select p_name from person);
查询所有 name 在p_name里面的
insert into table_name(name) select p_name from person;
表明叫table_name的name的字段里
10、约束
unique 唯一约束
not null 字段不能为空
default 默认值
foreign key(id)
11、事务(面试的时候有可能会问)
原子性:保证你的全部SQL操作全部执行或者全部不执行,执行过程中 如果出现异常 那么之前的操作就会被回滚
一致性:操作对于原来的字段约束不会有影响 保持一致
隔离性:如果有多个相同操作的事务被同时调用 那么隔离性会使我们的事务串行执行,保证保证同一时间相同的事务 只有一个对数据做操作
持久性:事务执行完毕 数据将被写入到数据库,不会做回滚的动作
12、case ...when... then... end
13、python连接
Redis
优势:一种非关系型数据,支持内存化存放数据,也支持持久化存放数据,支持对key设置过期, 缓存的应用,消息队列,高速的读写能力,支持丰富的数据类型
数据类型:字符串 哈希 列表 集合 和有序集合
对各种数据数据类型的操作,具体参考PPT
消息的订阅发布
python的redis的连接交互
MongoDB
既有关系型的特点 也有非关系型数据库的特点
配置的文件的作用
对数据的增删改查
参考SQL {“name”: {$lt:3}
python连接mongodb 和交互
```