MySQL基础学习之DDL(一)

发布于:2025-07-03 ⋅ 阅读:(19) ⋅ 点赞:(0)

一、SQL语句

1.数据库、数据表、数据的关系介绍

1)数据库

  • 用于存储和管理数据的仓库
  • 一个库中可以包含多个数据表

2)数据表

  • 数据库最重要的组成部分之一
  • 它由纵向的列和横向的行组成(类似excel表格)
  • 可以指定列名、数据类型、约束等
  • 一个表中可以存储多条数据

3) 数据

  • 想要永久化存储的数据

4) 总结

学习SQL之前,可以稍微简单了解下,为什么要用数据库,为什么不可能用Excel或者文本来存储。数据库的特点:高效的数据组织与管理、‌保障数据安全与一致性、支持大规模应用场景。所以在一些特定场景下,数据库肯定是优于Excel的。

2.SQL介绍

1)什么是SQL

  • Structured Query Language:结构化查询语言
  • 定义了操作所有关系型数据库的规则。
  • SQL 语句不区分大小写,关键字建议使用大写。
  • 数据库的注释:
    • 单行注释:-- 注释内容 #注释内容(mysql特有)
    • 多行注释:/* 注释内容 */

2)SQL分类

  1. DDL(Data Definition Language)数据定义语言
    用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
  2. DML(Data Manipulation Language)数据操作语言
    用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
  3. DQL(Data Query Language)数据查询语言
    用来查询数据库中表的记录(数据)。关键字:select, where 等
  4. DCL(Data Control Language)数据控制语言(了解)
    用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

3)总结

在学习的过程中,首先要清楚DDL是操作库表的,别人说DDL这个名词时一定要有印象,这是操作库和表的。DML,DQL不用特意去记,操作数据的,简单说就是数据的增、删、改、查。

3.DDL(数据定义语言)-操作数据库

1)C(Create):创建

  • 创建数据库
CREATE DATABASE;
  • 创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS 数据库名称;
  • 创建数据库、并指定字符集
CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称;
  • 创建数据库、并指定默认字符集
--使用DEFAULT CHARSET设置字符集后,数据库中所有新创建的表、字段都会继承这个设置
CREATE DATABASE 数据库名称 DEFAULT CHARACTER SET 字符集名称;
  • 示例
create database if not exists demo DEFAULT CHARACTER SET utf8mb4;

一般创建库的标准写法就按照上述语句来,加上if not exists可以防止库存在而导致sql报错。

2)U(Update):修改

-- 标准语法
ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;

如果想实现数据库重命名相对要麻烦点,“RENAME DATABASE old_database TO new_database ;”,这个语法不是对所有版本mysql适用。最常用的就是新建库,表以及数据迁移。

3)D(Delete):删除

  • 删除数据库
-- 语法
DROP DATABASE 数据库名称;
  • 删除数据库(判断,如果存在则删除)
-- 标准语法
DROP DATABASE IF EXISTS 数据库名称;
  • 示例
-- 标准语法
drop database  if exists demo;

不加if exists,如果要删除表不存在,则会报错database doesn’t exist。在做删除操作的时候一般都要慎重!

4)R(Retrieve):查询

  • 查询所有数据库
SHOW DATABASES;
  • 查询某个数据库的创建语言
SHOW CREATE DATABASE 数据库名称;
# 查看mysql数据库的创建格式
SHOW CREATE DATABASE mysql;

5)使用数据库

  • 查询当前正在使用的数据库名称
-- 查询当前正在使用的数据库
SELECT DATABASE();
  • 使用数据库
-- 标准语法
USE 数据库名称;
-- 使用demo数据库
USE demo;

4.DDL-操作数据表

1)R(Retrieve):查询

  • 查询数据库中所有的数据表
-- 使用demo数据库
USE demo;
--查询库中所有的表
SHOW TABLES;
  • 查询表结构
-- 标准语法
DESC 表名;
-- 查询user表结构
DESC user
  • 查询表字符集
-- 标准语法
SHOW TABLE STATUS FROM 库名 LIKE '表名';
-- 查看demo数据库中yser表字符集
SHOW TABLE STATUS FROM demo LIKE 'user'

2)C(Create):创建

  • 创建表
-- 标准语法
CREATE TABLE 表名(
	列名1 数据类型1,
	列名2 数据类型2...
	列名n 数据类型n
);
--注意:最后一列不需要加逗号
  • 数据类型
1. int:整数类型
    * age int
2. double:小数类型
    * score double(5,2)
    * price double
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个字符

数据类型后面会具体解释。

  • 创建表
-- 使用db3数据库
USE demo;

-- 创建一个user表
CREATE TABLE user(
    IDINT,                -- id
    NAME VARCHAR(10),    -- 名称
    AGE VARCHAR(4),       -- 年龄
    BIRTHDATE DATE    -- 出生日期
);
  • 复制表
-- 标准语法
CREATE TABLE 表名 LIKE 被复制的表名;

-- 复制product表到product2表
CREATE TABLE user2 LIKE user;

如果是复制表同时也复制表中数据

-- 标准语法
CREATE TABLE 表名 AS SELECT * FROM 被复制的表名;

-- 复制product表到product2表
CREATE TABLE user2 AS SELECT * FROM user;

3)U(Update):修改

  • 修改表名
-- 标准语法
-- 标准语法
ALTER TABLE 表名 RENAME TO 新的表名;

-- 修改product2表名为product3
ALTER TABLE product2 RENAME TO product3;
  • 修改表的字符集
-- 标准语法
ALTER TABLE 表名 CHARACTER SET 字符集名称;

-- 查看db3数据库中product3数据表字符集
SHOW TABLE STATUS FROM db3 LIKE 'product3';
-- 修改product3数据表字符集为gbk
ALTER TABLE product3 CHARACTER SET gbk;
-- 查看db3数据库中product3数据表字符集
SHOW TABLE STATUS FROM db3 LIKE 'product3';
  • 添加一列
-- 标准语法
-- 标准语法
ALTER TABLE 表名 ADD 列名 数据类型;

-- 给product3表添加一列color
ALTER TABLE product3 ADD color VARCHAR(10);
  • 修改表字段类型
-- 修改数据类型 标准语法
ALTER TABLE 表名 MODIFY 列名 新数据类型;

-- 将color数据类型修改为int
ALTER TABLE product3 MODIFY color INT;
-- 查看product3表详细信息
DESC product3;
  • 修改表字段名称
-- 修改列名和数据类型 标准语法
 ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;

-- 将color修改为address,数据类型为varchar
 ALTER TABLE product3 CHANGE color address VARCHAR(30);
 -- 查看product3表详细信息
 DESC product3;

  • 删除列
-- 标准语法
-- 标准语法
ALTER TABLE 表名 DROP 列名;
-- 删除address列
ALTER TABLE product3 DROP address;

4)D(Delete):删除

  • 删除数据表
-- 标准语法
DROP TABLE 表名;

-- 删除product3表
DROP TABLE product3;

-- 删除不存在的表,会报错
-- 错误代码:1051  Unknown table 'product3'
DROP TABLE product3;

  • 删除数据表(判断,如果存在则删除)
-- 标准语法
DROP TABLE IF EXISTS 表名;

-- 删除product3表,如果存在则删除
DROP TABLE IF EXISTS product3;

5.DDL语法总结

1)增加操作

  • 新建数据库
--标准写法
create database if not exists demo DEFAULT CHARACTER SET utf8mb4;

-新建表

-- 创建一个user表
CREATE TABLE IF NOT EXISTS user(
    IDINT,                -- id
    NAME VARCHAR(10),    -- 名称
    AGE VARCHAR(4),       -- 年龄
    BIRTHDATE DATE    -- 出生日期
);

增加操作关键字——create,数据库database,表 table。

2)删除操作

  • 操作库
-- 语法
drop database  if exists 库名;
  • 操作表
-- 标准语法
DROP TABLE IF EXISTS 表名;

删除操作记得三个关键字:drop,database,table,进行删除啊操作的时候一般要慎重。

3)修改操作

  • 操作库
-- 标准语法
ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;

对数据库的改名要稍微麻烦点,不做额外解释。

  • 操作表
-- 修改表名
ALTER TABLE product2 RENAME TO product3;
-- 修改表字符集
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8;
-- 添加、修改、删除表字段
--添加字段
ALTER TABLE 表名 ADD COLUMN 字段名 数据类型 [约束条件];
--CHANGE 改变表字段名
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
--MODIFY 不改表字段名
ALTER TABLE 表名 MODIFY 字段名 新数据类型;
--删除字段
ALTER TABLE 表名 DROP COLUMN 字段名;

4)查询操作

  • 操作库
  • 查询所有数据库
SHOW DATABASES;
-- 查询当前正在使用的数据库
SELECT DATABASE();
  • 操作表
  • 查询数据库中所有的数据表
--查询库中所有的表
SHOW TABLES;
  • 查询表结构
-- 标准语法
DESC 表名;