老师总结数据库

关系型和非关系型数据库

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

posted @ 2019-08-28 18:17  learnacode  阅读(132)  评论(0)    收藏  举报