1 创建数据库
create database --name create database [if not exists] --name // 判断是否存在2 删除数据库
drop database [if exisits] --name3 使用数据库
use `--name` // `使用 表名或字段名是特殊字符4 查看数据库
show database show table数值
tinyint 1个字节smallint 2个字节mediumint 3个字节int 4个字节big 8个字节float 4double 8decimal 字符串类型的浮点数字符串
char 固定大小 0~255varchar 可变字符串 0~65535tinytext 微型文本 2^8 - 1text 文本串 2^16 - 1时间日期
data YYYY-MM-DD,日期time HH:MM:SS 时间datatime YYYY-MM-DD HH:MM:SS 常用时间格式timestamp 时间戳 1970.1.1到现在的毫秒数yearnull
没有值,未知不要使用null运算Unsigned:
无符号的整数不能声明为负数zerofill
0填充不足的位数使用0填充自增
自动在上一条记录的基础上+1(默认)通常用来设计唯一的主键, 必须是整数可以自己设置自增参数,起始值和步长非空
如果不赋值就会报错默认
设置默认值sex, 比如默认值 男, 如果不改变就用默认值填充。默认使用InnoDB
MyISAMInnoDB事务支持不支持支持数据行锁定不支持支持外键约束不支持支持全文索引支持不支持?表空间大小较小较大,约为MyISAM的两倍常规使用操作
MyISAM 节约空间, 速度快InnoDB 安全性高,事务的处理,多表多用户操作在物理空间存在位置
所有数据库文件都在data目录下 文件存储 MySQL引擎在物理文件上的区别
InnoDB 在数据库中只有一个*.frm文件,以及上级目录下的ibdata1文件MyISAM对应文件 *.frm 表结构定义文件*.MYD 数据文件 data*.MYI 索引文件 index设置数据料的字符集编码
CHARSET=utf8不设置,数据库默认字符集,不支持中文 Latin1 my.ini中可改变默认
修改
ALTER TABLE {} rename as {} ALTER TABLE {} MODIFY {行} varchar(20) ALTER TABLE {} CHANGE {行} {new} INT(1)删除
DROP TABLE [IF EXISTS] tablename -- tablename 如果存在, 删除注意点
` ` 字段名 包裹注释 -- /**/sql 大小写不敏感物理外键不建议使用。避免数据库过多造成困扰
最佳实践 数据库就是单纯的表, 只存数据 多张表外键,程序实现DML语言
insert insert into 表名 [字段1,字段2,...] values (value1, value2,value3,...) updatedrop添加
修改
删除
delete from name where {}truncate 清空某一张表
truncate 和delete 区别
相同点:都能删除数据,都不会删除表结构不同: + truncate 重新设置自增列计数器归零 + truncate 不会影响事务 + delete 重启数据库 innoDB 自增列会重1开始 (在内存中) myisam 不会 (在文件中)1 DQL
所有的查询操作都用select简单复杂都能用数据库最核心语言,最重要语句使用频率最高2 查询指定字段 pass
3 表达式
pass
4 连表查询 Join left join right join inner join
on 先筛选后关联, where 先关联后筛选
操作描述left join会从左表中返回值,即使右表中没有right join会从右表中返回值,即使左表中没有inner join如果表中至少有一个匹配,就返回行 select s.studentNo,studentName,subJectName,StudentResult from student s right join result r on r.studentNo = s.studentNo inner join subject sub on r.studentNo = sub.studentNo3 分页 limit 和排序order by ASC 升序 DSC 降序
分页: 对应瀑布流 缓解数据库压力
limit m,n --m起始位置, 页面大小要么都成功, 要么都失败
原则 ACID A 原子性
要么都成功, 要么都失败C 一致性
事务前后的数据完整性要保持一致I 隔离性
事务之间不干扰脏读 一个事务读取了另外一个事务未提交的数据虚读 一个事务内读到别的事务插入的数据,导致前后读取不一致不可重复读 一个事务读取表中某一行数据,多次结果不同 (不一定错误,某些场合不适合)D 持久性 事务提交
是否提交 提交:持久化到数据库, 未提交:断电后不影响Mysql 默认开启事务
set autocommit = 0 -- 关闭 set autocommit = 1 -- 开启 --手动处理事务 start transaction --标记事务开始 insert into .... insert into .... --提交 commit -- 回滚 事务内有一句执行不成功 rollback --事务结束 set autocommit = 1 -- 开启分类
主键索引 唯一的标识,主键不可重复,只能有一个列作为主键 唯一索引 避免重复的列出现,唯一索引字段值不可以重复,多个列都可以标识为唯一索引 常规索引全文索引索引原则
不是越多越好不要对变动的数据加索引小数据量不加一般加在常用来查询的数据上保证每一列不可再分
满足第一范式,每张表只描述一件事
满足第二范式 每列数据和主键直接相关。