【MySQL】第十三部分 创建数据库、使用数据库、创建表和使用表(DDL)
文章目录
13. 创建数据库、使用数据库、创建表和使用表(DDL)
前提知识点 DDL、DML、DCL分别是什么?
DDL(Data Definition Languages)语句:数据定义语言,是定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create
、drop
、alter
等。
DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录(增删改查)insert
、delete
、update
等。
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。主要的语句关键字包括 commit
、rollback
等。
DCL和 DML 语言的最大区别是 DML 只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。
13.1 标识符命名规则
- 数据库名、表名不得超过30个字符,变量名限制为29个
- 必须只能包含 A–Z, a–z, 0–9, _共63个字符
- 数据库名、表名、字段名等对象名中间不要包含空格
- 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
- 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使用`(着重号)引起来
- 保持字段名和类型的一致性:在命名字段并为其指定数据类型的时候一定要保证一致性,假如数据类型在一个表里是整数,那在另一个表里就别变成字符型了
13.2 MySQL中的数据类型
类型 | 类型举例 |
---|---|
整数类型 | TINYINT、SMALLINT、MEDIUMINT、INT(或INTEGER)、BIGINT |
浮点类型 | FLOAT、DOUBLE |
定点数类型 | DECIMAL |
位类型 | BIT |
日期时间类型 | YEAR、TIME、DATE、DATETIME、TIMESTAMP |
文本字符串类型 | CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT |
枚举类型 | ENUM |
集合类型 | SET |
二进制字符串类型 | BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB |
JSON类型 | JSON对象、JSON数组 |
空间数据类型 | 单值:GEOMETRY、POINT、LINESTRING、POLYGON; 集合:MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTION |
13.3 常用数据类型介绍
数据类型 | 描述 |
---|---|
INT | 从-231到231-1的整型数据。存储大小为 4个字节 |
CHAR(size) | 定长字符数据。若未指定,默认为1个字符,最大长度255 |
VARCHAR(size) | 可变长字符数据,根据字符串实际长度保存,必须指定长度 |
FLOAT(M,D) | 单精度,占用4个字节,M=整数位+小数位,D=小数位。 D<=M<=255,0<=D<=30,默认M+D<=6 |
DOUBLE(M,D) | 双精度,占用8个字节,D<=M<=255,0<=D<=30,默认M+D<=15 |
DECIMAL(M,D) | 高精度小数,占用M+2个字节,D<=M<=65,0<=D<=30,最大取值范围与DOUBLE相同。 |
DATE | 日期型数据,格式’YYYY-MM-DD’ |
BLOB | 二进制形式的长文本数据,最大可达4G |
TEXT | 长文本数据,最大可达4G |
13.4 创建和使用数据库
13.4.1 创建数据库
# 第一种创建方式
CREATE DATABASE 数据库名;
# 第二种创建方式
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
# 第三种创建方式
# 判断数据库是否已经存在,不存在则创建数据库(`推荐`)
CREATE DATABASE IF NOT EXISTS 数据库名;
13.4.2 使用数据库
# 查看当前所有的数据库
SHOW DATABASES;
# 查看当前数据库下已经创建的表
SHOW TABLES;
# 查看当前正在使用的数据库
SELECT DATABASE();
# 查看指定库下所有的表
SHOW TABLES FROM 数据库名;
# 查看数据库的创建信息
SHOW CREATE DATABASE 数据库名;
# 使用/切换数据库
USE 数据库名;
13.4.3 修改数据库
ALTER DATABASE 数据库名 CHARACTER SET 字符集;
13.4.4 删除数据库
DROP DATABASE 数据库名;
# 如果存在该数据库则删除
DROP DATABASE IF EXISTS 数据库名;
13.5 创建表和使用表
13.5.1 创建表
创建表的时候必须指定表名,字段名(列名),数据类型,长度
# 第一种创建方式
CREATE TABLE 表名 (
字段名 数据类型 [约束条件] [默认值],
字段名 数据类型 [约束条件] [默认值]
);
# 第二种创建方式
CREATE TABLE IF NOT EXISTS 表名 (
字段名 数据类型 [约束条件] [默认值],
字段名 数据类型 [约束条件] [默认值]
);
# 第三种创建方式,基于现有的表进行创建,同时会复制该表的数据
CREATE TABLE 表名
AS
SELECT * FROM 表名 (此处SELECT可以写很复杂的过滤条件)
# 可以通过下面指令查询创建后的表的结构
DESC 表名
# 查看表的创建信息
SHOW CREATE TABLE 表名;
举例 :
# 创建一个emp表,emp_id为整型,emp_name为字符串类型,长度为20,salary为double类型
CREATE TABLE IF NOT EXISTS emp (
emp_id INT,
emp_name VARCHAR(20),
salary DOUBLE
);
# 创建一个test_copy表,实现对departments表的复制,包括表的数据内容
CREATE TABLE IF NOT EXISTS test_copy
AS
SELECT * FROM departments;
# 创建一个test_nodata表,实现对departments表的复制,不包括数据内容
CREATE TABLE IF NOT EXISTS test_nodata
AS
SELECT * FROM departments
WHERE department_id IS NULL;
13.5.2 修改表
修改表指的是修改数据库中已经存在的数据表的结构
新增字段(新增列)
# FIRST指定是将新增字段放在第一个位置
# ALTER 字段名 指定新增字段位于某个字段后面
ALTER TABLE 表名 ADD 字段名 数据类型 [FIRST | AFTER 字段名];
例如:
ALTER TABLE test_nodata ADD emp_id int(8) FIRST;
修改列
# 可以修改列的数据类型,长度、默认值和位置
# 对默认值的修改只影响后续对表的修改
ALTER TABLE 表名 MODIFY 字段名 字段类型 [DEFAULT 默认值] [FIRST|AFTER 字段名2];
例如:
ALTER TABLE test_nodata MODIFY salary double(9,2) default 1000 FIRST;
删除列
ALTER TABLE 表名 DROP 列名;
重命名列
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
例如:
ALTER TABLE test_nodata CHANGE salary monthly_salary double(10,3);
重命名表
# 方法一:
RENAME TABLE 旧表名 TO 新表名;
# 方法二:
ALTER TABLE 旧表名 RENAME 新表名;
例如:
RENAME TABLE emp TO new_emp;
ALTER TABLE emp RENAME new_emp;
删除表
在MySQL中,当一张数据表没有与其他任何数据表形成关联关系
时,可以将当前数据表直接删除。
DROP TABLE IF EXISTS 表名;
例如:
DROP TABLE IF EXISTS test;
清空表
删除表中所有的数据,释放表的存储空间,需要注意的是TRUNCATE语句是不能回滚的,而DELETE语句是可以回滚的
TRUNCATE TABLE 表名;
DELETE FROM 表名;
例如:
TRUNCATE TABLE emp;
DELETE FROM emp;
总结
以上就是今天要讲的内容,希望对大家有所帮助!!!