【数据库】SQL语言之数据定义、更新和控制

本文详细介绍了SQL中的数据定义(DDL),包括创建、修改和删除数据库对象如表、索引、视图和序列。接着讨论了数据更新,涉及数据插入、修改和删除。最后,概述了数据控制,如事务的提交、回滚和保存点的使用,为数据库操作提供安全保障。

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

前言:

这篇我们来看对数据库的数据定义DDL数据更新数据控制

一、数据定义
1.数据库对象

什么是数据库对象?

数据库对象是数据库的组成部分,数据库对象主要包含:表,索引,视图,存储过程,缺省值,规则,触发器,用户,函数等

数据库对象 描述
表是数据库中的一种特殊数据结构,用于存储数据对象以及对象之间的关系,由行和列组成的
索引 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息
视图 视图是从一个或几个基本表中导出的虚表,可用于控制用户对数据访问
存储过程 存储过程是一组为了完成特定功能的SQL语句的集合。一般用于报表统计、数据迁移等
缺省值 缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值
规则 规则是对数据库表中数据信息的限制。它限定的是表的列
触发器 触发器是一种特殊类型的存储过程,通过指定的事件触发执行。一般用于数据审计、数据备份等
函数 函数是对一些业务逻辑的封装,以完成特定的功能。函数执行完成后会返回执行结果
2、DDL分类

DDL(Data Definition Language数据定义语言),用于定义或修改数据库中的对象,主要分为三种类型语句:CREATE、ALTER和DROP

  • CREATE用来创建数据库对象;
  • ALTER 用来修改数据库对象的属性;
  • DROP则是用来删除数据库对象

涉及表的SQL语言

功能 相关SQL
创建表 CREATE TABLE
修改表属性 ALTER TABLE
删除表 DROP TABLE
删除表中所有数据 TRUNCATE TABLE
3、创建表

语法格式:

CREATE [[ GLOBAL ] TEMPORARY ] TABLE [ IF NOT EXISTS ][ schema_name.] table_name
{
    relational_properties
| [ ( column_name [ DEFAULT expr [ ON UPDATE expr ] ] [ AUTO_INCREMENT ] 
[COMMENT 'string']
[COLLATE collation_name] [inline_constraint] | out_of_line_constraint [ ,...] ) ] AS query}
[ ON COMMIT {
    DELETE | PRESERVE } ROWS ]
[ physical_properties ]
[ TABLESPACE tablespace_name ]
[ table_properties ]
[ CRMODE {
    PAGE | ROW } ]
[ NOLOGGING] 

注意:
创建当前用户的表,用户需要被授予CREATE TABLE系统权限;如果是创建其他用户的表,用户需要被授予CREATE ANY TABLE系统权限,普通用户不可以创建系统用户对象。
其中,表名、列名(数据类型、 size)在创建表时必须指定。

参数说明:

参数 描述
GLOBAL 创建全局表。
TEMPORARY 创建临时表。临时表只在当前会话可见,本会话结束后会自动删除。创建临时表时可以在TEMPORARY前指定GLOBAL。全局临时表是所有连接都可以引用此临时表,只有当创建全局临时表的连接和引用全局临时表的连接全部都断开后,全局临时表才被删除
IF NOT EXISTS 创建表时,如果表已经存在,则不做改动直接返回;如果表不存在,则创建新表。
[schema_name.]table_name 表名,不能和用户下表重名。
relational_properties 表属性,包括列名、类型、行内约束和行外约束

例子1

创建education表

CREATE TABLE education(staff_id INT, higest_degree CHAR(8) NOT NULL, graduate_school VARCHAR(64), graduate_date DATETIME, education_note VARCHAR(70));

例子2
创建分区表training。---->分区表是把逻辑上的一张表根据某种方案分为几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。

CREATE TABLE training(staff_id INT NOT NULL, course_name CHAR(20), course_period DATETIME,
exam_date DATETIME, score INT)
PARTITION BY RANGE(staff_id)
(
PARTITION training1 VALUES LESS THAN(100),
PARTITION training2 VALUES LESS THAN(200),
PARTITION training3 VALUES LESS THAN(300),
PARTITION training4 VALUES LESS THAN(MAXVALUE)
);
4、修改表属性

ALTER TABLE功能指通过更改、添加、删除列和约束来更改表的定义,功能包括:

  • 列的添加、删除、修改、重命名。
  • 约束的添加、删除。
  • 约束的启动和禁用。
  • 修改分区的名称。
  • 修改分区的表空间。

语法格式:

ALTER TABLE [ schema_name. ]table_name
{
    alter_table_properties
| column_clauses
| references_clause
| constraint_clauses
| partition_clauses
| enable_disable_clause
| set_interval_clause
} 

注意:
执行该语句的用户需要有ALTER ANY TABLE系统权限,普通用户不可以修改系统用户对象。
增加表中列属性时,保证表中无记录。
修改表中列属性时,保证表中所有记录该列为NULL。

例子:

training表中添加列full_masks

ALTER
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值