DML语言

  • 数据操作语言:
    • 插入:insert
    • 修改:update
    • 删除:delete

插入语句

方式一:经典插入语句

  • 语法
insert into 表名(列名1, 列名2, ...)
values (值1, 值2, ...);
  • 注意事项:
    1. 插入的值的类型与列的类型一致或兼容
    2. 可以为NULL的列可以插入NULL值,不为NULL的列必须插入值
    3. 列的顺序可以调换,但是插入的值必须和列相匹配
    4. 列数和值得个数必须相一致
    5. 可以省略列名,默认所有列,而且列的顺序和表中的顺序一致
insert into beauty
values(列1, 列2, ...);            //省略列名,默认所有列

方式二:

  1. 语法:
insert into 表名
set 列名1=值1,列名2=值2,...
  1. 案例:
insert into beauty
set id=19, name='章子怡',phone='110';

注意事项

  1. 方式一支持插入多行,方式二不行
  2. 方式一支持子查询,方式二不行

修改语句

修改单表的记录(*重点)

  1. 语法:
update 表名
set 列=新值,列=新值,...
where 筛选条件;
  1. 案例:修改boys表中id号位2的名称为张飞,魅力值10
update boys set boyname='张飞', usercp=10
where id=2;

修改多表得记录(了解即可)

  1. 语法:
sql92语法:
update 表1 别名, 表2 别名
set 列=值,...
where 连接条件
and 筛选条件

sql99语法:
update 表1 别名
inner 连接类型 join 表2 别名
on 链接条件
set 列=值,...

删除语句

  1. 方式一:delete
  • 删除整行
  • 单表的删除
语法:
delete from 表名 where 筛选条件
  • 案例:删除手机号以3结尾的女孩信息
delete from girls where phon like '%3';
  1. 方式二:truncate
语法:truncate table 表名
  • 案例:将魅力值>100的男神信息删除
truncate table boys;

DDL语言

  1. DDL数据定义语言
  2. 表和库的管理

库的操作

  1. 库的创建
  • 语法:
create database (if not exists)库名;
  1. 库的删除
  • 语法:
drop database if exists 库名;

表的管理

  1. 表的创建
  • 语法:
create  table 表名(	列名 列的类型【(长度) (约束)】,  //长度和约束可选	列名 列的类型【(长度) (约束)】,	...);
  • 案例:创建表Book
creat table book(	id int, #编号	bname varchar (20),  #图书名	authorid int,  #作者编号	publishdate datetime;  #出版日期);
  1. 表的修改
  • 语法:
alter table 表名 关键字 column 列名 列类型 约束
  • 修改列名
//参考上个案例,创建表bookalter table book change aolumn publish pubdate datetime;
  • 修改列的类型或约束
alter table book modify column pubtade timestamp;
  • 添加新列
alter table author add column annual double;
  • 删除列
alter table author drop column annual;
  • 修改表名
alter table  author rename to book_author;
  1. 表的删除
  • 语法:
drop table if exists book_author;
  • 通用的写法:
drop database if exists 旧库名;create database 新库名;drop table if exists 旧表名;create table 表名();
  1. 表的复制
  • 复制表的结构
create table copy like author;
  • 复制表的结构+数据
create table copy2select * from author;
  • 只复制部分数据
create table copy3select id, au_namefrom autorwhere nation='中国';
  • 复制部分结构
create table copy4select id, au_namefrom authorwhere 0;

常见的数据类型

数值型:		整型		小数:			定点型			浮点型字符型:		较短的文本:char、varchar		较长的文本:text,blob(较长的二进制数据)日期型

整型

  1. 分类:tinyint, smallint, mediumint, int\integer, bigint
  2. 特点:
  • 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,还需要添加unsigned关键字
  • 如果插入的数值超出了整型的范围,则插入的值为整型类型的最大值

小数

  1. 分类:
  • 浮点型: float(M, D) , double(M, D)
  • 定点型:dec(M, D) , decimal(M, D)
  1. 特点:
  • M:整数部位+加小数部位的总长度
  • D:小数部位长度
  • 如果超过范围,则插入临界值
  • M,D可以省略,如果是decimal,则默认M是10,D是0, 若是float和double,则会根据插入数值的精度来决定
  • 定点型精确度较高,如果要求插入数值的精确度较高如货币运算则考虑使用定点型

字符型

较短的文本:char、varchar
较长的文本:text,blob(较长的二进制数据)

  1. 特点:
          写法        M的意思                      特点        空间的耗费    效率  char     char(M)    最大的字符数,可以省略,默认为1  固定长度字符    比较耗费    较高varchar  varchar(M) 最大的字符数,不可以省略        可变长度字符    比较节省    较低

日期型

  1. 分类:date 只保存日期

    ​ time 只保存时间

    ​ year 只保存年

    ​ datetime 保存日期+时间

    ​ timestamp 保存日期+时间

  2. 特点:

			字节   范围          时区等的影响datetime     8    1000-9999         不受timestamp    4    1970-2038          受

常见约束

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

  2. 分类:

1. not null: 非空用于保证该字段值不能为空2. default: 默认,用于赋予该字段默认值3. primary key: 主键,用于保证该字段的值具有唯一性,并且非空4. unique:用于保证该字段的值的唯一性5. check:检查约束【MySQL中不支持】 6. foreing key:外键约束,用于限制俩个表的关系,用于保证该字段的值必须来自于主表的关联列的值,在从表添加外键约束,用于引用主表中某列的值
  1. 添加约束的时机:
1. 创建表时2. 修改表时
  1. 约束的添加分类:
1. 列级约束:	直接在字段名和类型后面追加约束类型即可	六大约束语法上都支持,但外键约束没有效果2. 表级约束:	在所有字段的最下面:constraint 约束名 约束类型(字段名)	除了非空、默认约束,其他都支持
  1. 主键与唯一:
		保证唯一性   是否允许为空   一个表中可以有多少个    是否允许组合主键		Y				N			一个				允许,不推荐唯一		Y				Y			多个 				允许,不推荐
  1. 外键约束
1. 要求在从表中设置外键关系2. 从表的外键列的类型和主表的关联列的类型要求一致或兼容,名称无要求3. 主表的关联列必须是一个key(一般是主键或唯一)4. 插入数据时,先插入主表,再插入从表,删除时相反# 添加外键约束:alter table stuinfo add constraint 表名字 foreing key(majorid) references major(id);
  1. 修改表时添加约束:
1. 添加列级约束:alter table 表名 modify column 字段名 字段类型 新约束2. 添加表级约束:alter table 表名 add [constraint 约束名] 约束类型(字段名) 【外键的引用】
  1. 修改表时删除约束:

数据库(二)_数据库

标识列

  1. 又称为自增长列,可以不用手动的插入值,系统提供默认的序列值
  2. 特点:
1. 标识列不一定要和主键搭配,但必须要和一个key搭配2. 一个表至多只有一个标识列3. 标识列的类型只能是数值型4.标识列可以通过 set auto_increment_incremennt= ;设置步长	可以通过手动插入值,设置起始值
  1. 修改表时设置标识列
alter table 表名 modify column 字段值 类型 key名 auto_incerment;
  1. 修改表时删除标识列
alter table 表名 modify column 字段值 类型;

TCL语言

  1. 事务控制语言,一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行,比如转账的过程

  2. 事务的特性

数据库(二)_数据库_02

  1. 事务的创建

数据库(二)_数据库_03

数据库(二)_数据库_04

  • 实例

数据库(二)_数据库_05

  1. 事务隔离级别

数据库(二)_数据库_06

数据库(二)_数据库_07

  • MySQL中默认隔离级别 repeatable read
  • oracle中默认级别 read committed
  • 查看隔离级别 :select @@tx_isolation;
  • 设置隔离级别 :
set session 或 global transaction isolation level 隔离级别;
  1. savepoint 节点名,设置保存点
# 演示savepoint的使用set autocommit = 0;start transaction;delete from account where id=25;savepoint a;  #设置保存点delete from account where id=28;rollback to a;  #回滚到保存点select * from account;结果:id=28还在,id=25没有