二、SQL基础学习(函数、约束、事务)

目录

  • 1、函数
    • 1.1、字符串函数
    • 1.2、数值函数
    • 1.3、日期函数
    • 1.4 、流程函数
  • 2、约束
    • 2.1、外键约束
    • 2.2、删除/更新行为
  • 3、事务
    • 3.1、事务的四大特性
    • 3.2、并发事务问题
    • 3.2、事务的隔离级别

1、函数

1.1、字符串函数

在这里插入图片描述

# concat
select concat('Hello', ' MySql');

# lower
select lower('Hello');
# upper
select upper('Hello');

# lpad
select lpad('01', 5, '-');
# rpad
select rpad('01', 5, '-');

# trim
select trim(' Hello MySql ');

# substring
select substring('Hello MySql', 1, 5);

eg:用于业务需求变更,企业员工的工号,统一为5位数,目前不足5位数的全部在前面补0,比如:1号员工的工号应该为00001.

update emp set workno = lpad(workno, 5, '0');

在这里插入图片描述

1.2、数值函数

在这里插入图片描述

# ceil
select ceil(1.1);

# floor
select floor(1.9);

# mod
select mod(2,4);
select mod(6,4);

# rand
select rand();

# round
select round(2.345, 2);
select round(2.344, 2);

eg:# 通过数据库的数据,生成一个六位数的随机验证码

select lpad(round(rand() * 1000000,0), 6, '0');

1.3、日期函数

在这里插入图片描述

# curdate
select curdate();

# curtime
select curtime();

# now
select now();

# year(date)
select year(curtime());

# month(date)
select month(curtime());

# day(date)
select day(curtime());

# data_add(date, interval expr type)
select date_add(curtime(), interval 70 year);
select date_add(curtime(), interval 70 month);
select date_add(curtime(), interval 70 day);

# datediff(date1, date2)
select datediff('2020-12-01','2020-11-01');

eg:查询所有员工的入职天数,并根据入职天数倒叙排序

select name ,datediff(curdate(), entrydate) as entryday from emp order by entryday desc;

1.4 、流程函数

在这里插入图片描述

# if
select if(true, 'ok', 'error');
select if(false, 'ok', 'error');

# ifnull
select ifnull('ok', 'default');
select ifnull('', 'default');
select ifnull(null, 'default');

# case when then else end
# 查询emp表的员工姓名和工作地址(北京/上海--->一线城市,其他 ----> 二线城市)
select
    name,
    (case workadderss when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
from emp;

在这里插入图片描述

select
    name,
    (case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end) as '数学',
    (case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end) as'英语',
    (case when chinese >= 85 then '优秀' when chinese >= 60 then '及格' else '不及格' end) as '语文'
from score;

2、约束

  1. 概念:约束是作用于表字段上的规则,用于限制存储在表中的数据。

  2. 目的:保证数据库中数据的正确、有效性和完整性。

  3. 分类:
    在这里插入图片描述
    注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。

举例:
在这里插入图片描述

create table user(
    id int primary key auto_increment comment '主键',
    name varchar(10) not null unique comment '姓名',
    age int check ( age > 0 and age <= 120 ) comment '年龄',
    status char(1) default '1' comment '状态',
    gender char(1) comment '性别'
)comment '用户表';

insert into user(name, age, status, gender) values ('Tom', 19, '1', '男'), ('Jack', 25, '0', '男');
insert into user(name, age, status, gender) values ('Anson',19, '1', '男');
select * from user;

-- insert into user(name, age, status, gender) values (null, 19, '1', '男');  # name不为空
-- insert into user(name, age, status, gender) values ('Anson',19, '1', '男'); # 已经存在

insert into user(name, age, status, gender) values ('Tom4', 80, '1', '男');
-- insert into user(name, age, status, gender) values ('Tom5', -1, '1', '男');  # check检查
insert into user(name, age, status, gender) values ('Tom4', 121, '1', '男');     #check检查

insert into user(name, age, gender) values ('Tom5', 80, '男');       # default语句

2.1、外键约束

外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。

---添加外键
alter table 表名 add constraint 外键名称 foreign key(外键字段名) references 主表(主表列名);
---举例
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);


---删除外键
alter table 表名 drop foreign key 外键名称;
---举例
alter table emp drop foreign key fk_emp_dept_id;

在这里插入图片描述

在这里插入图片描述

2.2、删除/更新行为

在这里插入图片描述

alter table 表名 add constraint 外键名称 foreign key (外键字段) references 主表名(主表字段名) on update cascade on delete cascade;
---举例(级联更新)
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update cascade on delete cascade ;

在这里插入图片描述
在这里插入图片描述

alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id) on update set null on delete set null;

在这里插入图片描述

3、事务

一组操作的集合,是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
默认MySQL的事务时自动提交的,也就是说,当执行一条 DML语句马,MySQL会立即隐式的提交事务。

举例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时执行完语句,数据没有发生变化。需要执行commit语句
在这里插入图片描述
执行错误,执行回滚事务。(rollback)

在这里插入图片描述

3.1、事务的四大特性

在这里插入图片描述

3.2、并发事务问题

在这里插入图片描述

3.2、事务的隔离级别

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466912.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity InputField实现框自适应内容简便方法

要实现InputField框自适应输入内容&#xff0c;除了通过代码进行处理&#xff0c;还可以是使用以下简便的方法。 1、创建InputField组件&#xff1a;右键->UI->Input Field -TextMeshPro。 2、把Input Field Settings中的Line Type设置为Multi Line Newline模式&#x…

探索NFT数字藏品交易平台:发现新的数字艺术世界

探索NFT数字藏品交易平台&#xff1a;发现新的数字艺术世界 随着数字化时代的来临&#xff0c;NFT&#xff08;非同质化代币&#xff09;技术正在改变艺术市场的格局&#xff0c;使得数字艺术品成为热门投资对象。而要进入这个令人兴奋的领域&#xff0c;您需要了解一些主要的…

区间和(图论)

小明与小红在玩一个猜谜游戏。小红有一个长度为N的下标从1开始的数组A。起初时&#xff0c;小明并不知道数组里的任何数。但是小红会告诉小明Q个关于数组A的信息&#xff0c;每个信息包括三个数字L、R、W表示&#xff1a;A[L] A[L 1] ... A[R] W 现在小红要小明用这Q组信…

hadoop分布式环境搭建

准备三台centos虚拟机 。&#xff08;master&#xff0c;slave1&#xff0c;slave2&#xff09; (hadoop、jdk文件链接&#xff1a;https://pan.baidu.com/s/1wal1CSF1oO2h4dkSbceODg 提取码&#xff1a;4zra) 前四步可参考hadoop伪分布式环境搭建详解-CSDN博客 1.修改主机名…

免登录积分商城系统 动力商城 兑换商城源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 免登录积分商城源码/动力商城/兑换商城系统 之前互站买来的&#xff0c;看着还是很不错的&#xff0c;不需要注册登录的商城&#xff0c;东西完整。UI也挺漂亮&#xff0c;这相当于是…

全球造爆款,海尔智家凭什么?

据说&#xff0c;广东人是地球上最像三体人的群体&#xff0c;因为需要时刻小心脱水和浸泡的时机。 这是因为广东人每年春天都会经历的现实噩梦“回南天”。墙壁淌水、地板湿滑、衣服干不了……浸泡在回南天里的广东人&#xff0c;喜提最新地狱笑话&#xff1a;“广东人有望最…

.rmallox勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言&#xff1a; 近年来&#xff0c;勒索病毒的威胁日益增加&#xff0c;其中一种名为.rmallox的勒索病毒备受关注。这种病毒通过加密文件并勒索赎金来威胁受害者。本文将介绍.rmallox勒索病毒的特点&#xff0c;以及如何恢复被其加密的数据文件&#xff0c;并提供预防措施&a…

【kaggle竞赛】从手写图像数据集中正确识别数字

1. 题目&#xff1a; 在本次比赛中&#xff0c;您的目标是从数以万计的手写图像数据集中正确识别数字。 1.1. Goal 目标✨ 本次比赛的目标是拍摄手写个位数的图像&#xff0c;并确定该数字是什么。 对于测试集中的每个标签&#xff0c;您都应该预测正确的标签。 本次比赛的…

《我的AUTOSAR之路》ECUM(二) 唤醒处理

ECUM唤醒 1 EcuM 唤醒源2 EcuM 唤醒源配置3 Can 通道唤醒源调用解析1 EcuM 唤醒源 AUTOSAR 唤醒过程包含的步骤 检查唤醒源和上报唤醒时间唤醒源保护唤醒过程是独立于 EcuM 休眠阶段的,但是唤醒时间可以用于休眠阶段 在整个 Ecu 所有阶段,唤醒事件都可以存在唤醒不单单指 Ecu …

【Nutx3】middleware目录介绍

简言 记录下nuxt3middleware目录的使用方法。 middleware middleware是存放路由中间件的文件目录。 路由中间件有三种&#xff1a; 匿名&#xff08;或内联&#xff09;路由中间件直接在页面中定义。已命名的路由中间件&#xff0c;放在 middleware/ 中&#xff0c;页面使用…

4.1_4 文件的物理结构

文章目录 4.1_4 文件的物理结构&#xff08;一&#xff09;文件块、磁盘块&#xff08;二&#xff09;文件分配方式——连续分配&#xff08;三&#xff09;文件分配方式——链接分配&#xff08;1&#xff09;链接分配——隐式链接&#xff08;2&#xff09;链接分配——显式链…

慢sql优化

1.避免使用select *&#xff0c;而是明确列出需要的列&#xff0c; 2.小表驱动大表&#xff0c;in适用于左边大表&#xff0c;右边小表。 exists适用于左边小表&#xff0c;右边大表。 3.批量操作&#xff1a;如果每次插入数据库数据&#xff0c;都要连接一次数据库&#xf…

若依 ruoyi-cloud [网关异常处理]请求路径:/system/user/getInfo,异常信息:404

这里遇到的情况是因为nacos中的配置文件与项目启动时的编码不一样&#xff0c;若配置文件中有中文注释&#xff0c;那么用idea启动项目的时候&#xff0c;在参数中加上 -Dfile.encodingutf-8 &#xff0c;保持编码一致&#xff0c;&#xff08;用中文注释的配置文件&#xff0c…

杂货铺 | vscode配置C/C++环境(亲测极简ver)

文章目录 &#x1f4da;Step1&#xff1a;下载安装VSCode&#x1f4da;Step2&#xff1a;下载安装g&#x1f4da;Step3&#xff1a;编辑环境变量&#x1f4da;Step4&#xff1a;安装vscode插件&#x1f4da;Step5&#xff1a;建好文件夹⭐️&#x1f4da;Step6&#xff1a;开始…

linux(Ubuntu22) 一篇带你学会Linux,详细篇

Linux 简介 精通Linux&#xff0c;自带python&#xff0c;系统开源 电脑可安装双系统 c盘安装win D盘安装linux 在一套硬件上只能同时运行一个操作系统 虚拟机 模拟真实环境 在虚拟机内运行操作系统 需要硬件支持虚拟化 开启VT-X VM…

深度剖析:数字经济下人工智能水平的新测算模型数据集

数据来源&#xff1a;企业年报时间跨度&#xff1a;1991-2022年数据范围&#xff1a;各企业数据指标&#xff1a; 年份 股票代码 公司名称 总词频 词频加1取对数 人工智能 计算机视觉 图像识别 知识图谱 智能教育 增强现实 智能政务 特征提…

【小迪安全】学习cho1

介绍了一些名词&#xff1a; POC、EXP、Payload与Shellcode nc -lvvp 端口号 监听服务器端口 个人用机使用最多的是&#xff1a;windows10 服务器用机使用最多的是&#xff1a;Windows8&#xff0c;12&#xff0c;16 流量被防火墙拦截了&#xff0c;到这里进行给与权限 文件…

资深HR是如何做人力资源管理的?企业人力资源该如何分析?

人力资源管理旨在通过招聘、甄选、培训、薪酬、绩效、职业规划等多方面的有效手段&#xff0c;科学合理地管理企业的人力资源&#xff0c;以满足当前及未来的发展需求&#xff0c;并确保实现企业既定目标。在人才竞争激烈的时代&#xff0c;许多初涉人力资源领域的从业者都对人…

python 深度学习 记录遇到的报错问题12

本篇继python 深度学习 记录遇到的报错问题11_undefined symbol: __nvjitlinkadddata_12_1, version-CSDN博客 目录 一、AttributeError: module ‘tensorflow‘ has no attribute ‘app‘ 二、AttributeError: module tensorflow has no attribute placeholder 三、Attribu…

html密码访问单页自定义跳转页面源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 密码访问单页自定义跳转页面&#xff0c;修改了的密码访问单页&#xff0c;添加了js自定义密码跳转页面。需要正确输入密码才能跳转目标网址。 二、效果展示 1.部分代码 代码如下&…