◆ 数据库语言类型 ◆
语句简称 | 语句类型 | 代表操作字 |
---|---|---|
DQL语句 | 数据查询语言 | select |
DML语句 | 数据操作语言 | insert delete update |
DDL 语句 | 数据定义语言 | create drop alter |
TCL 语句 | 事务控制语言 | commit rollback |
◆ MySQL支持的常见数据类型 ◆
数值类型
整形: TinyInt、SmallInt、MediumInt、Int和BigInt。
浮点型: Float、Double、Decimal。
字符串类型
定长字符串: Char,在圆括号内用一个大小修饰符(0~2^8)来定义。
变长字符串: VarChar,在圆括号用一个大小修饰符(0~2^16)来定义。
VarChar类型可以根据实际内容动态改变存储的长度,因此在不能确定字段需要多少字符串时使用VarChar可以大大地节约磁盘空间、提高存储效率。
日期类型
DateTime: YYYY-MM-DD HH:MM:SS
◆ 数据库的基本操作 ◆
创建数据库 create database dbname;
使用数据库 use dbname;
删除数据库 drop database dbname;
说明:其中dbname表示所建数据库名。
◆ 数据表的基本操作 ◆
创建数据表 create table tbname(name type, name type);
查看数据表 show create table tbname;
展示数据表 describe tbname;
删除数据表 drop table tbname;
说明:其中tbname表示所建表名,name为字段,type为字段类型。
◆ 表中数据的基本操作 ◆
插入数据 insert into tbname (name1,name2,name3) values (value1, value2,value3);
更新数据 update tbname set name1 = value1 [where name2 = value2];
删除数据 delete from tbname [where name1 = value1];
查询数据 selete name1,name2,name3 from tbname [where name4 = value4];
说明:其中tbname表示所建表名,name为字段,value为对应的值。
◆ 数据的完整性 ◆
主键约束: primary key,不可重复,不可为空。
唯一约束: unique,不可重复。
自动增长: auto_increment,从1开始。
唯一索引: unique index。
非空约束: not null。
默认值约束: default 默认值。
外键约束: alter table tbname add foreign key(外键字段名) references 主表(主键字段名)。
删除外键约束: alter table tbname drop foreign key 外键名。
◆ 表与表的关系 ◆
一对一,一对多和多对一,多对多。
◆ 查询 ◆
合并查询: union,自动过滤重复数据。
合并查询: union all,不过滤重复数据。
内连接查询: select name from tbname1 inner join tbname2 on tb1.name1 = tb2.name2 [where 条件];
左外连接: select name from tbname1 left join tbname2 on tb1.name1 = tb2.name2 [where 条件];
右外连接: select name from tbname1 right join tbname2 on tb1.name1 = tb2.name2 [where 条件];
◆ 视图 ◆
视图是一种虚拟的表,其内容由查询定义,和真实的表类似,视图包括一系列带有名称的列和行数据,但是,视图在数据库中并不以存储数据值的形式存在,它的数据来自定义视图查询时所引用的表,并且在引用视图时动态生成。
- 简化用户操作。视图机制使用户把注意力集中在所关心的数据上。用户只是对一个虚表进行简单的查询操作,而无需了解表与表之间的操作关系。
- 使用户能以多种角度看待同一数据。视图机制能使不同的用户以不同的方式看待同一数据。
- 为重构数据库提供了一定程度的逻辑独立性。
- 对机密数据提供了保护。隐藏表的细节。
创建视图 create view viewname(name1, name2) as select name1, name2 from tbname;
展示视图 describe viewame;
修改视图 alter view viewname as select name1, name2 from viewname;
删除视图 drop view if exists viewname;
说明:其中viewname表示所建视图名。
◆ 事务 ◆
事务的四个特性:
原子性: 事务作为一个整体被执行,是最小单元,不可再分;
一致性: 事务应保持数据库的状态,数据库中的数据都满足完整性约束,对数据库的操作要么都执行成功,要么都执行失败
隔离性: 当多个事务兵法执行时,一个事务的执行不应影响其他事务的执行;
持久性: 事务完成之后,该书屋对数据库的修改应永久的保存在数据库中;
事务的隔离界别:
读未提交——read uncommited:
A未提交,B可看到A的内容,脏读(其他事务未提交的结果);
读已提交——read commited:
大多数默认级别,A已提交,B可看到A的内容,重复读(内容不一致,做了修改数据的操作),幻读(条数不一致,做了插入或删除操作);
可重复读——repeatable read:
MySQL默认级别,事务B只能读到开启事务的点的数据,但仍避免不了幻读;
可串行化——serializable:
事务A只有commit,事务B才能操作,强制事务排序实质不可能相互冲突,实际上是加共享锁,会导致大量的超时和锁竞争。
隔离级别 | 脏读 | 重复读 | 幻读 |
---|---|---|---|
串行化 | |||
可重复读 | √ | ||
读已提交 | √ | √ | |
读未提交 | √ | √ | √ |
事务的使用方法:
- 在使用事务之前首先要关闭自动提交:
set autocommit = 0; - 然后开启事务,SQL语句如下:
start transaction; - 事务开启后就可以执行DML语句,在执行完成后需要提交事务,TCL语句为:commit;在MySQL中SQL语句是默认提交的,但在事务中的操作语句都需要使用commit语句手动提交,提交完的事务才会生效。如果不想提交事务,执行的TCL语句为:rollback;
◆ 范式 ◆
第一范式: 有主键、每一个字段都是原子性的不能再分的;
第二范式: 要求数据库中所有非主键字段完全依赖主键,不能产生部分依赖;
第三范式: 非主键列必须直接依赖于主键,不能存在传递依赖。
◆ MySQL常用存储引擎 ◆
MyISAM存储引擎:
MyISAM是MySQL数据库最常用的存储引擎,但却不是默认的。可转化为压缩只读表来节省空间。适合大量的数据读而少量数据更新。
InnoDB存储引擎:
InnoDB是MySQL数据库默认的存储引擎。支持事务、外键及引用的完整性,包括级联更新和级联删除。适合较多数据更新操作。
MRMOTY存储引擎:
MEMORY以前被称为HEAP。数据存储在内存中,且行的长度固定,使得MEMORY存储引擎非常快。字段属性不能包含Text和Blob字段。适合存储非永久性的数据。