欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-01 08:06:55
DML语言(数据操作语言)1.插入语句insert语法1:insert into 表名(列名...) values(值...)注意:1.插入的值的字段必须和值匹配2.插入的值的类型必须和字段的数据类型一致3.不可以为null(非空)的列必须插入值可以为null的列如何插入数据信息(1)给出列名并填写null值(2)列名和值名都不写4.列的顺序可以进行调换(数值顺序也要跟随列内容调换)5.列数和值的个数一致与否6.可以省略列名,默认所有列,一定要注意插入...

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

相关标签: 数据库 MySql