DDL数据定义语言(data definition language):用于定义和管理 SQL 数据库中的所有对象的语言
查询操作
显示所有数据库:
SHOW DATABASES;
模糊查询
例:查询schema
结尾的数据库:
SHOW DATABASES LIKE '%schema';
例:查询for前有两个字符的数据库:
SHOW DATABASES LIKE '__for%';
添加操作
创建数据库:
IF NOT EXISTS
判断是否存在,防止报错。
CREATE DATABASE [IF NOT EXISTS] 数据库名;
创建数据库并指定字符集:
CREATE DATABASE [IF NOT EXISTS] 数据库名 CHARACTER SET utf8 ;
显示创建数据库的语句:
SHOW CREATE DATABASE 数据库名
删除操作
操作不可逆,IF EXISTS
防止报错。
DROP DATABASE [IF EXISTS] 数据库名
修改操作
ALERT DATABASE 数据名
MySQL不支持ALERT
对数据库名修改,Orcale支持。
对表的操作
选择数据库后才能操作数据表:
USE 数据库名;
显示数据表
SHOW TABLES [FROM 数据库名];
添加数据表
规范化是基于函数依赖以及一系列范式所定义的表。常用的范式:
- 一级范式(1NF)
- 二级范式(2NF)
- 三级范式(3NF)
范式介绍:
- 函数依赖:一张表内任意两个字段的值之间是一一对应,一行表示一条记录信息。
- 第一范式:一张表内同类字段不会重复出现,满足第一范式。
- 第二范式:在满足第一范式的基础上,如果每个非主键字段都函数依赖于主键,则满足第二范式。也就是说每条记录都有唯一的标识,即实体唯一性。
- 第三范式:在满足第二范式的基础上,不存在非主键字段函数依赖于其他的非主键字段。一张表中只能有一个主键,不需要其他字段标识这条记录。
设计数据表:
- 保存实体信息
- 信息不重复
- 有关系时,将主表的主键作为从表(其他表)的外键
- 从表除了主表中的主键列不会出现主表的其他列
创建数据表命令:
CREATE TABLE [IF NOT EXISTS] 表名(列名 列类型,列名 列类型...);
举个栗子🌰:
例:创建表并且设置好引擎和字符集
还可以添加主键、外键、唯一性等约束。
显示创建表的语句:
SHOW CREATE TABLE 表名
显示表结构:
DESC 表名
删除数据表
删除数据表操作不可逆,谨慎删除。
DROP TABLE [IF EXISTS] 表名;
修改数据表(表结构)
修改表需要保证数据完整性,对表结构的修改不能影响已存在的数据。
ALTER TABLE 表名 修改操作;
添加列(默认添加到最后一列):
ALTER TABLE 表名 ADD 列名 列类型;
修改列类型:
ALTER TABLE 表名 MODIFY 列名 列类型;
修改列名:
ALTER TABLE 表名 CHANGE 旧列名 新列名 新类型;
删除列:
ALTER TABLE 表名 DROP 列名;