1. 定义:DDL:数据定义语言:数据库和表的管理,创建、删除:create、drop、show
2. 用法:
-
列举数据库:SHOW DATABASES
-
功能:用于列举当前数据库中有哪些数据库
-
理解:类似于在电脑上查看有哪些文件
-
语法
-
SHOW {DATABASES | SCHEMAS} ; -- 中括号代表可选的,竖线都代表或者
-
示例
-
-- 显示当前所有的数据库 SHOW DATABASES ;
-
-
创建数据库:CREATE DATABASE
-
功能:用于在MySQL中创建一个新的数据库
-
理解:类似于在电脑上创建一个目录
-
语法
-
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [db_option];
-
示例
-
-- 创建一个数据库,名字叫做db_sql50 CREATE DATABASE db_sql50;
-
补充
-
-- 为了避免数据库已经存在了,导致程序报错,一般会加上判断 CREATE DATABASE IF NOT EXISTS db_sql50;
-
-
切换数据库:USE
-
功能:实现在多个数据库之间的切换
-
理解:类似于在电脑上切换不同的目录
-
语法
-
USE db_name ;
-
示例
-
-- 切换到 db_sql50 数据库 USE db_sql50 ; -- 切换到 mysql 数据库 USE mysql ;
-
-
删除数据库:DROP DATABASE
-
功能:实现数据库的删除
-
理解:类似于在电脑上删除一个目录
-
语法
-
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name ;
-
示例
-
-- 删除数据库 db_sql50 DROP DATABASE db_sql50; -- 列举所有数据库 SHOW DATABASES ; -- 为了避免报错,可以先判断再删除 DROP DATABASE IF EXISTS db_sql50;
-
-
创建数据表:CREATE TABLE
-
功能:用于在一个数据库中创建一个新的数据表
-
理解1:类似于在excel中创建一个新的sheet表格
-
语法:
-
create table [ if not exists ] [数据库名称.]表的名称 ( 列名1 类型 [约束] [列的注释:comment], 列名2 类型 [约束] [列的注释:comment], 列名3 类型 [约束] [列的注释:comment], …… 列名N 类型 [约束] [列的注释:comment] ) [表的配置:charset] [表的注释:comment] ;
-
理解2:创建表的语法看似复杂,当理解其中的结构与作用之后则会变的简洁明了,其中数据表中的列可以对比excel表格中的列。
-
约束:约束本质就是一种限制,通过限制这一列的值的内容来保证数据的安全性和准确性,常用约束有六种:
-
非空:not null:限制这一列的值不能为null
-
默认:default:给定这一列默认值,如果用户没有给这一列赋值,就使用默认值
-
主键:primary key:1、限制这一列增加了非空和唯一,2、基于这一列构建索引
-
自增:auto_increment:必须用于主键,必须为int类型
-
唯一:unique:限制这一列的值不能重复
-
外键:用于多表设计场景中,保证规范性
-
-
MySQL常用数据类型:
-
字符串:存储特殊字符、中文、字母等:拼接、裁剪、转换大小写,如:varchar(最大长度)、char()、text
-
数值:存储所有数字,数字,不用加引号:数值运算,如:整数-tinyint、int、bigint,浮点数:double、decimal
-
日期时间:存储日期、时间等数据:时间取值、转换、计算,如:date、datetime、timestamp
-
-
示例:
-
# Student 学生表 CREATE TABLE Student ( s_id VARCHAR(20), s_name VARCHAR(20) NOT NULL, s_birth VARCHAR(20) NOT NULL, s_sex VARCHAR(10) NOT NULL, PRIMARY KEY(s_id) ); # Course 课程表 CREATE TABLE Course ( c_id VARCHAR(20), c_name VARCHAR(20) NOT NULL, t_id VARCHAR(20) NOT NULL, PRIMARY KEY(c_id) ); # Teacher 教师表 CREATE TABLE Teacher ( t_id VARCHAR(20), t_name VARCHAR(20) NOT NULL DEFAULT '', PRIMARY KEY(t_id) ); # Score 分数表 CREATE TABLE Score ( s_id VARCHAR(20), c_id VARCHAR(20), s_score INT(3), PRIMARY KEY(s_id, c_id) # 注意这里是联合主键 );
-
-
列举数据表:SHOW TABLES
-
功能:列举当前数据库或者某个数据库中有哪些表
-
理解:类似于查看电脑中某个目录下有哪些文件
-
语法:
-
SHOW TABLES [ IN db_name] ;
-
示例 :
-
-- 列举mysql这个数据库中有哪些数据表 SHOW TABLES IN mysql;
-
-
描述数据表:DESC
- 功能:用于查看表的结构信息,有哪些字段,哪些约束等等
- 理解:类似于查看excel单元格的格式,当我们想要向数据表中插入数据时,可以用此方法查看约束、数据类型等
- 语法:
-
DESC [db_name.]tb_name ;
- 示例:
-
DESC Students; DESC db_sql50.Students;
-
删除数据表:DROP TABLE
-
功能:删除数据库中的数据表
-
语法:
-
DROP TABLE [IF EXISTS] [db_name.]tbname ;
- 示例:
-
-- 删除Student表 DROP TABLE db_sql50.Student; -- 删除Teacher表 DROP TABLE IF EXISTS db_sql50.Teacher; -- 列举表 SHOW TABLES IN db_sql50;
-
-
清空数据表:TRUNCATE
- 功能:用于清空整张表的数据
-
问题:为什么TRUNCATE属于DDL?
-
本质:清空的原理是把表的删了重新建
-
注意:清空的时候如果有自增,自增重头开始
-
-
语法:
-
TRUNCATE [db_name.]tbname
-
示例:
-
-- 查询表数据 SELECT * FROM db_sql50.Score; -- 清空表数据 TRUNCATE db_sql50.Score;
-
修改表结构:ALTER TABLE
-
功能:用于修改表的结构,字段、类型、约束等
-
语法 :
-
-- 添加 ALTER TABLE 表名 ADD 列名 类型(长度) [约束]; -- 修改 ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度) 约束; -- 删除 ALTER TABLE 表名 DROP 列名;
-
示例:
-
-- 给 student 增加一列 stu_weight 体重,单位KG ALTER TABLE db_sql50.Student ADD s_weight double not null; -- 给 student 的性别列修改为tinyint类型 ALTER TABLE db_sql50.Student CHANGE s_sex s_sex tinyint(4); -- 删除 student 的stu_weight 列 ALTER TABLE db_sql50.Student DROP s_weight; -- 查看结构 DESC db_sql50.Student;
-