DDL:操作数据库、表
1、操作数据库:CRUD
1. C(Create):创建
-
- 创建数据库:默认字符集为utf8
create database 数据库名称;
重复创建会报错,如下图
-
- 创建数据库,判断是否存在:
create database if not exists 数据库名称;
-
- 创建数据库,并指定字符集:
create database 数据库名称 character set 字符集;
-
- 练习:创建db4数据库,判断是否存在,并指定字符集为gbk
create database if not exists db4 character set gbk;
2. R(Retrieve):查询
-
- 查询所有数据库的名称:
show database;
//mysql安装好后默认有4个数据库,按理说应该对应MySQL数据目录C:\ProgramData\MySQL\MySQL Server 5.5\data中4个文件夹,但是data中只有3个文件夹。
-
-
- information_schema:这个数据库是用来描述数据库MySQL里面的信息的(有哪些表有哪些库名字)。这里面存放的并不是真正的表,而是视图,所以information_schema数据库并不存在真正的物理文件。
- mysql:核心数据库,存放的是核心数据,存放了很多表。
- performance_schema:对性能提升做一些操作的数据库,里面也有很多表。
- test:空的测试数据库。一般不用。
-
注意:前3个数据库尽量不要动。
3. U(Update):修改
-
- 修改数据库的字符集
alter database 数据库名称 character set 字符集名称;
4. D(Delete):删除
-
- 删除数据库:
drop database 数据库名称;
重复删除会报错,如下图
-
- 判断数据库存在,存在再删除:
drop database if exists 数据库名称;
5. 使用数据库
-
- 查询当前正在使用的数据库名称:
select database();
-
- 使用数据库:
use 数据库名称;//相当于进入了db1文件夹
2、操作表
1. C(Create):创建
-
- 创建表语法:
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
...
列名n 数据类型n
);
-
- 注意:最后一列,不需要加逗号(,)
- 数据类型:
1. int:整数类型 例如:age int,
2. double:小数类型 例如:score double(5,2),//表示小数最多有5位,小数点后面有2位,最大值为999.99
3. date:日期类型,只包含年月日,格式:yyyy-MM-dd
4. datetime:日期类型,包含年月日时分秒,格式:yyyy-MM-dd HH:mm:ss
5. timestamp:时间戳类型,包含年月日时分秒,格式:yyyy-MM-dd HH:mm:ss。如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间来自动那动赋值。
6. varchar:字符串类型。例如:name varchar(20)//表示姓名最大20个字符。zhangsan是8个字符,张三是2个字符
-
- 练习:创建表
create table student( id int, name varchar(32), age int , score double(4,1), birthday date, insert_time timestamp );
-
- 复制表:
create table 表名 like 被复制的表名;
2. R(Retrieve):查询
-
- 查询某个数据库中所有的表名称
show tables;
-
- 查询表结构
desc 表名;
-
- 查询某个表的字符集:查询某个表的创建语句
show create table 表名;
3. U(Update):修改
-
- 修改表名:
alter table 表名 rename to 新的表名;
-
- 修改表的字符集:
alter table 表名 character set 字符集名称;
-
- 添加一列:
alter table 表名 add 列名 数据类型;
-
- 修改列名称 类型
alter table 表名 change 列名 新列名 新数据类型;
alter table 表名 modify 列名 新数据类型;
-
- 删除列
alter table 表名 drop 列名;
4. D(Delete):删除
-
- 删除表:
drop table 表名;
drop table if exists 表名;