[数据库]--DML、DDL、TCL语言
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
推荐阅读
-
DDL、DML、TCL
-
数据库语句分类:DDL、DML、DCL
-
SQL语句的数据操作语言 (DML) 和 数据定义语言 (DDL)使用介绍
-
数据库笔记6--基本SQL语言的增删改查与DDL(哈工大)
-
MySQL 基础+高级篇- 数据库 -sql -尚硅谷130-134章DDL语言完结
-
数据库语言分类DDL、DCL、DML详解
-
SQL语言分类:DCL,DDL,DML,DQL,的区别讲解
-
Oracle数据库基本操作(一) —— Oracle数据库体系结构介绍、DDL、DCL、DML
-
SQL语言的分类(DQL、DML、DDL、DCL的概念与区别)
-
MySQL数据库笔记三:数据查询语言(DQL)与事务控制语言(TCL)