关系型和非关系型数据库
mysql redis\mongodb
dcl 控制语言 授权 创建用户
ddl create drop alter show
数据库操作
创建库 create database 库名
修改库 alter database charset ='utf-8'
使用库 use xxx
show databases 查看库
表的操作
项目的表结构 ******
存储引擎 : innodb
行级锁 、支持外键、支持事务
修改比较频繁的操作
表与表关联的例子 -- 约束
支持事务: 扩展角度
建表
create table 表名(字段名 数据类型(长度) 约束,.....)
数据类型
数字 字符串 时间 枚举和集合
int float(m,n) tinyint
char varchar
char 定长 0-255 存取速度快 但是浪费空间
varchar 变长 0-66635 存取速度满 但是节省空间
date time datetime
'2019-8-7 12:22:22'
20190807122222
enum set
enum 单选
set 多选
insert into 表 values ('alex','抽烟,喝酒')
约束
not null 非空
unique 唯一
default 默认值
auto_increment unique是前提,自增(非空)
primary key 主键
foreign key 外键,要求关联的外表字段必须是unique的 语法!!!!
查看表结构:
desc 表名
show create table 表名
修改表
alter table 表名 rename
alter table 表名 add
alter table 表名 drop
alter table 表名 change
alter table 表名 modify
删除表
drop table 表名
dml select delete update insert
select
单表查
select distinct from where group by having order by limit
分组聚合 select avg(age) from 表 group by post
聚合函数 : min max avg count sum
项目里的orm改成原生sql
多表查
连表查
内连接 inner join
左外连接 left join
右外连接 right join
子查询
查出来的结构作为两一个sql语句的一部分
insert into 表名(字段名) values (值)
update 表名 set 字段名 = 值 where 条件
delete from 表名 where 条件
数据的增删改查 + 自己的表结构
存储引擎 表操作 库操作 权限操作 约束
索引
正确使用索引的条件
建立索引的列的重复度不能太高
条件列不能参与计算
不能使用函数
条件中不能使用范围
like '%c'
条件中用or
a=0 or b=1 or c=2 or d=4 只要其中一列没有索引就无法命中
最左前缀(a,b,c,d) 只适用于and条件的列,如果出现范围,从出现范围的字段开始就失效,必须带着最左侧的列
只要不带a就无法命中索引
a = 1 or b = 2 无法命中索引
a = 1 and b>100 a可以命中索引 b,c,d无法命中
a>200 无法命中索引 因为联合索引一旦使用范围,从使用范围开始之后的索引都不生效
你在你的程序中哪些地方用了索引
主键
unique