{"content":{"title":"SQL中的DDL（数据定义）语言：掌握数据定义语言的关键技巧！","body":"DDL(Data Definition Language)，是用于描述数据库中要存储的现实世界实体的语言。\r\n\r\n前面我们介绍了数据库及SQL语言的相关概念和基础知识，本篇文章我们来重点讲述DDL（数据定义语言的语法格式）的相关内容以及DDL的常用语句。\r\n\r\n## 一、DDL介绍\r\n\r\n这里我们先回顾一下前面讲过的SQL语言的概念：SQL(Structured Query Language)，即结构化查询语言，是在关系型数据库（诸如Mysql、SQL Server、Oracle等）里进行相关操作的标准化语言，可以根据sql的作用分为以下几种类型：\r\n\r\n![](https://ydcqoss.ydcode.cn/ydyx/bbs/1698920505-8mvtBu.png)\r\n\r\n下面再来看DDL语言是什么：\r\n\r\nDDL，全称为Data Definition Language，即数据定义语言。它是SQL语言的重要组成部分，主要用于定义和管理数据库的结构。\r\n\r\n## 二、DDL语言能做什么？\r\n\r\n通过DDL，我们可以创建、修改和删除数据库、表、视图等对象。\r\n\r\n- **创建数据库：** 使用CREATE DATABASE语句，我们可以创建一个新的数据库。\r\n\r\n- **删除数据库：** 使用DROP DATABASE语句，我们可以删除一个已经存在的数据库。\r\n\r\n- **创建表：** 使用CREATE TABLE语句，我们可以在数据库中创建新的表。\r\n\r\n- **删除表：** 使用DROP TABLE语句，我们可以删除一个已经存在的表。\r\n\r\n- **修改表结构：** 使用ALTER TABLE语句，我们可以修改已经存在的表的结构，如添加、删除或修改字段等。\r\n\r\n## 三、什么是数据库对象\r\n\r\n数据库对象是数据库的组成部分，常见的有以下几种：\r\n\r\n**1、表（Table ）**\r\n\r\n数据库中的表与我们日常生活中使用的表格类似，它也是由行（Row） 和列（Column）组成的。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1698920597-p0RR5d.png)\r\n\r\n列由同类的信息组成，每列又称为一个字段，每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录，它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成，没有记录的表称为空表。每个表中通常都有一个主关键字，用于唯一确定一条记录。\r\n>编程学习，从云端源想开始，课程视频、在线书籍、在线编程、一对一咨询……你想要的全部学习资源这里都有，重点是统统免费！[点这里即可查看](https://www.ydcode.cn/?sourceId=171)\r\n\r\n\r\n**2、索引（Index）**\r\n\r\n索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径，并且可监督表的数据，使其索引所指向的列中的数据不重复。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1698920656-20k1vc.png)\r\n\r\n**3、视图（View）**\r\n\r\n视图看上去同表似乎一模一样，具有一组命名的字段和数据项，但它其实是一个虚拟的表，在数据库中并不实际存。视图是由查询数据库表产生的，它限制了用户能看到和修改的数据。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1698920676-08R1cb.png)\r\n\r\n**4、图表（Diagram）**\r\n\r\n图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1698920701-gIWQfL.png)\r\n\r\n**5、缺省值（Default）**\r\n\r\n缺省值是当在表中创建列或插入数据时，对没有指定其具体值的列或列数据项赋予事先设定好的值。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1698920720-y8tPO4.png)\r\n\r\n**6、规则（Rule）**\r\n\r\n规则是对数据库表中数据信息的限制，它限定的是表的列。\r\n\r\n**7、触发器（Trigger）**\r\n\r\n触发器是一个用户定义的SQL事务命令的集合。当对一个表进行插入、更改、删除时，这组命令就会自动执行。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1698920741-a0LR32.png)\r\n\r\n**8、存储过程（Stored Procedure）**\r\n\r\n存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句，经编译后存储在数据库中的SQL程序。\r\n\r\n![Description](https://ydcqoss.ydcode.cn/ydyx/bbs/1698920762-113q7r.png)\r\n\r\n9、用户（User）\r\n\r\n所谓用户就是有权限访问数据库的人。\r\n\r\n## 四、DDL常用语句\r\n\r\n### 4.1 数据库相关\r\n\r\n**1）查看所有数据库**\r\n\r\n格式：show databases；\r\n\r\n**2）创建数据库**\r\n\r\n格式：create database 数据库名 charset=utf8；\r\n\r\n举例：\r\n\r\n```\r\n#创建一个名为test的数据库\r\n#create database 库名;\r\ncreate database test;\r\n#创建一个名为test的数据库并指定字符集和编码格式\r\ncreate database test default charset utf8 collate utf8_general_ci;\r\n```\r\n\r\n\r\n\r\n**3）查看数据库信息**\r\n\r\n格式：show create database 库名;\r\n\r\n\\*\\*4）删除数据库 \\*\\*\r\n\r\n格式：drop database 数据库名;\r\n\r\n举例：\r\n\r\n```\r\n#删除test数据库\r\ndrop database test;\r\n```\r\n\r\n\r\n\r\n**5）使用数据库**\r\n\r\n执行表相关和数据库相关的SQL语句之前必须先使用了某个数据库\r\n\r\n格式：use 数据库名;\r\n\r\n举例：\r\n\r\n```\r\nuse test;\r\n```\r\n\r\n\r\n\r\n### 4.2 表相关\r\n\r\n**1）创建表**\r\n\r\n格式：create table 表名(字段1名 类型，字段2名 类型，…)\r\n\r\n举例：\r\n\r\n```\r\ncreate table person(name varchar(50),age int);\r\ncreate table person(name varchar(50),age int);\r\ncreate table stydent(name varchar(50),chinese int ,math int, english int)charset=utf8;\r\n创建一个员工表emp 保存名字,工资和工作\r\ncreate table emp(name varchar(50),salary int,job varchar(20));\r\n```\r\n\r\n\r\n\r\n**2）查询所有表**\r\n\r\n格式：show tables;\r\n\r\n**3）查询表信息**\r\n\r\n格式：show create table 表名;\r\n\r\n举例：\r\n\r\n```\r\nshow create table emp;\r\n```\r\n\r\n\r\n**4）查询表字段**\r\n\r\n格式：desc 表名; (description)\r\n\r\n**5）修改表名**\r\n\r\n格式：rename table 原名 to 新名;\r\n\r\n举例：\r\n\r\n```\r\nrename table stydent to stu;\r\n```\r\n\r\n\r\n**6）删除表**\r\n\r\n格式：drop table 表名;\r\n\r\n### 4.3 alter表操作相关\r\n\r\n**1）添加表字段**\r\n\r\n格式(最后面添加)：alter table 表名 add 字段名 类型;\r\n\r\n格式(最前面添加)：alter table 表名 add 字段名 类型 first;\r\n\r\n在xxx字段后面添加：alter table 表名 add 字段名 类型 after 字段名;\r\n\r\n举例：\r\n\r\n```\r\nalter table emp add gender gender varchar(5);\r\nalter table emp add id int first;\r\nalter table emp add dept varchar(20) after name;\r\n```\r\n\r\n\r\n**2）删除表字段**\r\n\r\n格式：alter table 表名 drop 字段名;\r\n\r\n举例：\r\n\r\n```\r\nalter table emp drop dept;\r\n```\r\n\r\n\r\n\r\n**3）修改表字段**\r\n\r\n格式：alter table 表名 change 原名 新名 新类型;\r\n\r\n举例：\r\n\r\n```\r\nalter table emp change job dept varchar(10);\r\n```\r\n\r\n\r\n\r\n**4）修改列属性**\r\n\r\n格式：alter table 表名 modify 列名 新列属性\r\n\r\n举例（只有MySQL是这样写的）：\r\n\r\n```\r\nalter table student modify age int;\r\n```\r\n\r\n\r\n\r\n关于DDL常用语句就讲这么多了，尽管现在有许多图形化工具可以替代传统的SQL语句进行操作，同时在Java等语言中也可以使用数据库，但对于SQL各类语句的了解仍然非常重要。"},"author":{"user":"https://learnblockchain.cn/people/17279","address":null},"history":null,"timestamp":1699067591,"version":1}