您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > 其它数据库

SQL的数据定义语言(DDL)语句

时间:03-23来源:作者:点击数:

SQL的数据定义语言(DDL)语句用于创建、修改和删除数据库的结构组件,如表、视图、索引、存储过程等。DDL 语句用于管理数据库的结构,而数据操作语言(DML)用于处理数据库中的实际数据。所以在使用 DDL 语句时,要谨慎,因为它们可能会直接影响数据库的结构,包括表、索引等。

DDL语句包括但不限于以下:

数据库操作

创建新的数据库

CREATE DATABASE:创建新的数据库。

create database netdata
修改数据库

ALTER DATABASE:修改数据库的属性,如名称、所有者等。

  1. 更改数据库名称
ALTER DATABASE netdata
MODIFY NAME = webdata; 
  1. 更改数据库字符集(collation)
ALTER DATABASE webdata
collate Latin1_General_CI_AS
  1. 更改数据库的所有者
ALTER DATABASE webdata
SET OWNER TO parish;
删除数据库

DROP DATABASE:删除一个数据库。

 drop database webdata
在这里插入图片描述

表操作

创建数据库表

CREATE TABLE:创建新表,并定义其列、数据类型、约束等。

USE webdata;

CREATE TABLE users
(
   user_id INT PRIMARY KEY,
   username VARCHAR(50) NOT NULL,
   email VARCHAR(100) UNIQUE,
   password_hash VARCHAR(255) NOT NULL,
   registration_date DATETIME DEFAULT GETDATE()
);

在这个例子中:

  • user_id 是一个整数类型的列,被指定为主键。
  • username 是一个不允许为空的字符串列。
  • email是一个唯一约束的字符串列,确保每个用户的邮箱地址都是唯一的。
  • password_hash 是不允许为空的字符串列,通常用于存储加密后的密码。
  • registration_date 是一个默认为当前日期和时间的列。
修改数据表

ALTER TABLE:更改现有表的结构,比如添加或删除列,修改列属性,重命名列或表,添加或删除约束等。

USE webdata;

ALTER TABLE users
ADD mark VARCHAR(50) NOT NULL;

上述语句将在 users 表中添加一个名为 mark 的新列,数据类型为 VARCHAR(50)。在 ALTER TABLE 语句中添加 NOT NULL ,标识希望 mark 列不允许为空。

删除数据表

DROP TABLE:删除表及其所有数据。

USE webdata;
DELETE FROM users;

删除表以及表内的数据,可以使用 DROP TABLE 语句。

USE webdata;
DELETE FROM users;

将删除指定表中的所有行,但保留表的结构。请注意,这个操作是不可逆的,因此在执行之前请确保是否真的想删除所有数据。

USE webdata;
TRUNCATE TABLE users;

如果只是想清空表,而不删除表本身,也可以使用 TRUNCATE TABLE 语句,它比 DELETE 通常执行得更快。

索引操作

索引是一种提高数据库查询性能的技术,通过对表中的列或列组合创建索引,可以加速检索操作。

创建索引

CREATE INDEX:在表的一个或多个列上创建索引以加快查询速度。

CREATE INDEX index_users
ON users (username, email, ...);

索引的创建可能会影响写入性能,因为每次插入、更新或删除时都要维护索引。因此,在决定创建索引时,需要权衡读取性能和写入性能之间的需求。

修改索引

直接修改索引的定义是不允许的,修改索引通常涉及到删除原有的索引,然后重新创建一个新的索引,因为大多数情况下。

DROP INDEX:删除已经存在的索引。

DROP INDEX old_index_name
ON table_name;

创建新索引

CREATE INDEX new_index_name
ON table_name (column1, column2, ...);

删除索引会影响到数据库的性能,因此在生产环境中务必要谨慎执行,最好是在维护期间进行。另外,修改索引可能会对数据库操作产生影响,因此最好在数据库低负载时进行。

视图操作

使用 CREATE VIEW 语句可以创建视图。视图是一种虚拟的表,其内容基于一个或多个基本表的查询结果。

CREATE VIEW:根据查询结果创建视图。

CREATE VIEW view_name
AS
SELECT column1, column2, ...
FROM table1
WHERE condition;
在这里插入图片描述
修改视图

DROP VIEW:删除视图。

DROP VIEW old_view_name;

旧的视图删除后,再重新创建新的视图就可以了。

序列操作

在Oracle、PostgreSQL数据库中序列是独立支持的。

在MySQL早期版本中并不直接支持序列,而是通过其他方式模拟序列功能,直到MySQL 8.0引入了SEQUENCE对象才原生支持序列操作。对于不支持序列的数据库系统,这类操作不属于其DDL语句集。

在Microsoft SQL Server(MS SQL)早期版本中也不直接支持序列对象,在SQL Server 2012及更高版本中引入了SEQUENCE对象,使得开发者可以直接创建和管理序列以生成连续的整数序列。

创建序列

CREATE SEQUENCE:创建一个用于生成唯一数字序列的对象。

如下是MS SQL中创建序列语句:

CREATE SEQUENCE sequence_name
    AS int
    START WITH 1
    INCREMENT BY 1
    CACHE 10;

创建一个名为sequence_name的序列,初始值为1,每次递增1,并且缓存10个值以提高性能。

修改序列

ALTER SEQUENCE:修改序列的属性。

ALTER SEQUENCE dbo.YourSequenceName
   RESTART WITH 100
   INCREMENT BY 5;
  • ALTER SEQUENCE dbo.YourSequenceName: 这部分指定了要修改的序列的全名,其中dbo通常代表默认架构(database schema),而YourSequenceName是序列的实际名称。这条语句的目标是对这个特定的序列进行更改。
  • RESTART WITH 100: 这一行指定了序列的新起始值。在这个例子中,序列将重新开始,其下一个值将设置为 100。
  • INCREMENT BY 5: 这里定义了序列每次递增的步长。设置为5意味着每当需要一个新的序列值时,当前值将增加5。例如,在重启后的第一个值是100的情况下,第二个值会是105,然后是110,依此类推。
删除序列

DROP SEQUENCE:删除序列。

drop sequence sequence_name  

分区操作(在支持分区的数据库中)

  • CREATE PARTITION 或相关子句:在表中创建分区。
  • ALTER PARTITION:修改表的分区设置。
  • DROP PARTITION:删除表中的指定分区。

同义词操作(在Oracle等数据库中)

  • CREATE SYNONYM:创建对表、视图或其他对象的别名。
  • DROP SYNONYM:删除同义词。

其他数据库对象

  • CREATE SCHEMA(在一些数据库中相当于用户或命名空间):创建一个新的模式或者命名空间。
  • ALTER SCHEMA:更改模式的所有权或内容。
  • DROP SCHEMA:删除整个模式及其包含的所有对象。

请注意,不同的数据库管理系统可能会有特定的DDL语法或不支持某些DDL语句。例如,在SQL Server中,不直接支持CREATE SCHEMA来创建数据库,但在PostgreSQL或Oracle中它具有这样的含义。同样地,对于序列、分区和同义词的支持也因数据库而异。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门