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

文章目录

    • 数据库操作
      • 创建新的数据库
      • 修改数据库
      • 删除数据库
    • 表操作
      • 创建数据库表
      • 修改数据表
      • 删除数据表
    • 索引操作
      • 创建索引
      • 修改索引
    • 视图操作
      • 修改视图
    • 序列操作
      • 创建序列
      • 修改序列
      • 删除序列
    • 分区操作(在支持分区的数据库中)
    • 同义词操作(在Oracle等数据库中)
    • 其他数据库对象

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_nameAS intSTART WITH 1INCREMENT BY 1CACHE 10;

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

修改序列

ALTER SEQUENCE:修改序列的属性。

ALTER SEQUENCE dbo.YourSequenceNameRESTART WITH 100INCREMENT 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中它具有这样的含义。同样地,对于序列、分区和同义词的支持也因数据库而异。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用map和set实现简单的词频统计

一、运行效果图 二、代码示例 #include <iostream> #include <fstream> #include <sstream> #include <string> #include <map> #include <set> #include <vector> #include <algorithm> using namespace std;class TextQuer…

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方&#xff0c;「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo&#xff0c;基于底层Runtime技术&#xff0c;实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…

Spark 之ExecutorLostFailure in Apache Spark

错误日志ExecutorLostFailure (executor 34 exited unrelated to the running tasks) Reason: Container container_XXX on host: XXX was preempted. 1. 解释 ExecutorLostFailure Executor丢失: ExecutorLostFailure是一个在Apache Spark集群运行时可能遇到的错误。它表明一…

游戏服务端配置“热更”及“秒启动”终极方案(golang/ygluu/卢益贵)

游戏服务端配置“热更”及“秒启动”终极方案 ygluu 卢益贵 关键词&#xff1a;游戏微服务架构、游戏服务端热更、模块化解耦、golang 目录 一、前言 二、异步线程加载/重载方案 三、配置表碎片化方案 四、指针间接引用 五、重载通知 六、示例代码 七、相关连接 一、…

Samtec科普 | 一文了解患者护理应用连接器

【摘要/前言】 通过医疗专业人士为患者提供护理的种种需求&#xff0c;已经不限于手术室与医院的各种安全状况。当今许多患者的护理都是在其他环境进行&#xff0c;例如医生办公室、健康中心&#xff0c;还有越来越普遍的住家。尤其是需要长期看护的患者&#xff0c;所需的科技…

202006A卷青少年软件编程(Scratch)等级考试试卷(三级)

第1题:【 单选题】 执行以下脚本后舞台上的角色将 ?( ) A:先克隆自身,克隆体出现后被删除 B:先克隆自身,克隆体出现后删除本体 C:克隆出自身后本体与克隆体同时被删除 D:克隆出自身后本体与克隆体被不会被删除 【正确答案】: A 【试题解析】 : 第2题:【 单选题】…

MATLAB环境下基于决策树和随机森林的心力衰竭患者生存情况预测

近年来&#xff0c;随着医学数据的不断积累和计算机技术的快速发展&#xff0c;许多机器学习技术已经被用在医学领域&#xff0c;并取得了不错的效果。与传统的基于医学知识经验的心衰预后评估模型相比&#xff0c;机器学习方法可以快速、高效地从繁杂的、海量的心衰病人数据中…

SSH 批量免密登录服务器

思路&#xff1a;创建密钥&#xff0c;并通过分发公钥文件到其他服务器&#xff0c;从而实现批量免密无交互登录服务器 拓扑结构&#xff1a;主服务器 |----》从服务器1 |----》从服务器2 |----》..... 参考链接&#xff1a;SSH命令批量操作服务器_ssh批量登录远程执行脚本…

【Liunx-后端开发软件安装】Liunx安装nginx

【Liunx-后端开发软件安装】Liunx安装nginx 使用安装包安装 一、简介 nginx&#xff0c;这个家伙可不是你厨房里的那位大厨&#xff0c;它可是互联网世界的“煎饼果子摊主”。想象一下&#xff0c;在熙熙攘攘的网络大街上&#xff0c;nginx挥舞着它的锅铲——哦不&#xff0c;是…

flask 继续学习

group_by group_by是一种在数据库查询或数据处理中常用的操作&#xff0c;它用于将数据按照指定的列进行分组。通过group_by操作&#xff0c;可以将数据集按照某个列的值进行分类&#xff0c;然后对每个分类进行聚合计算或其他操作。 在SQL语言中&#xff0c;group_by通常与聚…

校招:饿了么一面八股

文章目录 1.new String&#xff08;“abc”&#xff09;存在哪里2.序列化和反序列化3.数据结构中堆和栈的区别4面向对象编程三大特征&#xff0c;分别说明5.子类继承类的方法&#xff0c;使用super调用父类的方法&#xff0c;输出的顺序6.多台7Mysql的存储引擎有什么8mysql中有…

你会怎样爱别人

传统经济学中的纯粹利己模型假定人们试图最大化的效用函数不受其他人效用的影响&#xff0c;其他人的行为都是外生的&#xff0c;不用考虑&#xff0c;因此&#xff0c;是一种极为简化的模型&#xff0c;可以便于建模和运用&#xff0c;其功能与完全竞争模型有点像。 与传统经济…

消息队列面试题

目录 1. 为什么使用消息队列 2. 消息队列的缺点 3. 消息队列如何选型&#xff1f; 4. 如何保证消息队列是高可用的 5. 如何保证消息不被重复消费&#xff08;见第二条&#xff09; 6. 如何保证消息的可靠性传输&#xff1f; 7. 如何保证消息的顺序性&#xff08;即消息幂…

总说上下文切换耗性能,那他到底耗了多少性能?

大家好&#xff0c;我是「云舒编程」&#xff0c;今天我们来聊聊上下文切换性能消耗。 文章首发于微信公众号&#xff1a;云舒编程 关注公众号获取&#xff1a; 1、大厂项目分享 2、各种技术原理分享 3、部门内推 一、前言 众所周知&#xff0c;操作系统是一个分时复用系统&…

.NET高级面试指南专题十九【 数据库设计-4范式】

数据库范式设计是关系数据库设计中的重要概念&#xff0c;旨在减少数据冗余和提高数据的一致性。 范式设计的目的是提高数据库的数据质量、一致性和可维护性。通过将数据结构化为不同的范式&#xff0c;可以降低数据冗余&#xff0c;减少数据更新异常&#xff0c;提高数据的可靠…

Java八股文(MyBatis Plus)

Java八股文のMyBatis Plus MyBatis Plus MyBatis Plus MyBatis Plus 是什么&#xff1f;它与 MyBatis 有什么区别&#xff1f; MyBatis Plus 是基于 MyBatis 进行扩展的一款持久层框架&#xff0c;它提供了一系列增强功能&#xff0c;简化了 MyBatis 的使用。 与 MyBatis 相比…

C++学习基础版(一)

目录 一、C入门 1、C和C的区别 2、解读C程序 3、命名空间 4、输入输出 &#xff08;1&#xff09;cout输出流 &#xff08;2&#xff09;endl操纵符 &#xff08;3&#xff09;cin输入流 二、C表达式和控制语句 1、数据机构 特别&#xff1a;布尔类型bool 2、算数运…

处理Centos 7 中buff/cache高的问题

在CentOS 7中,如果发现 buff/cache 栏目的值过高占用了大量内存,可以尝试以下方法来释放部分缓存: 清理页面缓存 Linux内核会缓存最近使用过的内存页面,以提高访问速度。你可以使用以下命令清理页面缓存: sudo sync && sudo echo 1 > /proc/sys/vm/drop_caches …

Leetcode 3082. Find the Sum of the Power of All Subsequences

Leetcode 3082. Find the Sum of the Power of All Subsequences 1. 解题思路2. 代码实现 题目链接&#xff1a;3082. Find the Sum of the Power of All Subsequences 1. 解题思路 这一题的话其实反而还好&#xff0c;就是一个比较常规的动态规划的题目。 我们首先需要想明…

数据结构的基本框架以及泛型

目录 集合框架复杂度大O的渐进表示法 装包(箱)或者拆包(箱)装包拆包 泛型泛型的上界泛型方法求最大值 集合框架 Java的集合框架,Java Collection Framework 又被称为容器container, 定义在java.util包下的一组 interfaces 和其实现类 classes interface: 接口 abstracb class…