Mysql基础(12)DDL语言

本文详细介绍了数据库管理中的数据定义语言(DDL)和数据操纵语言(DML)的区别,包括如何使用DDL进行数据库和表的创建、修改、删除操作,以及DML中的数据插入、更新和删除。重点讨论了创建数据库、修改数据库名称和字符集、删除数据库、创建和修改表结构、以及表的复制等关键操作,并提供了具体的SQL语句示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据定义语言实现对数据库和数据表的管理,此处管理指宏观上管理,非数据的管理,可分为对库的管理和对表的管理,主要包括创建(create,区分insert)、修改(alter,区分update)、删除(drop,区分delete)。

注意区分DDL语言和DML语言,DDL是宏观定义表结构,DML是微观操作数据。

数据库管理

创建数据库

创建数据库只创建一个数据库的结构,其内部无任何业务数据,因此创建语句只需提供数据库名即可。基本语法

create database 数据库名

由于mysql不允许创建已存在的数据库,否则会报错,因此可提高创建数据库语句的鲁棒性

create database if not exists 数据库名

tips–mysql会在C:\ProgramData\MySQL\MySQL Server 5.7\Data路径下查看所有数据库。

修改数据库

对数据库的修改包括修改数据库名称、修改数据库字符集。

  • 修改数据库名称有两种方式

    1. 使用rename database 旧数据库名 to 新数据库名.
    2. 直接在mysql的C:\ProgramData\MySQL\MySQL Server 5.7\Data路径下修改数据库名称。
  • 在创建数据库时,mysql会给定一个默认字符集。创建完成之后,也可使用命令手动修改数据库的字符集

    • alter database 数据库名 character set 字符集

一般情况下,数据库创建完成之后,不会对其进行修改。

删除数据库

基本语法

drop database 数据库名

当数据库不存在时,使用以上语句删除会报错,可使用以下鲁棒方式,避免数据库向程序报错

drop database if exists 数据库名

表管理

创建表

创建新表需要向mysql引擎提供表名、列名、列的规则,因此其基本语法如下

CREATE TABLE [if not exists] 表名 (
	列名 列数据的数据类型([数据长度])  [约束条件],
	列名 列数据的数据类型([数据长度])  [约束条件],
    列名 列数据的数据类型([数据长度])  [约束条件],
    ...
    列名 列数据的数据类型([数据长度])  [约束条件]   //最后一列 没有逗号
);

实例 创建book表

CREATE TABLE book(
	id INT,
	bName VARCHAR(20),
	price DOUBLE,
	authorId INT,
	oublishDate DATETIME
);

修改表

修改表主要使用alter关键字,包括修改列名、修改列的类型或约束、新增列、删除列、修改表名。

修改表操作需要提供表信息,因此修改表的基本通用语句为

alter table 表名  add|modify|drop|change|rename  [column]  [列类型或约束]
  • 修改列名

    由于该语句中需要有新列的类型,因此当新旧列名一致时,该命令演变为修改列类型。

    # 基本语法
    ALTER TABLE book CHANGE [COLUMN] 旧列名 新列名  新列类型; 
    
    # 修改oublishDate为pubDate,不改类型
    ALTER TABLE book CHANGE COLUMN oublishDate pubDate DATETIME;
    #只修改类型 新旧列名一致
    ALTER TABLE book CHANGE COLUMN pubDate pubDate TIMESTAMP;
    
  • 修改列类型或约束

    # 基本语法
    ALTER TABLE 表名 MODIFY COLUMN 列名 类型;
    # 将pubDate的数据类型修改为datetime类型
    ALTER TABLE book MODIFY COLUMN pubDate DATETIME;
    
  • 新增列

    # 基本语法
    ALTER TABLE 表名 ADD COLUMN 列名 类型;
    #新增annual列
    ALTER TABLE book ADD COLUMN annual DOUBLE;
    
  • 删除列

    #基本语法
    ALTER TABLE 表名 DROP COLUMN 列名;
    #删除annual列
    ALTER TABLE book DROP COLUMN annual;
    
  • 修改表名

    #基本语法
    ALTER TABLE 旧表名 RENAME TO 新表名;
    #实例
    ALTER TABLE book RENAME TO book_re;
    

删除表

基本语法,if判断避免在程序中出错

drop table if exists 表名

复制表

虽然是复制表,但仍然是为了创建一个新表,因此使用create关键字。根据复制内容的不同,复制表可分为以下情况

  • 只复制表结构

    create table 复制表名  like  被复制表名;
    #实例
    CREATE TABLE copy1 LIKE book;
    
  • 复制表结构和全部数据

    这实际是后面子查询。

    create table 复制目标表名 select * from 被复制表名;
    #实例
    CREATE TABLE copy2 SELECT * FROM  book;
    
  • 复制部分表结构和部分数据

    通过子查询实现

    #只复制部分列,不包含数据
    CREATE TABLE copy3 SELECT id,bName FROM  book where 1=0;
    #复制部分列及对应全部数据
    CREATE TABLE copy4 SELECT id,bName FROM  book;
    #复制全部列的部分数据
    CREATE TABLE copy5 SELECT *  FROM  book WHERE id = 2;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值