Mysql汇总

权限管理

略(公司一般会有专门负责数据库权限的管理人员 开发人员可以暂时不去了解 用到时查看下文档)

常用语法(8.0之后略有不同)

操作数据库以及数据表

create database db_test default charset utf8;
show databases;
drop database db_test;
show tables;

create table t1(
    列名,类型,是否为空(null/not null),默认值(default 10),auto_increment,primary key 
    id int(11),
    name char(10) 
) engine=innodb default charset=utf8;

drop table t1;

表操作之增删改查

insert into t1(id,name) values(1,'schlafen');
select * from t1;
delete from t1;
update t1 set age =999 where name = 'schlafen';
truncate table t1;

数据类型

  • 数字
    int(ubsigned int 无符号)
    tinyint
    bigint

FLOAT
DOUBLE
decimal(精准存储 底层字符串)

  • 字符串
    char(位数严格 多出来的自动填充 速度快)
    varchar(节省空间)
    text

  • 时间类型
    DATETIME

数据库基础

主键

primary key
一张表只有1个主键,一个主键可以是多列
create table t1(
nid int(11),
pid int(11),
primary key(nid,pid)
) engine=innodb default charset=utf8;

唯一索引

约束不能重复(可以为空,区别于主键的不能为空)
加速查找
create table t1(
id int(11),
num int(11),
xx int(11),
//unique uql(num)
//unique uql(num,xx) 联合唯一索引
) engine=innodb default charset=utf8;

外键

外键名字不能重复 外键的列必须为原表主键
t1表k1 外键约束 t2表k2
constraint fk_k1_k2 foreign key("k1",) references t2('k2')
多列主键时-->
constraint fk_k1_k2 foreign key(id1,id2) references t2(nid,pid)

===》一对多
===》一对一(外键+唯一索引)
===》多对多

SQL语句补充

1.单条插入
2.多条插入 values(x,x,x),(xx,xx,xx)
3.select插入 insert into t1 select id,name from t2

1.别名:select id ,name as cname from t1
2.条件
not in (1,11,111)
between 1 and 10

3.通配符
like 'a%' like 'sch_'

4.显示
limit 10 取10条
limit 1,10 从第1条开始 取一共10条
limit 10 offset 20 从第20条开始 取一共10条

5.排序

6.分组+聚合函数
count max min sum avg
group by
对聚合函数二次筛选时 不能使用where 使用having!!!

7.连表操作
select * from t1,t2 where t1.nid = t2.pid //笛卡尔积做where
select * from t1 left join t2 on t1.nid = t2.pid//推荐

8.临时表
select ... from (select ...) as B

上一篇:Mybatis中xml批量执行Oracle的Sql必须加上 BEGIN END;


下一篇:1022:整型与布尔型的转换