当前位置: 首页 > news >正文

Mysql数据库之常用SQL语句及事务学习总结

数据库介绍

几个常见的缩写:

  • DB:数据库。全称:DataBase。
  • DBMS:数据库管理系统。全称:DataBase Management System。
  • DBS:数据库系统。全称:DataBase System。
  • DBA:数据库管理员。全称:DataBase Administrator。

DBS、DBMS、DB三者关系:DBS包含DB、DBMS。

数据库定义:

数据库:按照一定的数据结构来组织、存储和管理数据。

数据库相关SQL

连接数据库:

mysql -u 用户名 -p 密码

退出数据库:

exit

查看所有数据库

show databases;

创建数据库

create database 数据库名称 character set utf8;

查看数据库详情

show create database 数据库名称;

使用数据库

use 数据库名称;

删除数据库

drop database 数据库名称;

数据表相关SQL

操作数据表之前一定要先使用数据库。只有使用了具体的数据库,才能在该数据库下创建数据表。

创建数据表

create table 表名称 (表字段);

指定数据库引擎和字符集创建数据表

create table 表名称 (表字段) engine=innodb charset=utf8;

数据库引擎有两个:innodb和myisam。默认数据库引擎是innodb。

查看已创建的所有数据表

show tables;

查看数据表详情

show create table 数据表名称;

查看表字段信息

desc 数据表名称;

删除数据表

drop table 数据表名称;

修改表相关SQL

修改数据表名称

rename table 原数据表名称 to 新数据表名称;

修改数据表引擎和字符集

alter table 数据表名称 engine=charset=字符集;

添加数据表字段

// 默认添加的字段放在所有字段最后面
alter table 数据表名称 add 字段名称 字段类型;// 将新添加的字段放在最前面
alter table 数据表名称 add 字段名称 字段类型 first;// 将新添加的字段放在某个字段后面
alter table 数据表名称 add 字段名称 字段类型 after 字段名称;

删除数据表字段

alter table 数据表名称 drop 字段名称;

修改表字段名称和类型

alter table 数据表名称 change 原字段名称 新字段名称 字段类型;

修改表字段类型和位置

// 修改后,字段还在原来位置
alter table 数据表名称 modify 字段名称 字段类型;// 修改后,在所有字段最前面
alter table 数据表名称 modify 字段名称 字段类型 first;// 修改后,在某个字段后面
alter table 数据表名称 modify 字段名称 字段类型 after 字段名称;

数据相关的SQL

插入数据(INSERT)

// 全表全字段插入
insert into 数据表名称 (字段1,字段2,字段3...) values (字段1的值,字段2的值,字段3的值...);// 特定字段插入
insert into 数据表名称 (字段1,字段2) values (字段1的值,字段2的值);// 一次插入多条数据
insert into 数据表名称 (字段1,字段2,字段3...) values(字段值...),(字段值...),(字段值...).....;

删除数据(DELETE)

// 删除全部数据
delete from 数据表名称;// 删除指定数据
delete from 数据表名称 where 条件;

修改数据(UPDATE)

// 修改全部数据
update 数据表名称 set 字段1 =1;// 指定条件修改
update 数据表名称 set 字段1 =1 where 修改条件;// 修改多字段
update 数据表名称 set 字段1 =1,字段2 =2 where 修改条件;

注意:修改对字段时,使用逗号隔开,不能使用and连接。

查询数据(SELECT)

// 查询全部数据
select * from 数据表名称;// 查询指定字段
select 字段1,字段2 from 数据表名称;// 条件查询
select 字段1,字段2 from 数据表名称 where 条件;// 排序查询:desc表示降序,asc表示升序
select * from 数据表名称 order by 字段 desc/asc;// 分组查询
select * from 数据表名称 group by 字段;// 含有条件的分组查询
select * from 数据表名称 group by 字段 having 条件;// 分页查询:limit m,n表示跳过m条数据,查询出n条数据。下面的limit 0,5表示跳过0条数据,查询5条数据
// 因此查询出前5条数据。
select * from 数据表名称 limit 0,5;

查询的语句非常丰富,可以是上面的所有查询语句结合使用。格式如下:

select * from 数据表名称 where 条件 order by 字段 desc/asc group by 字段 limit 0,5;

数据表字段约束

主键约束

  • 主键是指能够唯一确定该条数据的字段。
  • 主键是唯一且非空的。
  • 约束是指创建数据表时,给某些字段添加的限制条件。
// 为id添加主键约束
create table 数据表名称 (id int primary key
) default charset=utf8;

主键约束代码:

primary key

自增约束

  • 自增约束是指该字段的值自动增加。
  • 自增规则:从数据表中最大值基础上,自增。
  • 自增约束一般和主键一起使用,称为:主键自增约束。
// 创建自增约束
create table 数据表名称 (id int primary key auto_increment
) default charset=utf8;

自增约束代码:

auto_increment

非空约束

  • 限制某个字段的值不能为空。
create table 数据表名称 (name varchar(20) not null
) default charset=utf8;

非空约束代码:

not null

唯一约束

  • 限制某个字段的值是唯一的,只能在数据表中出现一次。
create table 数据表名称 (name varchar(20) unique
) default charset=utf8;

唯一约束代码:

unique

设置字段默认值约束

  • 当没有为某个字段插入数据值时,如果该字段具有默认值约束,则会插入默认值。
  • 如果为含有默认值约束的字段,插入null值,则不会触发默认值约束,而是插入null。
create table 数据表名称 (age int default 1
) default charset=utf8;

插入数据时:

// 主动插入数据值,不会触发默认值约束
insert into 数据表名称 (age) values (20);// 插入null时,不会触发默认值约束
insert into 数据表名称 (age) values (null);// 不插入,则会触发默认值约束,下面这条插入语句会插入1
insert into 数据表名称 values();

外键约束

  • 外键就是用于和另外的数据表建立关系的字段。
  • 外键的值可以为null。但是不能是关联表中没有的数据值。
  • 如果建立外键约束,那么在删除时,不能先删除关联表中的数据以及数据表,需要先删除对应外键的数据。
create table 数据表名称 (id int,deptid int contraint 约束名 foreign key(外键字段名) references 被依赖的表名(被依赖的字段名)
);

注释comment

  • comment用于说明字段的含义。
create table 数据表名称 (id int comment '用户id',name varchar(50) comment '用户名'
) default charset=utf8;

数据冗余

  • 由于表设计的不合理,出现了大量重复的数据,称为数据冗余。
  • 解决方案:可以将重复的数据提取出来,单独设计为一张表,然后和另一张表建立外键约束。

事务

事务的定义

  • 事务是数据库中能够执行同一业务多条语句的工作单元,它能够保证多条语句要么全部成功,要么全部失败。

事务的ACID特性

  • 原子性(Atomicity):事务是一个不可分割的工作单元,要么全部成功,要么全部失败。
  • 一致性(Consistency):事务执行之前是一个完整的状态,执行完成之后,是另一个完整的状态。
  • 隔离性(Isolation):多个用户并发访问数据库时,一个用户的事务不会影响另一个用户的事务。
  • 持久性(Durability):一个事务一旦提交,那么它对数据库的操作就是永久的。

事务相关SQL(TCL)

开启事务

begin;

提交事务

commit;

事务提交会将内存中对数据操作改动,一次性提交到磁盘当中。

回滚事务

rollback;

回滚事务会将内存中对数据库的改动清除,从而保证数据库的数据不受影响。

保存回滚点

savepoint 自定义回滚点名称;

回滚到某个回滚点

rollback to 回滚点名称;

使用事务模拟银行账户流程:

  • 创建一个测试数据库:mytest
create database mytest character set utf8;
  • 选择数据库
use mytest;
  • 创建一张测试数据表:test
create table test (id int primary key auto_increment comment '账户id',name varchar(20) not null comment '用户名称',money int default 0 comment '账户余额',status varchar(10) not null comment '账户状态'
) default charset=utf8;
  • 插入两条测试数据:
insert into test (name,money,status) values ('张三',2000,'正常');
insert into test (name,money,status) values ('李四',500,'冻结');
  • 只有账户状态是**“正常”**的用户才能转账成功。
  • 开启事务
begin;
  • 执行转账业务:李四给张三转账200。
update test set money = money + 200 where name = '张三' and status = '正常';update test set money = money - 200 where name = '李四' and status = '正常';
  • 修改之后,可以查询结果。
select * from test;

注意:如果是在刚刚执行了事务的窗口查看数据,则会出现下面的内容:

在这里插入图片描述

这是因为查询的是当前内存中的数据。其实数据库中的数据是没有改变的。可以新开一个窗口进行查看即可知道。

  • 新开一个窗口,再次查询。

在这里插入图片描述

这是因为开启了事务,没有提交之前,都不会对数据库中的数据进行持久性修改。

因为修改失败,所以可以使用回滚。

  • 回滚事务
rollback;

相关文章:

Mysql数据库之常用SQL语句及事务学习总结

数据库介绍 几个常见的缩写: DB:数据库。全称:DataBase。DBMS:数据库管理系统。全称:DataBase Management System。DBS:数据库系统。全称:DataBase System。DBA:数据库管理员。全称…...

RuoYi若依管理系统最新版 基于SpringBoot的权限管理系统

RuoYi是一个后台管理系统,基于经典技术组合(Spring Boot、Apache Shiro、MyBatis、Thymeleaf)主要目的让开发者注重专注业务,降低技术难度,从而节省人力成本,缩短项目周期,提高软件安全质量。 本…...

html实现邮件模版布局-flex布局table布局-demo

邮件模版布局 flex - 布局简单方便 兼容性差 table - 优点 就是兼容性好&#xff0c;其他没有优点 注&#xff1a;使用图片需要png最好&#xff0c;使用svg图google邮箱会出现不能使用的情况 效果图 flex布局 <!DOCTYPE html> <html lang"en" xmlns:th&qu…...

CENTOS7安装redis在/home/pms/software路径下,并且将redis加入到systemctl中

要将/home/software/redis-stack-server-7.2.0-v0/service/redis.service添加到systemctl系统管理&#xff0c;你可以执行以下步骤&#xff1a; 创建软连接&#xff1a; sudo ln -s /home/software/redis-stack-server-7.2.0-v0/service/redis.service /etc/systemd/system/r…...

数据库笔记

数据库原理及应用 半期考&#xff1a;运筹学&#xff0c;概率论&#xff0c;数据库 文章目录 数据库原理及应用1.课程的考核2.数据库的运用3.数据库学什么&#xff1f; 第一章 绪论1.1数据库系统概述1.1.1基本概念1.1.2数据管理技术的生产和发展人工管理文件系统数据库系统 1.…...

AI是风口还是泡沫?

KlipC报道&#xff1a;狂热的人工智能追捧潮有所冷静&#xff0c;投资者在“上头”的追涨之后&#xff0c;开始回归到对基本面的关注。 KlipC的合伙人Andi D表示&#xff1a;“近日&#xff0c;有关英伟达二季度“破纪录”财报涉嫌造假的话题正在社交媒体和投资者论坛中甚嚣尘上…...

echarts环图配置

echarts环图配置 1、安装echarts npm install echarts4.9.02、页面引入echarts import echarts from echarts;3、应用 template片段 <div class"chart-wrap"><div id "treeChart" style "width: 180px; height:180px;" ><…...

Redis优化 RDB AOF持久化

---------------------- Redis 高可用 ---------------------------------------- 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境…...

三维模型3DTILE格式轻量化压缩主要技术方法浅析

三维模型3DTILE格式轻量化压缩主要技术方法浅析 三维模型3DTILE格式轻量化压缩主要技术方法浅析 随着三维地理空间数据的应用日益广泛&#xff0c;为了更快速地传输和存储这些大规模数据&#xff0c;3DTile格式的轻量化压缩显得尤为重要。本文将浅析关于三维模型3DTile格式轻量…...

c++day2---9.7

1> 思维导图 2> 封装一个结构体&#xff0c;结构体中包含一个私有数组&#xff0c;用来存放学生的成绩&#xff0c;包含一个私有变量&#xff0c;用来记录学生个数&#xff0c; 提供一个公有成员函数&#xff0c;void setNum(int num)用于设置学生个数 提供一个公有成员…...

地震反演基础知识2(代码演示)

文章目录 数据集代码演示1. SEG盐真实数据2. SEG盐速度模型3. SEG盐模拟地震数据4. SEG盐模拟速度模型5. openfwi地震数据6. openfwi速度模型 数据集代码演示 1. SEG盐真实数据 # 绘制SEG盐层数据的地震图像 def pain_seg_seismic_data(para_seismic_data):Plotting seismic …...

C#学习 - 方法的定义、调用、调试

方法 方法&#xff08;Method&#xff09;是由C/C中的函数&#xff08;Function&#xff09;发展而来的 //C语言 #include <stdio.h> int Add(int x, int y) {return x y; }//函数 int main(void) {int a 4;int b 2;int c Add(a, b);printf("%d %d %d\n&quo…...

『PyQt5-Qt Designer篇』| 09 Qt Designer中分割线和间隔如何使用?

09 Qt Designer中分割线和间隔如何使用? 1 间隔1.1 水平间隔1.2 垂直间隔2 分割线2.1 水平线2.2 垂直线3 保存并执行1 间隔 间隔有水平间隔和垂直间隔: 1.1 水平间隔 拖动4个按钮,并设置为水平布局: 在第一个按钮的右边添加一个水平间隔: 设置其sizeType为Fixed,宽度为20…...

基于springboot2+mybatis-plus+jsp增删改查

概述 编写简单增删改查&#xff0c;理解之后可以自己试着扩展&#xff0c;相信你也可以&#xff0c;加油&#xff0c;我自己懂了的用注释记在下面方便理解 详细 一、需求&#xff08;要做什么&#xff09; 基于现今最流行的技术实现增删改查demo&#xff0c; 便于初学者上手…...

[PHP]empty一直返回true

class Post {public function __get($key){return true;} }$post new Post(); var_dump(empty($post->a));// bool(true) PHP: 重载 - Manual 读取不可访问&#xff08;protected 或 private&#xff09;或不存在的属性的值时&#xff0c;__get() 会被调用。 当对不可访…...

[2023.09.11]: Yew的SSR中的Cargo.toml配置

由于各种原因&#xff0c;我最后还是打算把Yew应用的开发从csr模式转成ssr模式。没想到这里面的水还是挺深的&#xff0c;这里面的Cargo.toml配置包含的信息量之大&#xff0c;着实让我头疼了一番。 Cargo.toml的配置如下 [package] name "app" version "0.…...

HTTPS加密协议详解:HTTPS性能与优化

1、HTTPS性能损耗 前文讨论了HTTPS原理与优势&#xff1a;身份验证、信息加密与完整性校验等&#xff0c;且未对TCP和HTTP协议做任何修改。但通过增加新协议以实现更安全的通信必然需要付出代价&#xff0c;HTTPS协议的性能损耗主要体现如下&#xff1a; (1).增加延时 分析前…...

9月11日,每日信息差

今天是2023年09月11日&#xff0c;以下是为您准备的13条信息差 第一、微软已停止向俄罗斯提供服务&#xff0c;俄罗斯接下来的举动震惊世人&#xff01;对此俄罗斯回应称&#xff0c;他们将把微软的收费版改为免费版并推广至全球 第二、我国首套海洋漂浮式温差能发电装置完成…...

RHCSA-VM-Linux基础配置命令

1.代码命令 1.查看本机IP地址&#xff1a; ip addr 或者 ip a [foxbogon ~]$ ip addre [foxbogon ~]$ ip a 1&#xff1a;<Loopback,U,LOWER-UP> 为环回2网卡 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP>为虚拟机自身网卡 2.测试网络联通性&#xff1a; [f…...

Web安全研究(四)

No Honor Among Thieves: A Large-Scale Analysis of Malicious Web Shells Stony Brook University Ruhr-University Bochum Web shell作为恶意脚本&#xff0c;攻击者将其上传到被攻陷的Web服务器&#xff0c;以远程执行任意命令、维护其访问权限并提升其特权。尽管在实践中它…...

【CS324】Large Language Models(持续更新)

note 文章目录 note一、引言二、大模型的能力三、大模型的有害性&#xff08;上&#xff09;四、大模型的有害性&#xff08;下&#xff09;五、大模型的数据Reference 一、引言 语言模型最初是在信息理论的背景下研究的&#xff0c;可以用来估计英语的熵。 熵用于度量概率分布…...

【学习笔记】「2020-2021 集训队作业」Communication Network

有点难&#x1f605; 发现容斥系数设计的非常巧妙&#x1f914; 设 f ( i ) f(i) f(i)表示恰好有 i i i条边相同的方案数&#xff0c; g ( i ) g(i) g(i)表示至少有 i i i条边相同的方案数 根据二项式反演&#xff0c; g ( i ) ∑ j ≥ i ( j i ) f ( j ) ⇒ f ( i ) ∑ j…...

文章参考链接

文章参考&#xff1a; 前端 echsrt横轴文字过长&#xff0c;…展示【link】js数组去重【link】js数据是String去重【link】js数据是对象去重【link】小程序使用wxml-to-canvas【link】vantui【link】微信小程序使用vantui组件【link】【link】微信小程序&#xff0c;选项卡页面…...

SQLI-labs-第七关

知识点&#xff1a;单引号&#xff08;&#xff09;加括号闭合错误的布尔盲注 思路&#xff1a; 寻找注入点 我们首先看一下正常的回显&#xff0c;并没有显示出什么明显的信息 输入?id1 发现报错 输入?id1 -- 还是报错&#xff0c;说明SQL语句的语法错误可能不是单引号闭合…...

腾讯云轻量2核4G5M服务器_CPU内存_流量_带宽_系统盘

腾讯云轻量2核4G5M服务器&#xff1a;CPU内存流量带宽系统盘性能测评&#xff1a;轻量应用服务器2核4G5M带宽&#xff0c;免费500GB月流量&#xff0c;60GB系统盘SSD盘&#xff0c;5M带宽下载速度可达640KB/秒&#xff0c;流量超额按照0.8元每GB支付流量费&#xff0c;轻量2核4…...

从零开始搭建Apache服务器并使用内网穿透技术实现公网访问

Apache服务安装配置与结合内网穿透实现公网访问 文章目录 Apache服务安装配置与结合内网穿透实现公网访问前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpo…...

unordered_map和unordered_set的使用

前言 在C98中&#xff0c;STL提供了底层为红黑树的结构的一系列关联式容器&#xff0c;在查询时效率可以达到logN&#xff0c;即使最差的情况下需要比较红黑树的高度次&#xff0c;当树中的节点较多时&#xff0c;查询的效率也不是很理想&#xff0c;最好的查询是&#xff0c;进…...

javascript【格式化时间日期】

javascript【格式化时间日期】 操作&#xff1a; (1) 日期格式化代码 /*** 日期格式化函数<br/>* 调用格式&#xff1a;需要使用日期对象调用* <p> new Date().Format("yyyy/MM/dd HH:mm:ss"); </p>* param fmt 日期格式* returns {*} 返回格式化…...

CCC数字钥匙设计【NFC】--什么是AID?

1、NFC中的AID是什么&#xff1f; AID&#xff0c;英文全称为Application Identifier&#xff0c;这是NFC技术中的概念&#xff0c;AID用于唯一标识一个应用。 NFC应用的AID相关操作&#xff0c;包括注册和删除应用的AID、查询应用是否是指定AID的默认应用、获取应用的AID等 …...

变压器耐压试验电压及电源容量的计算

被试变压器的额定电压为&#xff08;11081. 25%&#xff09; /10. 5kV&#xff0c; 联接组标号为 YNd11。 试验时高压分接开关置于第 1 分接位置&#xff0c; 即高压侧电压为 126kV&#xff0c; 高、 低压电压比 K1126/&#xff08;√310. 5&#xff09; 6. 93。 现以 A 相试验…...

wordpress这么安装不了/百度指数查询移动版

---创建测试环境&#xff1a;E1表&#xff0c;模拟大量重复值的表&#xff1b; SQL> create table e1 as select * from emp; SQL> insert into e1 select * from e1; 112 rows created. SQL> commit; --如何提取去重后的数据呢&#xff1f; select distinct empno,sa…...

有哪些做批发的网站/域名查询 站长查询

以织梦官方站为例&#xff0c;我们采集站长学院下的PHP教程栏目&#xff0c;打开列表地址http://www.dedecms.com/web-art/PHP_jiaocheng。 登录后台&#xff0c;进入“采集节点管理”&#xff0c;新建一个节点&#xff0c;选择内容模型为“普通文章”。1.设置节点基本信息先填…...

网站页面建设规划文案/2021谷歌搜索入口

如果是评估版本&#xff0c;则需要先把评估版本升级为正式版本&#xff0c;才能正确的使用。 1.管理员模式运行cmd,输入命令:DISM /online /Get-CurrentEdition&#xff0c;得到结果&#xff1a; 部署映像服务和管理工具 版本: 10.0.14393.0 映像版本: 10.0.14393.0 当前版本为…...

竞网做的网站怎么样/充电宝关键词优化

子选择器 引用链接&#xff1a;http://blog.csdn.net/u012110719/article/details/41171517 还有一个比较有用的选择器子选择器&#xff0c;即大于符号(>),用于选择指定标签元素的第一代子元素。如右侧代码编辑器中的代码&#xff1a; .food>li{border:1px solid red;} 这…...

网站代码优化的方法/seo 知乎

bitset的好处很多&#xff0c;尤其是第一次接触到这个结构的人。觉得只需要一个key就可以很简单的处理这个标志位的数据&#xff0c; 甚至说几个亿的offset占用内存也会很小。但在项目实际使用过程中还是要好好算算这笔账的。 bitset占用的内存是用最大的offset来决定的&#x…...

网站建设与设计致谢/网络营销推广流程

这部分内容比较繁琐&#xff0c;但很简单&#xff0c;在此条理地介绍一下。 1.首先&#xff0c;介绍&#xff1a;对类中成员的访问方式 先举一个例子&#xff0c;了解水平访问和垂直访问 #include "iostream.h" using namespace std; class A { private: in…...