1. 创建数据库及表的流程
1.1 创建数据库
1.1.1 语法
sqlCREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
说明:
- 大写的表示关键字;
\]是可选项;
- COLLATE:指定数据库字符集的校验规则;
1.1.2 创建数据库案例
sql
create database example;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ci。

1.1.3 字符集和校验规则
查看系统默认字符集以及校验规则
sql
show variable like 'character_set_database';
show variable like 'collation_database';

查看数据库支持的字符集
sql
show charset;
字符集主要是控制用什么语言,例如utf8就可以使用中文。
查看数据库支持的字符集校验规则
sql
show collation;
校验规则对数据库的影响
- 不区分大小写;
utf8_general_ci
- 区分大小写;
utf8_bin
1.2 使用数据库
1.2.1 查看数据库
sql
show databases;
1.2.2 显示创建语句
sql
show create database 数据库名;

上图中,数据库名example
的反引号,是为了防止使用的数据库名是关键字。/*!40100 DEFAULT CHARACTER SET utf8 */
这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。
1.2.3 操作数据库example
sql
use example;

1.2.4 修改数据库
语法:
sqlALTER DATABASE db_name [alter_spacification [,alter_spacification] ...] alter specification: [DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name
说明:
- 对数据库的修改主要指是修改数据库的字符集、校验规则
1.2.5 数据库删除
sql
DROP DATABASE [IF EXISTS] db_name;
执行删除之后的结果:
- 数据库内部看不到对应的数据库;
- 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删;
1.3 创建数据库表
1.3.1 语法
sqlCREATE TABLE table_name( field1 datatype, field2 datatyp2, field3 datatyp3 )character set 字符集 collate 校验规则 engine 存储引擎;
说明:
- field表示列名;
- datatype表示列的类型;
- character set字符集,如果没有指定字符集,则以所在数据库的字符集为准;
- collate校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准;
1.3.2 创建表案例
sql
create table student(
id int,
name varchar(32),
gender varchar(2)
);

说明:不同的存储引擎,创建表的文件不一样;
1.3.3 查看表结构
sql
desc 表名;

上图中,Field
是字段名 、Type
是字段类型 、Null
是否允许为空、Key
索引类型、Default
默认值和Extra
扩充。
1.4 表中插入数据
sql
insert into student (id,name,gender) values (1,'刘备','男');
insert into student (id,name,gender) values (2,'关羽','男');
insert into student (id,name,gender) values (3,'张飞','男');

1.5 修改表
在项目实际开发中,经常修改某个表的结构,例如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等,我们有时还需要添加字段、删除字段等,这时就需要修改表:
sql
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename MODIFY (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename DROP(column);

插入新字段后,对原来数据没有影响。
修改name,将其长度改为60
sql
alter table student modify name varchar(60);

删除asset列
sql
alter table student drop asset;

修改表的名称
sql
alter table tablename_old rename to tablename_new;--to可以省略掉
修改列的名称
sql
alter table student change name xingming varchar(60);--新字段选哟完整定义

1.6 查询表中的数据
sql
select * from student;

1.7 删除表
语法:
sqlDROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name]...
实例:
sqldrop table t1;
2. 存储引擎
存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL的核心就是插件式存储引擎,支持多种存储引擎。
2.1 查看存储引擎
sql
show engines;

2.2 存储引擎对比
以下是对InnoDB、MyISAM和Memory三种存储引擎在事务支持、存储结构、锁等方面的纤细对比:
