SQL语句中的DDL类型的数据库定义语言操作

目录
  • SQL语句之DDL类型的数据库定义语言
  • 1.DDL类型的SQL语句基本概述
  • 2.DDL类型的SQL语句之数据库层面的操作
    • 2.1.创建一个数据库
    • 2.2.查看MySQL中有哪些数据库
    • 2.3.进入某个数据库
    • 2.4.查看当前处于哪个数据库中
  • 3.DDL类型的SQL语句之数据库表层面的操作
    • 3.1.创建一张数据表
    • 3.2.查看当前数据库中所有的数据表
    • 3.3.查询某张表的表结构
    • 3.4.查询某张表的建表语句
    • 3.5.在现有表中添加新的字段
    • 3.6.修改现有表中的字段数据类型和字段名称
    • 3.7.删除现有表中已存在的字段
    • 3.8.修改表的名字
    • 3.9.删除数据表
  • 4.DDL类型的SQL语句汇总

SQL语句之DDL类型的数据库定义语言

1.DDL类型的SQL语句基本概述

DDL类型的SQL语句全称为Data Definition Language,中文名称为数据定义语言,主要是用来定义数据库中的对象的,例如数据库、表和字段的定义,简单的理解就是DDL语言是来操作数据库、表和字段的。

2.DDL类型的SQL语句之数据库层面的操作

2.1.创建一个数据库

创建数据库的命令格式:CREATE DATABASE [IF NOT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
命令格式中,[]中括号里的参数是可选项,都有默认的值。

  • [IF NOT EXISTS]:创建数据库时,检查数据库是否存在,如果存在则不执行任何动作,如果不存在则创建,常用语一个大型SQL脚本中,增加逻辑判断,防止报错。
  • [DEFAULT CHARSET]:指定数据库的默认字符集,例如UTF8等等
  • [COLLATE]:指定排序规则,用的较少。

1)创建一个数据库

mysql> create database db_1;
Query OK, 1 row affected (0.07 sec)

2)创建数据库并指定默认的字符集

在MySQL数据库中一般不用utf8类型的字符集,因为默认长度为3,有很多数据类型是大于3的,因此采用utf8mb4类型的字符集。

mysql> create database db_2 default charset utf8mb4;
Query OK, 1 row affected (0.04 sec)

3)在创建数据库时使用逻辑判断

当我们创建数据库时,如果数据库已经存在,那么创建时就会报错,如下图所示:

在创建数据库的命令中增加上IF NOT EXISTS参数就可以完美解决这个报错问题,当创建的数据库已经存在,那么就不进行任何操作。

mysql> create database if not exists db_1;
Query OK, 1 row affected, 1 warning (0.01 sec)

2.2.查看MySQL中有哪些数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db_1               |
| db_2               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.00 sec)

2.3.进入某个数据库

mysql> use db_1;
Database changed

2.4.查看当前处于哪个数据库中

()括号是MySQL数据库中的一种函数,后面讲。

mysql> select database();
+------------+
| database() |
+------------+
| db_1       |
+------------+
1 row in set (0.01 sec)

3.DDL类型的SQL语句之数据库表层面的操作

3.1.创建一张数据表

创建表的语法格式:

CREATE TABLE 表名 (
	字段1 字段1的类型 [COMMENT 字段1的注释],
	字段2 字段2的类型 [COMMENT 字段2的注释],
	字段3 字段3的类型 [COMMENT 字段3的注释],
	......
	字段n 字段1的类型 [COMMENT 字段n的注释]
) [COMMENT 表的注释];

注意:在创建表时,每个字段之间都以逗号隔开,最后一个字段无需添加逗号。

创建一张数据表:

根据下图所示的表格,在MySQL中创建一张数据表。

表名:技术中心新冠疫苗接种信息表。

1.进入db_1数据库中
mysql> use db_1;

2.创建表
create table jszx_xgymjzxxb (
    id int comment '编号',
    bm varchar(10) comment '部门',
    name varchar(10) comment '姓名',
    wd char(1) comment '未打',
    first_injection char(1) comment '第一针',
    second_injection char(1) comment '第二针',
    third_injection char(1) comment '第三针',
    jtyy varchar(50) comment '具体原因'
) comment '技术中心新馆疫苗接种信息表';

3.2.查看当前数据库中所有的数据表

通过show tables命令可以查看当前所在的数据库中,有哪些数据表。

mysql> show tables;
+----------------+
| Tables_in_db_1 |
+----------------+
| jszx_xgymjzxxb |
+----------------+
1 row in set (0.00 sec)

3.3.查询某张表的表结构

通过desc 表名的方式可以看到指定表的表结构,包括有哪些字段以及字段的类型。

mysql> desc jszx_xgymjzxxb;
+------------------+-------------+------+-----+---------+-------+
| Field            | Type        | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+-------+
| id               | int         | YES  |     | NULL    |       |
| bm               | varchar(10) | YES  |     | NULL    |       |
| name             | varchar(10) | YES  |     | NULL    |       |
| wd               | char(1)     | YES  |     | NULL    |       |
| first_injection  | char(1)     | YES  |     | NULL    |       |
| second_injection | char(1)     | YES  |     | NULL    |       |
| third_injection  | char(1)     | YES  |     | NULL    |       |
| jtyy             | varchar(50) | YES  |     | NULL    |       |
+------------------+-------------+------+-----+---------+-------+
8 rows in set (0.01 sec)

3.4.查询某张表的建表语句

通过show create table 表名的方式可以查询出数据表的建表语句,另外还会附带一些默认参数,例如CHARSET和COLLATE等等。

mysql> show create table jszx_xgymjzxxb;
| Table          | Create Table |
| jszx_xgymjzxxb | CREATE TABLE `jszx_xgymjzxxb` (
  `id` int DEFAULT NULL COMMENT '编号',
  `bm` varchar(10) DEFAULT NULL COMMENT '部门',
  `name` varchar(10) DEFAULT NULL COMMENT '姓名',
  `wd` char(1) DEFAULT NULL COMMENT '未打',
  `first_injection` char(1) DEFAULT NULL COMMENT '第一针',
  `second_injection` char(1) DEFAULT NULL COMMENT '第二针',
  `third_injection` char(1) DEFAULT NULL COMMENT '第三针',
  `jtyy` varchar(50) DEFAULT NULL COMMENT '具体原因'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='技术中心新馆疫苗接种信息表'

3.5.在现有表中添加新的字段

表结构创建完毕后,随着新需求的落地,就意味着要对表中当前字段以及类型进行修改,下面就来演示对于表的一系列修改操作。

为现有表添加字段的命令格式:ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束]

为jszx_xgymjzxxb张表中添加一个新字段jzqy(接种区域),类型为varchar,长度为30。

mysql> alter table jszx_xgymjzxxb add jzqy varchar(30) comment '接种区域';

查看表结构是否增加字段成功。

mysql> desc jszx_xgymjzxxb;
+------------------+-------------+------+-----+---------+-------+
| Field            | Type        | Null | Key | Default | Extra |
+------------------+-------------+------+-----+---------+-------+
| id               | int         | YES  |     | NULL    |       |
| bm               | float(10,0) | YES  |     | NULL    |       |
| name             | varchar(10) | YES  |     | NULL    |       |
| wd               | char(1)     | YES  |     | NULL    |       |
| first_injection  | char(1)     | YES  |     | NULL    |       |
| second_injection | char(1)     | YES  |     | NULL    |       |
| third_injection  | char(1)     | YES  |     | NULL    |       |
| jtyy             | varchar(50) | YES  |     | NULL    |       |
| jzqy             | varchar(30) | YES  |     | NULL    |       |				#成功增加
+------------------+-------------+------+-----+---------+-------+
9 rows in set (0.01 sec)

3.6.修改现有表中的字段数据类型和字段名称

修改表字段数据类型的命令格式:ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度)

修改表字段名称以及字段类型的命令格式:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

将jszx_xgymjzxxb表的jtyy字段修改为wjzymjtyy(未接种疫苗具体原因),类型修改为varchar(100)。

mysql> alter table jszx_xgymjzxxb change jtyy wjzymjtyy varchar(100) comment '未接种疫苗具体原因';

查看表结构中字段是否修改成功。

mysql> desc jszx_xgymjzxxb;
+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| id               | int          | YES  |     | NULL    |       |
| bm               | float(10,0)  | YES  |     | NULL    |       |
| name             | varchar(10)  | YES  |     | NULL    |       |
| wd               | char(1)      | YES  |     | NULL    |       |
| first_injection  | char(1)      | YES  |     | NULL    |       |
| second_injection | char(1)      | YES  |     | NULL    |       |
| third_injection  | char(1)      | YES  |     | NULL    |       |
| wjzymjtyy        | varchar(100) | YES  |     | NULL    |       |				#修改成功
| jzqy             | varchar(30)  | YES  |     | NULL    |       |
+------------------+--------------+------+-----+---------+-------+

3.7.删除现有表中已存在的字段

删除表中的字段命令格式:ALTER TABLE 表名 DROP 字段名

删除jszx_xgymjzxxb表的jzqy字段

mysql> alter table jszx_xgymjzxxb drop jzqy;

查看表结构中jzqy字段是否被删除。

mysql> desc jszx_xgymjzxxb;
+------------------+--------------+------+-----+---------+-------+
| Field            | Type         | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| id               | int          | YES  |     | NULL    |       |
| bm               | float(10,0)  | YES  |     | NULL    |       |
| name             | varchar(10)  | YES  |     | NULL    |       |
| wd               | char(1)      | YES  |     | NULL    |       |
| first_injection  | char(1)      | YES  |     | NULL    |       |
| second_injection | char(1)      | YES  |     | NULL    |       |
| third_injection  | char(1)      | YES  |     | NULL    |       |
| wjzymjtyy        | varchar(100) | YES  |     | NULL    |       |
+------------------+--------------+------+-----+---------+-------+
8 rows in set (0.00 sec)

3.8.修改表的名字

修改表名称的命令格式:ALTER TABLE 表名 RENAME TO 新表名

mysql> alter table ygxxb rename to ryxxb;

3.9.删除数据表

删除数据库中的表有两种方式,一种是DROP直接删除表以及表中的数据,另一种是截断表,不删除表,只清空表中的数据。

删除表的命令:DROP TABLE [ IF EXISTS ] 表名

清空表数据的命令:TRUNCATE TABLE 表名

mysql> truncate table ryxxb;
mysql> drop table ryxxb;

4.DDL类型的SQL语句汇总

数据库层面

1)创建数据库的命令

CREATE DATABASE [IF NOT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];

2)查看MySQL中有哪些数据库

show databases;

3)进入某个数据库

use db_1;

4)查看当前处于哪个数据库中

select database();

表层面

1)创建一张数据表

CREATE TABLE 表名 (
	字段1 字段1的类型 [COMMENT 字段1的注释],
	字段2 字段2的类型 [COMMENT 字段2的注释],
	字段3 字段3的类型 [COMMENT 字段3的注释],
	......
	字段n 字段1的类型 [COMMENT 字段n的注释]
) [COMMENT 表的注释];

2)查看当前数据库中所有的数据表

show tables;

3)查询某张表的表结构

desc jszx_xgymjzxxb;

4)查询某张表的建表语句

show create table jszx_xgymjzxxb;

5)在现有表中添加新的字段

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束]

6)修改表字段数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度)

7)修改表字段名称以及字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

8)删除表中的字段

ALTER TABLE 表名 DROP 字段名

9)修改表的名字

ALTER TABLE 表名 RENAME TO 新表名

10)删除数据表

DROP TABLE [ IF EXISTS ] 表名TRUNCATE TABLE 表名

到此这篇关于SQL语句中的DDL类型的数据库定义语言的文章就介绍到这了,更多相关SQL DDL数据库定义语言内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解SQL Server数据库架构和对象、定义数据完整性

    前言 本节我们继续SQL之旅,本节我们如题来讲讲一些基本知识以及需要注意的地方,若有不妥之处,还望指出,简短的内容,深入的理解. 数据库架构和对象 数据库包含架构,而架构又包含对象,架构可以看做是表.视图.存储过程等对象的容器.架构是一个命名空间,它被用做对象名称的前缀,比如在Cnblogs的架构中有一个名称为Blogs的表,此时我们用架构式限定式名称(即两部分式对象名称)所以Blogs表示为Cnblogs.Blogs.如果我们引用对象时省略了架构名称,SQL Server将会检查对象是否存在用

  • MySQL数据库之内置函数和自定义函数 function

    目录 1.内置函数 1.1.字符串函数 1.2.时间函数 1.3.数学函数 1.4.其他函数 2.自定义函数 2.1.创建函数 2.2.查看函数 2.3.调用函数 2.4.删除函数 2.5.注意事项 3.函数流程结构案例 前言: 函数分为两类:系统函数和自定义函数 使用函数: select 函数名(参数列表); 1.内置函数 1.1.字符串函数 函数名 说明 char_length 判断字符串的字符数 length 判断字符串的字节数,与字符集有关 concat 连接字符串 insrt 检查字符

  • MySQL教程数据定义语言DDL示例详解

    目录 1.SQL语言的基本功能介绍 2.数据定义语言的用途 3.数据库的创建和销毁 4.数据库表的操作(所有演示都以student表为例) 1)创建表 2)修改表 3)销毁表 如果你是刚刚学习MySQL的小白,在你看这篇文章之前,请先看看下面这些文章.有些知识你可能掌握起来有点困难,但请相信我,按照我提供的这个学习流程,反复去看,肯定可以看明白的,这样就不至于到了最后某些知识不懂却不知道从哪里下手去查. <MySQL详细安装教程> <MySQL完整卸载教程> <这点基础都不懂

  • 详解SQL四种语言:DDL DML DCL TCL

    看到很多人讨论SQL还分为四种类型,在这里知识普及一下,并总结下他们的区别吧. 1. DDL – Data Definition Language 数据库定义语言:定义数据库的结构. 其主要命令有CREATE,ALTER,DROP等,下面用例子详解.该语言不需要commit,因此慎重. CREATE – to create objects in the database   在数据库创建对象 例: CREATE DATABASE test; // 创建一个名为test的数据库 ALTER – a

  • MySQL数据定义语言DDL的基础语句

    MySQL DDL 语句 什么是DDL,DML. DDL 是数据定义语言,就是对数据库,表层面的操作,如 CREATE,ALTER,DROP.DML 是数据操作语言,也就是对表中数据的增删改查,如 SELECT,UPDATE,INSERT,DELETE. 假设现在有数据库 lian_xi 里面有表 user 和 orders; 1.1登陆MySQL环境 在cmd窗口中输入mysql -u root -p登录MySQL环境 1.2查看数据库 Show databases; 1.3使用数据库 Use

  • SQL语句中的DDL类型的数据库定义语言操作

    目录 SQL语句之DDL类型的数据库定义语言 1.DDL类型的SQL语句基本概述 2.DDL类型的SQL语句之数据库层面的操作 2.1.创建一个数据库 2.2.查看MySQL中有哪些数据库 2.3.进入某个数据库 2.4.查看当前处于哪个数据库中 3.DDL类型的SQL语句之数据库表层面的操作 3.1.创建一张数据表 3.2.查看当前数据库中所有的数据表 3.3.查询某张表的表结构 3.4.查询某张表的建表语句 3.5.在现有表中添加新的字段 3.6.修改现有表中的字段数据类型和字段名称 3.7

  • 使用用SQL语句从电脑导入图片到数据库的方法

    使用SQL语句从电脑导入图片到数据库的方法,具体代码如下所示: --创建图片表 CREATE TABLE W_PIC ( ID INT, --编号 WPATH VARCHAR(80), --完整路径 PIC VARCHAR(80), --图片名称,不带后缀 img image --图片内容 ) --图片表中插入数据 INSERT INTO W_PIC(ID,WPATH,PIC) SELECT 1, 'C:\Users\w\Desktop\产品图片\2#加工图34-C专用.jpg','2#加工图3

  • 使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名

    MySQL中查询所有数据库名和表名 查询所有数据库 show databases; 查询指定数据库中所有表名 select table_name from information_schema.tables where table_schema='database_name' and table_type='base table'; 查询指定表中的所有字段名 select column_name from information_schema.columns where table_schema

  • SQL语句中的ON DUPLICATE KEY UPDATE使用

    目录 一:主键索引,唯一索引和普通索引的关系 主键索引 唯一索引: 普通索引: 二:ON DUPLICATE KEY UPDATE使用测试(MYSQL下的Innodb引擎) 1:ON DUPLICATE KEY UPDATE功能介绍: 2:ON DUPLICATE KEY UPDATE测试样例+总结: 总结: 一:主键索引,唯一索引和普通索引的关系 主键索引 主键索引是唯一索引的特殊类型. 数据库表通常有一列或列组合,其值用来唯一标识表中的每一行.该列称为表的主键. 在数据库关系图中为表定义一个

  • Oracle如何在SQL语句中对时间操作、运算

    目录 0.date与timestamp 1.获取系统当前时间 2.ORACLE里获取一个时间的年.季.月.周.日的函数: 3.日期操作 4.常用的时间戳 5.查询某时间范围 总结 0.date与timestamp 1)区别 date精确到年月日时分秒,timestamp更精确一些: 但这个不重要,重要的是,实践中我从Oracle数据库取date类型字段,前端展示时分秒都是0,网上说数据库类型是date取到前端就是这样,只能精确到日,后面都是默认填0:我给字段换成timestamp确实问题解决了,

  • sql 语句中的 NULL值

    今天写了这样的代码 复制代码 代码如下: DECLARE @atr NVARCHAR(20) SET @atr = NULL IF(@atr = NULL) BEGIN PRINT 1 END 原本是想打印出1的.但是没有. 把 代码修改成如下: DECLARE @atr NVARCHAR(20) SET @atr = NULL IF(@atr IS NULL) BEGIN PRINT 1 END 这样就正确打印出1了. 然后自己有做了如下的修改,把if语句修改成 复制代码 代码如下: IF(N

  • python 在sql语句中使用%s,%d,%f说明

    python连接数据库执行增删查改 mysql数据库 import pymysql postgresql数据库 import psycopg2 普通含%的python语句 sql语句中 普通sql语句 select * from tables where tablename = 'table_name' ,所以这里该加的引号还是要加 不加的情况 翻页的情况 like的情况 因为普通sql语句是 where 列名 like '4301%' 这里需要多加一个%防止转义 补充知识:python 中 s

  • SQL语句中公共字段的自动填充方法

    1. 前言 我们在设计数据库的时候一定会带上新增.更新的时间.操作者等审计信息. 之所以带这些信息是因为假如有一天公司的数据库被人为删了,尽管可能有数据库备份可以恢复数据.但是我们仍然需要追踪到这个事是谁干的,在什么时间干的,具体干了哪些事等等,方便定责和修补.但是我们变更每条数据都要去显式变更这些信息就十分繁琐,我们希望无感知的来处理这些信息. 2. 通用方式 那么有什么好的解决思路呢?在Spring Data框架中提供@CreatedBy和@LastModifiedBy来捕捉谁创建或修改的实

  • 在 SQL 语句中处理 NULL 值的方法

    在日常使用数据库时,你在意过NULL值么? 其实,NULL值在数据库中是一个很特殊且有趣的存在,下面我们一起来看看吧: 在查询数据库时,如果你想知道一个列(例如:用户注册年限 USER_AGE)是否为 NULL,SQL 查询语句该怎么写呢? 是这样: SELECT * FROM TABLE WHERE USER_AGE = NULL 还是这样? SELECT * FROM TABLE WHERE USER_AGE IS NULL 当然,正确的写法应该是第二种(WHERE USER_AGE IS

  • SQL语句中JOIN的用法场景分析

    记录:256 写SQL最高境界:SELECT * FROM 表名.当然这是一句自嘲.探究一下SQL语句中JOIN的用法,直到经历这个场景,变得想验证一下究竟. 一.场景 把关系型数据库A中表TEST_TB01和TEST_TB02迁移到大数据平台M(MaxCompute大数据平台).TEST_TB01单表1000万条记录,TEST_TB02单表80万条记录. 在关系型数据库中,TEST_TB01和TEST_TB02中有主键约束.在产生新增业务数据时,不会存在重复数据插入.但是,当数据迁移到大数据平

随机推荐