关系型和非关系型数据库
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