MySQL:概念简章

1.SQL通用语法

  1. SQL单行、多行书写,以分号结尾
  2. SQL可以以空格有缩进增加代码可读性
  3. SQL语句不区分大小写

2.SQL语句分类

2.1 DDL(数据定义语言) 

 用于数据库、数据表、字段的定义的语言

create by 表名 (表里有什么字段);

create table employee
(name   varchar(10) comment '姓名',age    tinyint unsigned comment '年龄',idcard char(10) comment '身份证',tel    char(11) comment '手机号'
);# name、age、idcard、tel为表里面的字段,
varchar()、char等即数据以什么类型存储进表
comment后面接注释

2.2 DML(数据管理语言) 

对表格内容进行增、删、改操作所用到的语言 

增 

INSERT INTO 表名 (字段) VALUE (值);

字段可省略不写

insert into employee (id, age, sex, address) value (1, 1, '男', '南京');
INSERT INTO 表名 VALUE (值);
insert into employee value (4, 4, '女', '深圳');

  

批量添加数据
INSERT INTO 表名 (值), (值);
insert into employee value (5, 5, '男', '桂林'), (6, 6, '男', '长沙');

 改

UPDATE 表名 SET 字段名1 = 值, 字段名2 = 值, [WHERE 条件];
如果没有添加条件即把整个表的内容修改
update employee set id = 6 where id <= 6;
将表格中符合id <= 6的数据id改为6

 删

DELETE FROM 表名 (条件);
DELETE * FROM 表名    若不添加条件即把整个表的数据进行删除
delete from employee where sex = '女';
将表内条件sex为女的数据删除
delete from employee;
将表格内所有数据删除

 2.3 DQL(数据查询语言) 

基础查询 

SELECT 字段1, 字段2 FROM 表名;
SELECT FROM 表名;   若不添加字段即查询整个表
#查询数据
#基础查询
# SELECT 字段1, 字段2 FROM 表名;
#1.查询指定字段内容并返回
select name, age
from employee;# SELECT 字段1 AS 别名1, 字段2 AS 别名2 FROM 表名;
#2.查询指定字段内容,起别名后返回
select name as '姓名', age as '年龄', idcard as '身份证'
from employee;
#两种写法效果一样,as可以省略
select name '姓名', age '年龄', idcard '身份证'
from employee;# SELECT * FROM 表名; 此时即查询整个表(不建议这么写)
# 建议将所有要查询的字段通通写入,可读性高
#3.查询整个表并返回
select *
from employee;#4.去除表中重复数据后返回
# 关键字distinct可以去除重复数据
select distinct name '姓名'
from employee;
select distinct age '姓名'
from employee;

条件查询

#1.查询年龄为18的
select age '年龄'
from employee
where age = 18;#2.查询身份证为空的个人信息
insert into employee value ('张飞', 18, null, '10086'),('关鱼', 19, null, '10087'),('刘备', 20, '100403', '1093343');
select *
from employee
where idcard is null;#3.查询18和19岁的所有人物,用or和in实现
#用or实现
select *
from employee
where age = 18or age = 19;
#为了简化这繁琐的语法,推出in
select *
from employee
where age in (18, 19, 20);#4.查询大于18小于21的人物
select *
from employee
where age > 18and age < 20;#5.查询在某个范围内的数据
# between and关键字
select *
from employee
where age between 18 and 19;#6.模糊匹配
select *
from employee
where name like '__';
insert into employee value ('牛比', 66, '10000x', 'null');
# %可以匹配任意字符
select *
from employee
where idcard like '%x';

分组查询 

select 字段 from 表名 where (过滤条件) group by 分组字段名 having 分组过滤条件
where和having执行时机不同,where是在分组前对数据进行过滤,having是对分组后的数据进行过滤
where后不能接聚合函数,而having可以
-- 1.查询男女性员工数量
select age, name from employee;
select sex, count(*) from employee group by sex;-- 2.根据性别分组,统计男女员工平均年龄
select sex, avg(age) from employee group by sex;-- 3.查询年龄小于43的员工,并根据工作地址分组,获取员工数量大于3的工作地址
select address, count(*) '数量' from employee where age < 43 group by address;
select address, count(address) '数量' from employee where age > 43 group by address having 数量 >= 3 ;

排序查询 

select 字段 from 表 order by 排序的内容
asc升序 desc降序 默认升序排序
select * from employee order by age asc ;

 分页查询

select 字段 from 表 limit 起始索引, 查询数量 
/*查询数量为第一页时,起始地址可以省略
起始索引从0开始,查询页数可以是(页数-1 * 数量),查询数量
分页查询是数据库的方言,sql的分页查询数limit*/
select * from employee limit 0, 5 ;select * from employee order by age asc limit 0 ,5;select * from employee order by age desc limit 10, 10;

 查询顺序

-- 编写顺序
-- 从哪个表里面查询条件为什么的数据
select 字段列表 from 表格列表 where 条件列表 group by 分组字段列表 having 分组后条件列表 order by 排序字段顺序 limit 分页参数
-- 访问顺序
从哪个表格里,查询条件为,什么的数据进行分组,分组后进行条件过滤,过滤后展示字段列表和分组后的条件列表,将该列表进行排序,最后展示符合条件的数据
真实访问顺序:1. from 2. where 3. group by 4. having 5. select 6. order by 7. limit

 

2.4 DCL(权限控制语言) 

 

3. 函数 

3.1 字符串函数 

-- CONCAT(s1, s2, ...) 字符串拼接函数
select concat('hello', ' mysql');-- lower(str) 将字符串所有字母转换为小写
select lower('HeLLo');-- upper(str) 将字符串所有字母转换为大写
select upper('HeLLo');-- lpad(str, n, padstr) 字符串左填充函数:str字符串内容,n填充后总长度,padstr填充内容
select lpad('niubi', 10, '-0');-- rpad(str, n, padstr) 字符串右填充函数:str字符串内容,n填充后总长度,padstr填充内容
select rpad('niubi', 10, '-');-- trim(str) 去除头尾部空格
select TRIM(' hello world ');-- substr(str, start,len) 字符串截取函数:截取的主串,截取的起始位置,截取的长度
select substr('hello world', 1, 7);-- 练习1.企业员工工号统一为五位数,不足五位数的统一在前面补0
update employee set name = lpad(name, 10, '0');
update employee set name = rpad(name, 10, ' ');

 3.2 数值函数

-- ceil(x) 向上取整函数
select ceil(1.01);-- floor(x) 向下取整函数
select floor(1.01);-- mod(x, y) 取模函数,x % y
select mod(2, 3);-- rand() 随机数函数,随机返回一个0-1之间的随机数
select rand();-- round(x) 四舍五入函数
select round(2.33);
select round(2.56);-- 练习:通过数据库函数,随机生成6位数的验证码
select substr(rand() * 1000000, 1, 6);

 3.3 日期函数 

-- curdate() 返回当前年月日
select curdate();-- curtime() 返回当前时分秒
select curtime();-- now() 返回当前年月日时分秒
select now();-- year() 获取指定日期的年份
select year(now());-- month() 获取指定日期的月份
select month(now());-- day() 获取指定日期的的日期号
select day(now());-- date_add(日期, interval 增加的日期):函数最终返回增加后的日期
select date_add(now(), interval 20 day);
select date_add(now(), interval 20 year);
select date_add(now(), interval 20 month );-- datediff(date1, date2) 两个日期间隔天数
select datediff('2028-3-7', '2025-3-7');

 3.4 流程函数

-- if(true/false, 值1, 值2):为真则为值1,假则为值2
select if(false, 1, 'error');-- ifnull(值1, 值2):值1为空则返回值2,否则反之
select ifnull(null, 2);-- case 查询内容 when 内容是否等于该值 then 返回值1 else 返回默认值 and
-- when then 可以有多个,一个then对应一个when,从when开始依次向后匹配,匹配则返回当前when对应的then,否之返回默认值
-- case when 查询内容是否满足条件,满足返回对应的then,所有when都不匹配则返回默认值
select name,(case address when '深圳' then '一线城市' when '广州' then '一线城市' else '二线城市' end) '工作地址'
from employee;select name,(case when age < 21 then '后生仔' when age = 21 then '半后生仔' else '老年仔' end) '状态'
from employee;

 4. 约束

create table user (id int primary key auto_increment comment '工号',name varchar(10) unique not null comment '姓名',age int check ( age > 0 and age < 120 ) comment '年龄',stauts char(1) default '1' comment '状态',gender char(1) comment '性别',dept_id int comment '所属部门'
) comment '用户表';

 外键约束的增删改

-- 添加外键约束
-- alter table 表名(子表) add constraint 外键名称 foreign key (添加到该子表的哪个字段) references 父表的(哪个字段)
-- 改变user表 添加外键约束名为fm_emp_dept_id 该约束添加到user中的dept_id字段,该约束来自父表dept的id字段
alter table user add constraint fm_emp_dept_id foreign key (dept_id) references dept(id) ;-- 删除外键
-- 删除user表名为fm_emp_dept_id字段
alter table user drop foreign key fm_emp_dept_id;
-- 在删除父表的内容时,若该内容与子表有关联,即是子表的外键时,默认采取中止删除/更新的操作
-- 即默认采取 no action 或者 restrict
-- no action 在删除/更新父表内容时,首先检查子表是否与改内容关联,如果有则不允许删除/更新操作
-- restrict  在删除/更新父表内容时,首先检查子表是否与改内容关联,如果有则不允许删除/更新操作
-- cascade   在删除/更新父表内容时,首先检查子表是否与该内容有关联,如果有则一并删除
-- set null  在删除/更新父表内容时,首先检查子表是否与该内容关联,如果有则将子表的该键置空
alter table user add constraint fm foreign key (dept_id) references dept(id) on delete cascade on update cascade ;
alter table user drop foreign key fm;alter table user add constraint fm foreign key (dept_id) references dept(id) on delete set null on update set null;

5. 多表查询

-- 多表查询的四种方式
-- 方式一:内连接
-- 内连接分为:隐式内连接、显示内连接
-- 方式二:外连接
-- 外连接分为:左外连接、右外连接
-- 方式三:自查询
-- 方式四:子查询

案例演示所用到的两张表 

-- 新建员工表
create table emp
(id      int unique primary key comment '工号',name    varchar(10) comment '姓名',age     tinyint unsigned comment '年龄',dept_id     int comment '部门id',address varchar(10) comment '住址'
) comment '员工表';-- 销毁表
drop table emp;-- 新建部门表
create table dept
(id     int primary key auto_increment comment '部门工号',name   varchar(10) unique comment '部门名称'
);-- 往员工表提娜佳数据
insert into emp value (1, '冰冰', 18, 2, '广州'),(2, '缓缓', 18, 2, '南京'),(3, '圆圆', 18, 2, '深圳'),(4, '菲菲', 18, 3, '广州'),(5, '小张', 20, 3, '深圳'),(6, '老王', 40, 1, '广州'),(7, '老黄', 60, null, null);-- 往部门表添加数据
insert into dept value (1, '人事部'),(2, '销售部'),(3, '财务部');

5.1 内连接 

显示两张表的交集部分的数据

-- 内连接:显示两张表交集部门的数据
-- 需求:查询员工姓名,年龄以及相关部门
-- 隐式内连接
-- 连接的表:emp, dept
-- 查询连接条件:e.dept_id = d.id
select e.name, d.name from emp e , dept d where e.dept_id = d.id;-- 显示内连接
-- 连接的表:emp, dept
-- 查询连接条件:e.dept_id = d.id
-- inner 可省略不写
select e.name, d.name from emp e inner join dept d on e.dept_id = d.id;
select e.name, d.name from emp e join dept d on e.dept_id = d.id;

 5.2 外连接

显示一张表的所有数据以及两张表的交集部分数据 

-- 外连接:显示整张表的数据以及两张表的交集数据
-- 需求:显示员工表的所有数据,以及员工表在部门表所处的部门数据
-- 左外连接实现:
select * from emp e left outer join dept d on e.dept_id = d.id;-- 需求:显示部门表的数据,以及该部门内的员工信息
-- 右外连接实现
select * from emp e right outer join dept d on e.dept_id = d.id;
-- 也可以左外连接实现
select * from dept d left outer join emp e on d.id = e.dept_id;

 5.3 自查询 

-- 自查询
-- 查询员工名字以及所处部门,没有部门的也要显示
select e.name, d.name from emp e left outer join dept d on e.dept_id = d.id;

5.4 联合查询 

将多张表查询的结果合并成一张表并返回该表 

-- 联合查询-- union all:即将两张表直接合并并且返回-- 去掉关键字all即可实现数据去重在返回
-- 联合查询:即将多次查询的结果合并成一张表显示出来
-- 注意:联合查询的多张表查询的内容(查询的字段内容)必须保持一致,不然会报错无法查询
-- 如:查询emp表的id、name,而dept表一样有id、name,故可以查询成功,将两张表的数据内容合并成一张表并返回
select e.id, e.name from emp e
union
select * from dept d;-- 错误案例:
-- 此时两张表里面的字段内容并不保持一致,故要同时查询两张表的所有内容并合成一张表返回会失败
select * from emp
union
select * from dept;-- 案列:查询emp表在广州工作和年龄小于20的员工
select * from emp where address = '广州'
union
select * from emp where age < 20;

 5.5 子查询

SQL查询语句嵌套查询即子查询 

-- 子查询-- sql查询语句中嵌套查询即子查询-- 可嵌套在from、where、
-- 1.标量子查询:查询返回的结果为单个
-- 2.行子查询:查询返回结果为一行
-- 3.列子查询:查询返回结果为一列
-- 4.表子查询:查询返回结果为表

 5.5.1 标量子查询

子查询返回的结果为单个数据

-- 标量子查询
-- 需求:查询销售部的员工信息
-- 1.先查询销售部id
select id from dept where name = '销售部';
-- 2.后通过返回的销售部id查询该部门内地员工信息
select * from emp where dept_id = ( select id from dept where name = '销售部' );

 5.5.2 列子查询

子查询返回结果为一列(即多行)数据 

-- 列子查询-- 关键字:in:在该范围内任意一个满足即可--      not in:不再该范围内的数据即可--      all:所有--      any、some:任意一个
-- 需求:查询多个部门的所有员工信息
-- 1.先查询销售部和财务部id
select id from dept where name in ('销售部','财务部');
-- 2.通过返回结果获取该部门内的所有员工信息
select * from emp where dept_id in ( select id from dept where name = '销售部' or name = '财务部') ;-- 需求:查询比财务部所有员工年龄都大的员工信息
-- 1.先获取销售部所有员工
select id from dept where name = '财务部';
-- 2.获取销售部所有员工年龄
select age from emp where dept_id = ( select id from dept where name = '财务部' );
-- 3.获取比以上年龄都大的员工信息
select name, age from emp where age > all (select age from emp where dept_id = ( select id from dept where name = '财务部' ));-- 需求:查询比财务部任意一人年龄小的员工
-- 1.获取财务部id
select id from dept where name = '财务部';
-- 2.获取财务部的所有年龄
select age from emp where dept_id = (select id from dept where name = '财务部');
-- 3.比任意一人年龄都大,关键字any 或者 some
select name ,age from emp where age > any (select age from emp where dept_id = (select id from dept where name = '财务部'));
select name ,age from emp where age < some (select age from emp where dept_id = (select id from dept where name = '财务部'));

 5.5.3 行子查询

子查询返回的结果为一行数据(即多列) 

-- 行子查询
-- 需求:查询与冰冰的年龄及所处部门相同的员工信息
-- 1.查询冰冰年龄及所处部门id
select age, dept_id from emp where name = '冰冰';
-- 2.通过返回的一行信息查询与该行信息完全一致的员工信息
select name, age, dept_id from emp where age = 18 and dept_id = 2;
select name, age, dept_id from emp where (age, dept_id) = (select age, dept_id from emp where name = '冰冰');

 5.5.4 表子查询  

子查询返回结果为一个表 

-- 表子查询
-- 需求:查询冰冰和菲菲年龄以及部门相同的员工信息
-- 1.查询冰冰和菲菲的信息
select age, dept_id from emp where name in ('菲菲', '冰冰');
-- 2.查询与以上信息相同的员工信息
select * from emp where (age, dept_id) in (select age, dept_id from emp where name in ('菲菲', '冰冰'));

 

6. 事务 

MySQL中的事务是一种机制,也是一个操作序列,它包含了一组数据库操作命令。这些命令被作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。事务是一个不可分割的工作逻辑单元,特别是在数据库系统上执行并发操作时,事务被视为最小的控制单元。它特别适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等,通过事务的整体性来确保数据的一致性。

事务需要符合以下特点:

  1. 原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元。整个事务中的所有操作要么全部提交成功,要么全部失败。对于一个事务来说,不可能只执行其中的一部分操作。
  2. 一致性(Consistency):一致性是指事务将数据库从一种一致性状态转换到另外一种一致性状态。在事务开始之前和事务结束后,数据库数据的完整性没有被破坏。
  3. 隔离性(Isolation):隔离性要求一个事务对数据库中数据的修改,在未提交完成前对于其它事务是不可见的。这确保了并发执行的事务之间不会相互干扰。
  4. 持久性(Durability):一旦事务提交,对数据的修改就是永久的,即使系统出现故障也不会丢失数据。

以一个简单的例子来理解事务:假设要向公司添加一名新员工,这个过程可能包括在员工数据库中为员工创建一条新记录(分配员工ID、分配岗位等),为新员工分配部门,以及建立员工的工资和奖金记录。所有这些操作都需要在一个事务中完成,以确保数据的完整性和一致性。如果其中任何一个步骤失败,整个事务都会回滚,所有已经执行的操作都会被撤销,数据库将回到事务开始前的状态。

-- 事务
insert into account value (1, 'zhangsan', 1000);
insert into account value (2, '李四', 2000);
update account set name = '张三' where name = 'zhangsan';-- 事务的操作
-- 查看/设置事务的提交方式
-- 系统默认自动提交,默认值为1
select @@autocommit;
-- 设置事务手动提交
set @@autocommit = 0;-- 开启事务 (start transaction / begin 都可以开启事务
start transaction ;
begin ;-- 1.张三金额-1000
update account set money = money - 1000 where name = '张三';
-- 2.李四金额+1000
update account set money = money + 1000 where name = '李四';-- 提交事务
commit ;-- 回滚事务
rollback ;

 并发事务问题

脏读:一个事务读取到另一个事务未提交的数据

不可重复读:同一个事务前后两次读取的数据不一致

幻读:查询时显示没有该数据,插入该数据时又显示数据已存在 

  

-- 查看事务的隔离级别
select @@transaction_isolation;
-- 设置事务的隔离级别
set transaction isolation level read uncommitted ;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

幼儿园管理系统|基于springboot框架+ Mysql+Java+Tomcat的幼儿园管理系统设计与实现(可运行源码+数据库+设计文档+部署说明)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 用户功能模块 管理员功能登录前台功能效果图 教师功能模块 系统功能设计 数据库E-R图设计 lunwen参…

项目安全保证措施word

软件系统做项目安全保证措施的原因有以下几点&#xff1a; 保护数据安全&#xff1a;通过安全措施可以保护数据不被非法获取、篡改或损坏。 保障系统稳定&#xff1a;安全措施可以减少系统受到的威胁&#xff0c;确保系统的稳定运行。 符合法律法规&#xff1a;为了遵守国家和地…

蓝桥杯单片机快速开发笔记——定时器

一、基本原理&#xff1a; 定时器的作用&#xff1a; 定时器是一种用于产生精确时间延时的模块&#xff0c;可以在程序中用来进行时间控制、计时等操作。 定时器的工作原理&#xff1a; 51单片机的定时器是通过内部的计数器来实现的&#xff0c;计数器每隔一个固定的时间周期自…

Selenium 自动化 —— 入门和 Hello World 实例

Selenium 是什么 Selenium 是一个用于自动化网页浏览器操作的工具&#xff0c;它支持多种浏览器和多种操作系统。主要用于测试 web 应用程序的功能&#xff0c;也可用于执行一些基本的浏览器操作任务&#xff0c;例如自动化表单填写、网页导航等。 Selenium 是一个开源项目&a…

kakfa模拟仿真篇之spark-submit在linux运行 (更贴近真实场景)

源码在上篇 地址在这 &#xff1a;Kafka模拟器产生数据仿真-集成StructuredStreaming做到”毫秒“级实时响应StreamData落地到mysql-CSDN博客 这里分享一下一些新朋友不知道spark-submit 指令后 的参数怎么写 看这篇绝对包会 声明&#xff1a; 此项目是基于 maven 打包的说明…

JVM 相关知识点记录

文章目录 前言哪些内存需要回收方法区的垃圾回收垃圾收集算法垃圾收集器年轻代进入老年代条件内存担保机制FullGC 触发时机GC日志解析日志参数 前言 JVM包含内容&#xff1a; 类装载子系统(Class Load SubSystem)运行时数据区(Run-Time Data Areas) 堆栈 局部变量表操作数栈动…

某赛通电子文档安全管理系统 DecryptApplication 任意文件读取漏洞(2024年3月发布)

漏洞简介 某赛通电子文档安全管理系统 DecryptApplication 接口处任意文件读取漏洞&#xff0c;未经身份验证的攻击者利用此漏洞获取系统内部敏感文件信息&#xff0c;导致系统处于极不安全的状态。 漏洞等级高危影响版本*漏洞类型任意文件读取影响范围>1W 产品简介 …

数据结构 day4 链表

1&#xff1a; 2: 3: 4: 5: 6:

C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码

1 分词 分词是自然语言处理的基础,分词准确度直接决定了后面的词性标注、句法分析、词向量以及文本分析的质量。英文语句使用空格将单词进行分隔,除了某些特定词,如how many,New York等外,大部分情况下不需要考虑分词问题。但有些情况下,没有空格,则需要好的分词算法。…

CSS 3

CSS3现状 在CSS2的基础上新增(扩展)样式移动端支持优于PC端不断改进中应用相对广泛 1.CSS3属性选择器 选择符简介E[att]选择具有att属性的E元素E[att"val"]选择具有att属性且属性值等于val的E元素E[att^"val"]匹配具有att属性、且具有以val开头的E元素E…

AJAX 01 AJAX 概念和 axios 使用

2.27 AJAX 学习 AJAX 1 入门01 AJAX 概念和 axios 使用axios 使用案例 02 认识 URLURL组成 03 URL 查询参数axios&#xff0d;查询参数案例 &#xff1a;地区查询 04 常用请求方法和数据提交axios 请求配置axios 错误处理 05 HTTP协议-报文① 请求报文作用&#xff1a;错误排查…

数据结构:堆

堆的概念 1.堆是一个完全二叉树 2.小堆(任何一个父亲<孩子),大堆(任何一个父亲>孩子) 堆的结构 物理结构:数组 逻辑结构:二叉树 #pragma once #include<assert.h> #include<iostream> typedef int HPDataType; typedef struct Heap {HPDataType* _a;int…

使用 Jenkins 管道在 Docker Hub 中构建 Docker 镜像

Jenkins Pipeline 是一个强大的工具&#xff0c;可以自动执行部署。在各个阶段之间拆分的灵活和自定义操作是尝试此功能的一个很好的理由。 构建您自己的 Docker 镜像并将其上传到 Docker Hub 以保持存储库更新是了解 Jenkins Pipeline 如何改进您的工作方式的一个很好的示例。…

产品推荐 - 基于Xilinx Kintex-7 XC7K160T/325T/410T打造的水星Mercury+ KX2核心板

水星Mercury KX2核心板 水星Mercury KX2核心板提供高性价比的Xilinx Kintex-7 28nm FPGA和常见的接口&#xff0c;如USB 2.0、PCIe Gen2和千兆以太网。 KX1有强大的FPGA和标准接口、很多具备LVDS能力的I/O、大容量DDR3 SDRAM、很多高速DSP slices&#xff0c;它既适合高端数字信…

第五十八回 吴用赚金铃吊挂 宋江闹西岳华山-飞桨图像分割套件PaddleSeg初探

鲁智深被贺太守抓住&#xff0c;押入死牢。武松得信后&#xff0c;正想回梁山报信&#xff0c;正好戴宗来了&#xff0c;就请戴宗赶快回梁山搬救兵。宋江说兄弟有难&#xff0c;怎能不救&#xff1f; 于是带了十六个头领来到少华山。 因为华州城池厚壮&#xff0c;宋江等无计可…

【开源】SpringBoot框架实验室耗材管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…

JavaEE之多线程(创建线程的五种写法)详解

&#x1f63d;博主CSDN主页: 小源_&#x1f63d; &#x1f58b;️个人专栏: JavaEE &#x1f600;努力追逐大佬们的步伐~ 目录 1. 前言 2. 操作系统"内核" 3. 创建线程的五种写法 (我们重点要掌握最后一种写法!!) 3.1 继承 Thread, 重写 run 3. 2 实现 Runnabl…

电脑坏了去维修,第一家报价800,第三家说报废!

这篇文章主要讲的是修理坏掉的电脑。 第一家报价300&#xff0c;第二家报价800&#xff0c;第三家说要报废&#xff01; 相信很多朋友对于修电脑坏了要多少钱有很多困惑&#xff0c;修电脑坏了要多少钱&#xff0c;到底去正规售后服务还是去非品牌店维修一台坏掉的电脑。 今天高…

Jmeter扩展---自定义取样器

简介 Jmeter已经内置了各种协议的取样器&#xff0c;已经能满足常用的性能压测需求。且在前面一章Jmeter扩展开发--自定义java取样器-CSDN博客中也有关于Java取样器的扩展开发&#xff0c;不过有时候我们期望能定制自己的取样器和界面。为此&#xff0c;需要对Jmeter做扩展&am…

界面控件DevExpress ASP.NET Scheduler - 助力快速交付个人信息管理系统(下)

DevExpress ASP. NET Scheduler组件能完全复制Microsoft Outlook Scheduler的样式和功能&#xff0c;具有日、周、月和时间轴视图&#xff0c;并包括内置的打印支持&#xff0c;因此用户可以在尽可能短的时间内交付全功能的个人信息管理系统。在上文中&#xff08;点击这里回顾…