【MySQL】第十三部分 创建数据库、使用数据库、创建表和使用表(DDL)

本文介绍了MySQL中的DDL语句,包括创建、使用、修改和删除数据库,以及创建和使用表。详细讲解了数据类型,如INT、VARCHAR、DATE等,并提供了创建表的示例。此外,还涵盖了修改表结构如添加、修改和删除列的方法。
摘要由CSDN通过智能技术生成

【MySQL】第十三部分 创建数据库、使用数据库、创建表和使用表(DDL)



13. 创建数据库、使用数据库、创建表和使用表(DDL)

前提知识点 DDL、DML、DCL分别是什么?

DDL(Data Definition Languages)语句:数据定义语言,是定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 createdropalter 等。

DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录(增删改查insertdeleteupdate等。

DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。主要的语句关键字包括 commitrollback 等。

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;

总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值