文章目录
前言:
这篇我们来看对数据库的数据定义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