[数据库]--DML、DDL、TCL语言

2022-08-01,,,,

DML语言(数据操作语言)

1.插入语句insert

语法1:

insert into 表名(列名...) values(值...)

注意:

1.插入的值的字段必须和值匹配

2.插入的值的类型必须和字段的数据类型一致

3.不可以为null(非空)的列必须插入值

可以为null的列如何插入数据信息

(1)给出列名并填写null值

(2)列名和值名都不写

4.列的顺序可以进行调换(数值顺序也要跟随列内容调换)

5.列数和值的个数一致与否

6.可以省略列名,默认所有列,

一定要注意插入信息列的顺序和表中的列的顺序一致

语法2:

insert into 表名 set 列名=值,......

两种写法的区别,第一种插入数据写法支持:

1.批量添加数据

2.支持子查询

2.修改语句update

修改表记录

(1)修改单表记录

对于单个或者多个列名都可以修改相应的值

语法:

update 表名

set 列名=值,列名=值...

where 筛选条件;

(2)修改多表记录

注意:表必须写别名

语法:

sql92标准:

update 表1 别名,表2 别名

set 列=值......

where 连表条件

and 筛选条件;

sql99标准:

update 表1 别名

inner/left/right 表2 别名

on 连表条件

set 列=值......

where 筛选条件;

3.删除语句delete、truncate

(1)delete:整行删除,一删一行

1.1单表删除

语法:

delete from 表名 where 筛选条件;

1.2多表删除

语法:

sql92标准:

delete 表1 别名,表2 别名

from 表名

where 连表条件

and 筛选条件;

sql99标准:

delete 表1 别名,表2 别名

from 表1 别名,

inner/left/right 表2 别名

on 连表条件

where 筛选条件;

(2)truncate:整表删除(清空整表)

语法:

TRUNCATE TABLE 表名;

delete和truncate的区别:

1.delete可以加where 筛选条件,truncate不能加

2.truncate删除的效率高

3.假如需要删除的表中有自增长列

如果用delete删除后,再插入数据,自增长列的值从断点开始。

用truncate删除后,再插入数据,自增长列的值从1开始

4.truncate删除没有返回值,delete删除有返回值

5.truncate删除不能回滚,delete删除能回滚

 

DDL语言(数据定义语言)

创建 create

修改 alter

删除 drop

1.库的管理

创建

CREATE DATABASE IF NOT EXISTS books;

修改库名

RENAME DATABASE 旧库名 TO 新库名;

修改库的字符集

ALTER DATABASE 库名 CHARACTER SET 字符集;

删除

DROP DATABASE 库名;

2.表的管理

创建

语法:

CREATE TABLE 表名(

列名 列的类型[(长度),约束]

列名 列的类型[(长度),约束]

列名 列的类型[(长度),约束]

......);

修改

(1)修改表名

ALTER TABLE 旧表名 RENAME TO 新表名;

(2)修改列名

ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 列的类型;

(3)修改列的类型

ALTER TABLE 表名 MODIFY COLUMN 列名 新类型;

(4)添加新列add

ALTER TABLE 表名 ADD COLUMN 新列名 类型;

(5)删除列drop

ALTER TABLE 表名 DROP COLUMN 列名;

删除表

DROP TABLE IF EXISTS 表名;

复制

复制表的结构

CREATE TABLE copy LIKE 表名;

复制表的结构和数据

CREATE TABLE copy2 SELECT * FROM 表名;

复制表的部分数据

CREATE TABLE copy3 SELECT 字段1,字段2 FROM 表名 WHERE nation='中国';

复制表的部分字段

CREATE TABLE copy4 SELECT 字段1,字段2 FROM 表名 WHERE 1=2;

3.完整性约束:

3.1主键约束

表中有一列或者多列的组合,要求主键字段的数据的唯一性,并且不能为空。

单字段约束:

在定义字段的同时定义主键

字段名 数据类型 primary key

->字段名1 数据类型(字段约束条件) primary key,

在定义完字段后定义主键

primary key(字段名);

多字段约束:

primary key(字段名1,字段名2,...)

3.2主键自增约束:

每次插入新的信息时,系统会自动递增生成字段的主键值

在一个表上自动递增的字段只有一个

字段名 数据类型 primary key auto_increment;

3.3外键约束:

外键就是在不同的表之间建立链接,一个表可以有一个或者多个外键

外键不一定是本表的主键,但对应的是另一个表的主键

与外键关联的字段不允许被删除,如果必须要删除首先要将外键撤销

foreing key(字段名) reference 主表名(主键字段);

3.4非空约束:

字段值不能为空

字段名 数据类型 not null;

3.5唯一性约束:

对某字段使用此约束,允许为空,但是只出现一个空值

字段名 数据类型 unique;

4.约束

含义:一种限制,用来限制表中的数据,为了保证数据的可靠性和准确性

常见约束(六大约束)

NOT NULL:非空约束,用来保证该字段对应的值不能为空(姓名、学号)

DEFAULT:默认约束,用来保证该字段有默认值(性别)

PRIMARY KEY:主键约束,用来保证该字段的值具有唯一性,并且非空(员工编号),约束性最强

UNIQUE:唯一约束,保证该字段的值具有唯一性,对应的值能为空(座位号)

CHECK:检查约束,【mysql中不支持check约束】(性别) 约束性条件

FOREIGN KEY:外键约束,用来限制两个表的关系

要有保证两表连接的字段

用来保证该字段的值必须来自于主表的关联列

CREATE TABLE 表名(

字段名1 字段类型 列级约束

字段名2 字段类型 列级约束

表级约束

4.1添加约束的时机:

1.创建表时

2.修改表时

4.2约束的分类:

1.列级约束

支持六大约束,外键约束没有效果

2.表级约束

除了非空、默认约束以外其他都支持

4.3创建表时添加约束:

4.3.1列级约束:直接在字段名和类型后面追加约束类型

支持默认、非空、唯一、主键

4.3.2表级约束:在所有字段的最后面

CONSTRAINT 约束名 约束类型(字段名)

4.4修改表时添加约束:

4.4.1列级约束:

ALTER TABLE 表名 MODIFY COLUMN 字段 字段类型 新约束;

4.4.2表级约束:

ALTER TABLE 表名 ADD 新约束(字段);

4.5修改表时删除约束

4.5.1删除外键约束

ALTER TABLE 表名 DROP FOREIGN KEY 外键连接名;

5.标识列

含义:类似于约束的自增长列

可以不用手动插入值,系统提供默认的序列值

auto_increment_increment 每次增长的步长值

auto_increment_offset 偏移量(起始值)

特点:1.一个表里的标识列至多只有一个

2.标识列不一定和主键一起使用

标识列必须和约束一起使用

3.标识列可以进行数据设置

SET auto_increment_increment=步长值

添加标识列的时机:

1.创建表时

CREATE TABLE tab_indentity(

id INT PRIMARY KEY auto_increment,

NAME VARCHAR(20)

);

2.修改表时

ALTER TABLE 表名 MODIFY COLUMN 字段 约束 auto_increment;

3.修改表时删除标识列

ALTER TABLE 表名 DROP 约束 auto_increment;

 

TCL语言(事务控制语言)

1.事务:一个或者一组sql语句组成一个执行单元,这个执行单元

要么全部不执行,相互依赖

2.事务处理

数据库的存储引擎

回滚:事务执行失败,所有受到影响的数据将回到事物开始之前的状态

反之如果单元中的所有sql语句都执行成功,则事务被顺利执行

3.事务的特性ACID:

3.1原子性(Atomicity)

一个事物不可分割,执行单元要么全部执行,要么全部不执行

3.2一致性(Consistency)

一个事物会使数据从一个统一状态切换到另一个统一状态

3.3隔离性(Isolation)

事物之间的各自sql语句执行过程不受其他事物打扰

3.4持久性(Durability)

一个事物一旦提交,则会永久的改变数据库的数据

4.事物创建

检查事务提交的状态

4.1隐式事务的创建:事务没有明显的开启和结束的标记

insert update delete

4.2显式事务的创建:事务有明显的开启和结束的标记

1.注意,显式事务的创建之前必须禁用自动提交功能

SET autocommit=0;

2.开启事务

SET autocommit=1;

START TRANSACTION;(可选)

3.编写事务中sql语句(select insert update delete)

语句一;

语句二;

......

4.结束事务

Rollback;回滚

Commit;提交

Savepoint;设置节点保存

5.视图的讲解

含义:虚拟的表,和数据库中普通表一样使用

创建:

create view 视图名

as

查询语句;

删除:

DROP VIEW 视图名

 

本文地址:https://blog.csdn.net/qq_45207305/article/details/107419072

《[数据库]--DML、DDL、TCL语言.doc》

下载本文的Word格式文档,以方便收藏与打印。