操作数据库
create database if not exists NAME
drop database if exists NAME
use `NAME
show databases
数据库的列类型
数值(范围)
tinyint(十分小)1
smallint(较小)2
mediumint(中等大小)3
int(标准)4 常用
big(较大)8
float(浮点数)4
double(浮点数)8
decimal(字符串形式的浮点数)金融计算的时候,一般使用
字符串(长度)
char 0~255
varchar 0~65535 常用
tinytext 0~2^8-1
text 0~2^16
时间日期
java.util.Date
date YYYY-MM-DD日期格式
time HH: mm: ss时间格式
datetime YYYY-MM-DD 最常用的时间格式
timestamp 时间戳 1970.1.1到现在的毫秒数
year 年份表示
null
数据库的字段属性(重点)
Unsigned
无符号的整数
声明了该列不能声明为负数
zerofill
0填充的
不足的位数,使用0来填充
auto incr
自增
Null or not Null
notNull,如果不填写,就报错
Null,如果不填写,默认就是null
默认
设置默认值
id主键
'version'乐观锁
is_delete伪删除
gmt_create创建时间
gmt_update修改时间
创建数据库表
'id'名称 'int(4)'类型 是否空 是否自增 默认为 comment注释
格式
create table [if not exists] `表明`(
`字段名` 列类型 [属性] [索引] [注释],
)[表类型][字符集][注释]
数据库引擎
innodb默认使用
myisam早些年使用的
数据库类型
修改表
alter table 旧表名 rename as 新表名
alter table 表名 add 字段名 属性
alter table 表名 modify age varchar修改表的约束
alter table 表明 change 旧字段 新字段 约束
DML(操作语言
insert插入(添加)
insert into 表明 ([字段1,字段2,字段3])values('值1','值2','值3')
update修改(条件)
update `表名字` set `字段`='名字',`字段`='名字' where id=1 and/or name='1';
delete删除
delete from 表名 where 条件
truncate清空
truncate清空表
两者特点都不会删除表结构,truncate重新设置计数器与不影响事务,delete会
DQL(查询语言 ※※※
最核心心心心心心心心心心心心心的语言
所有查询操作都用它 Select
简单的查询,复杂的查询它都能做
select `字段` as 别名 from 表名 as 别名
concat(a,b)拼接
select concat(a,`字段`) [as] 别名 from 表名 [as] 别名
去重 distinct
select distinct `字段` from result
tips:between and区间
表达式
select 表达式 [as] 别名 from 表名 [as] 别名
模糊查询
like+%,后面任意字符
like+_,后一个字符
连表查询
inner join如果两个表有共同值,可以连表
left join可以把主表(左)全部使用,并且使用右的部分
right join可以把右表全部使用,并且使用左的部分
当前已改装的select
select [distinct]`字段`
from [join on] [join on]
where [like]
分页和排序
order by通过哪个字段排序,怎么排
order by studentname ASC DESC
limit 起始值,页面大小
子查询
select XX from XX1 where A(select A from XX2)
常用函数
MySQL函数大全,MySQL常用函数汇总 (biancheng.net)
ps:忘了就查
聚合函数
count计数 max最大
sum求和 min最小
avg平均
MD5加密
具体的值的md5是一样的(打表法)
MD5( )
事务
要么都成功,要么都失败
ACID 原则(原子性,一致性,隔离性,持久性)
set autocommit =0关闭自动提交
start transaction开始一个事务
update 表 set 字段 where
commit
rollback
set autocommit =1
索引
index是帮助mysql高效获取数据的数据结构,提取句子主干,就可以得到索引本质
索引分类
primary key主键索引且不可重复
unique key唯一索引,避免重复的列出现
key默认普通索引
fulltext全文索引
索引用法
create index 索引名 on 表(`字段`)
数据库备份
方式:
直接copy物理方式
可视化工具手动导出
mysqlump命令使用
(mysqlump -h 主机 -u用户名 -p密码 数据库 表明 > 物理磁盘位置/文件名)
规范数据库设计
收集信息,分析需求
标识实体
标识实体之间的关系
三大范式
第一范式
要求数据库的每一列都是不可再分的原子数据项
第二范式
每张表只描述一件事,消除直接依赖
第三范式
消除间接依赖
可以为了性能,违反范式
JDBC(java操作数据库的规范)
数据库驱动
啊,还没有学java,先留在这里把