IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL单表&约束&事务 -> 正文阅读

[大数据]MySQL单表&约束&事务

DQL操作单表

排序

  • 语法格式:select 字段名 from 表名 [where 字段名 = 值 ] order by 字段名称 [ASC/DESC]
  • ASC 升序(默认)
  • DESC 降序
  • 组合排序,同时对多个字段进行排序:在字段1的基础上,再去使用字段2进行排序
  • 语法格式:select 字段名1 from 表名 [where 字段名 = 值 ] order by 字段名称 [ASC/DESC] , 字段名2 [ASC/DESC]
  • 组合排序的特点:如果第一个字段值相同,就按照第二个字段进行排序

聚合函数

  • 作用:将一列数据作为一个整体,进行纵向的计算的
  • 常用的聚合函数
count(字段)  统计记录数
sum(字段)    求和平均值
max(字段)    求最大值
min(字段)    求最小值
avg(字段)    求平均值
  • 语法格式:select 聚合函数(字段名) from 表名 [where 条件]

分组查询

  • 语法格式:select 分组字段/聚合函数 from 表名 group by 分组字段
  • group by 的分组过程
select * from emp group by sex;
第一步:将性别相同的数据分为一组,返回的是每组的第一条数据
  • 分组的目的:为了做统计操作,一般分组和聚合函数一起使用, 另外查询的时候要查询分组字段
  • 在分组之后,进行条件过滤 使用 having 判断条件
  • where 与 having 的区别
where 
1.在分组前进行过滤
2.where后面不能跟聚合函数
having
1.在分组后进行条件过滤
2.having 后面可以写聚合函数

limit关键字

  • 通过limit 去指定要查询的数据的条数 行数
  • 语法格式: select 字段 from 表名 limit offset , length;
  • 参数说明:offset : 起始行数 默认从0开始计数
  • 分页公式: 起始行数 = (当前页码 -1 ) * 每页显示条数

SQL约束

约束的作用

对表中的数据进一步的限制,从而保证数据的正确性、有效性、完整性。违反约束的不正确数据,将无法插入到表中。

常见的约束

约束名约束关键字
主键primary key
唯一unique
非空not null
外键foreign key

主键约束

特点不可重复 唯一 非空
作用用来表示数据库中的每一条记录

添加主键约束

语法格式:

方式一:  创建一个带有主键的表
                create table emp(
                           eid int primary key,
                           ename vachar(20),
                           sex char(1)
                );
方式二:创建表
              create table emp(
                         eid int,
                         ename vachar(20),
                         sex char(1),
                         primary key (eid);
                );
方式三:创建表之后再添加主键
              create table emp(
                           eid int ,
                           ename vachar(20),
                           sex char(1)
                );
                通过DDL语句,添加主键
                alter table emp add primary key(eid);

主键的自增

  • 关键字:auto_increment 主键的自动增长(字段类型必须是 整数类型)
创建主键的自增的表
  create table emp(
                           eid int primary key auto_increment,
                           ename vachar(20),
                           sex char(1)
                );

重新创建自增主键的表,自定义自增的起始位置
  create table emp(
                           eid int primary key,
                           ename vachar(20),
                           sex char(1)
  )auto_increment = 100;

delete 和 truncate 对自增长的影响

  • delete 删除表中所有数据,将表中的数据逐条删除,对自增没有影响,继续之前的自增
  • truncate 删除表中的所有数据,是将整个表删除,然后在创建一个结构相同的表。删除后,从1开始增加

非空约束

  • 特点:某一列不允许为空
  • 语法格式: 字段名 字段类型 not null
  create table emp(
                           eid int primary key auto_increment,
                           ename vachar(20) not null,
                           sex char(1)
                );

唯一约束

  • 特点:表中的某一列不能够重复(对 null 值,不做唯一判断)
  • 语法格式:字段名 字段类型 unique
  create table emp(
                           eid int primary key auto_increment,
                           ename vachar(20) unique,
                           sex char(1)
                );

主键约束和唯一约束的区别

  • 主键约束,是唯一的且不能为空
  • 唯一约束,唯一但可以为空
  • 一个表中只能由一个主键,但是可以有多个唯一约束

默认值

  • 特点: 用来指定某一列的默认值
  • 语法格式:字段名 字段类型 default 默认值
  create table emp(
                           eid int primary key,
                           ename vachar(20),
                           sex char(1) default '女'
                );

数据库事务

什么是事务

事务是一个整体,由一条或多条SQL语句组成,这些SQL语句要么都执行成功,要么都执行失败 ,只要有一条SQL出现异常,整个操作就会回滚,整个业务执行失败

  • 回滚
    即在事务运行过程中发生了某种故障,事务不能继续执行,系统将事务对数据库中的所有已完成的操作全部撤销,滚回到事务最开始时的状态(在提交之前执行)

  • mysql事务操作
    手动提交事务
    1.开启事务 start transaction ; 或者 begin;
    2.提交事务 commit;
    3.回滚事务 rollback;

    自动提交事务
    mysql默认的提交方式 自动提交事务
    每执行一条DML语句 都是一个单独的事务

取消自动提交

登录mysql,查看autocommit状态:show variables like ‘autocommit’;
on:自动提交
off:手动提交

事务的四大特性ACID

特性含义
原子性每个事务都是一个整体,不可再分,事务中所有的SQL语句要么都执行成功,要么都失败
一致性事务在执行前数据库的状态与执行后数据库的状态保持一致。
隔离性事务与事务之间不应该相互影响,执行时保持隔离的状态
持久性一旦事务执行成功,对数据库的修改是持久的。就算关机,数据也是要保存下来的

MySQL事务隔离级别

数据并发访问

一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库,数据库的相同数据可能被多个事务同时访问,如果不采取隔离措施,就会导致各种问题,破坏数据的完整性

并发访问会产生的问题

事务在操作时的理想状态:所有的事务之间保持隔离,互不影响。因为并发操作,多个用户同时访问同一个数据。可能引发并发访问的问题

并发访问的问题说明
脏读一个事务读取到了另一个事务中尚未提交的数据
不可重复读一个事务中两次读取到的数据内容不一致,要求的是在一个事务中多次读取时数据是一致的,这是进行update操作时引发的问题
幻读一个事务中,某一次的select操作得到的结果所表征的数据状态,无法支撑后续的业务操作,查询得到的数据状态不准确,导致幻读

四种隔离级别

  • read uncommitted:读未提交 可以防止的问题:无
  • read committed :读已提交 可以防止的问题:脏读,不可重复读(Oracle默认的隔离级别)
  • repeatable read:可重复读 可以防止的问题:脏读,不可重复读(MySQL默认的隔离级别)
  • serializable:串行化 可以防止的的问题:脏读,不可重复读,幻读

注意:隔离级别从小到大,安全性是越来越高的,但效率是越来越低的。
根据不同的情况选择对应的隔离级别

隔离级别的相关命令

1.查看隔离级别
select @@tx_isolation;
2.设置隔离级别
set global transaction isolation level 级别名称;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:59:50  更:2022-07-04 23:03:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:45:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码