[JavaWeb复习笔记系列-02]MySQL
1、MySQL基础
1.1 数据库基本介绍
数据库是存储数据的仓库,本质上是一个文件系统,以文件的方式存储数据到计算机上。所有的关系型数据库都可以使用通用的 SQL 语句进行管理。
MySQL是开源免费的数据库,小型的数据库,已经被 Oracle 收购了。MySQL6.x 版本也开始收费。选择MySQL的原因是免费且功能强大。
1.2 数据库的登陆
MySQL 是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的 root 账号,使用安装时设置的密码即可登录。
1.2.1 使用DOS命令方式启动
登陆格式1:mysql -u用户名 -p密码
登陆格式2:mysql -h地址 -u用户名 -p密码
登陆格式3:mysql --host=ip地址 --user= 用户名 --password= 密码
1.2.2 使用可视化工具–SQLyog
SQLyog是业界著名的Webyog公司出品的一款简洁高效、功能强大的图形化MySQL数据库管理工具。使用SQLyog 可以快速直观地让您从世界的任何角落通过网络来维护远端的 MySQL 数据库。
1.3 MySQL安装后的目录结构
MySQL的目录结构 | 描述 |
---|---|
bin文件夹 | 所有mysql的可执行文件,如:mysql.exe |
MySQLInstanceConfig.exe | 数据库的配置向导,在安装时出现的内容 |
data文件夹 | 系统必须的数据库所在的目录 |
my.ini 文件 | mysql 的配置文件,一般不建议去修改。 |
c:\ProgramData\MySQL\MySQL Server 5.5\data | 我们自己创建的数据库所在的文件夹 |
1.4 数据库管理系统
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中表内的数据。
数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体 User 的数据。
数据库管理系统、数据库和表的关系如图所示:
一个数据库服务器包含多个数据库,一个数据库包含多张表,一张表包含多条记录。数据库在计算机上以文件夹的形式存在,表以文件的形式存在。
1.5 SQL的概念
SQL是Structured Query Language 结构化查询语言,是一种所有关系型数据库的查询规范,不同的数据库都支持。通用的数据库操作语言,可以用在不同的数据库中。不同的数据库 SQL 语句有一些区别。
SQL语句主要有以下分类:
1)Data Definition Language (DDL 数据定义语言) 如:建库,建表
2)Data Manipulation Language(DML 数据操纵语言),如:对表中的记录操作增删改
3)Data Query Language(DQL 数据查询语言),如:对表中的查询操作
4)Data Control Language(DCL 数据控制语言),如:对用户权限的设置
即,对于数据库服务器的使用,无非就是操作数据库(文件夹)、操作数据表(文件)。、
1.6 MySQL的语法
每条语句以分号结尾,如果在 SQLyog 中不是必须加的。SQL 中不区分大小写,关键字中认为大写和小写是一样的,但建议关键字用大写,方便阅读。当行注释是两个但斜杠加空格“-- ”,多行注释是“/**/”,还有mysql独有的注释“#”。
1.7 DDL(数据定义语言)
Data Definition Language (DDL 数据定义语言) 就是建立数据库(文件夹)和建立数据表(文件)的语法,详细介绍如下:
1.7.1 创建数据库、数据表
创建数据库的三种格式:
-- 直接创建数据库
-- CREATE DATABASE 数据库名;
CREATE DATABASE db1;-- 判断是否存在,如果不存在则创建数据库
-- CREATE DATABASE IF NOT EXISTS 数据库名;
CREATE DATABASE IF NOT EXISTS db2;-- 创建数据库并指定字符集为 gbk
-- CREATE DATABASE 数据库名 CHARACTER SET 字符集;
CREATE DATABASE db3 CHARACTER SET gbk;
创建数据表的格式:
/*CREATE TABLE 表名 (字段名 1 字段类型 1,字段名 2 字段类型 2);
*/
CREATE TABLE student (id INT, -- 整数name VARCHAR(20), -- 字符串birthday DATE -- 生日,最后没有逗号
);-- 快速创建一个表结构相同的表:CREATE TABLE 新表名 LIKE 旧表名;
CREATE TABLE s1 LIKE student;
1.7.2 查看数据库、数据表
查看数据库:
-- 查看所有的数据库
SHOW DATABASES;-- 查看正在使用的数据库
SELECT DATABASE(); 使用的一个 mysql 中的全局函数-- 使用/切换数据库:USE 数据库名;
USE db1;-- 查看某个数据库的定义信息
SHOW CREATE DATABASE db3;
SHOW CREATE DATABASE db1;
查看数据表(前提是进入数据库):
-- 先进入数据库:USE 数据库名;
USE db1;-- 查看数据库中的所有表
SHOW TABLES;-- 查看表结构
DESC 表名;-- 查看创建表的 SQL 语句
SHOW CREATE TABLE 表名;
1.7.3 修改数据库、数据表
修改数据库:
-- 修改数据库默认的字符集:ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
ALTER DATABASE db3 CHARACTER SET utf8;
修改数据表:
-- 添加表列 ADD:ALTER TABLE 表名 ADD 列名;
ALTER TABLE student ADD remark VARCHAR(20);-- 修改列类型 MODIFY:ALTER TABLE 表名 MODIFY 列名 新的类型;
ALTER TABLE student MODIFY remark VARCHAR(100);-- 修改列名 CHANGE:ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
ALTER TABLE student CHANGE remark intro VARCHAR(30);-- 删除列:ALTER TABLE 表名 DROP 列名;
ALTER TABLE student DROP intro;-- 修改表名:RENAME TABLE 表名 TO 新表名;
RENAME TABLE student TO student2;-- 修改字符集:ALTER TABLE 表名 CHARACTER SET 字符集;
ALTER TABLE student2 CHARACTER SET gbk;
1.7.4 删除数据库、数据表
删除数据库:
-- DROP DATABASE 数据库名;
drop database db2;
删除数据表:
-- 直接删除表:DROP TABLE 表名;
DROP TABLE s1;-- 判断表是否存在并删除 s1 表:DROP TABLE IF EXISTS 表名;
DROP TABLE IF EXISTS s1;
1.8 DML(数据操纵语言)
DML用于对数据表中的记录进行增删改。
1.8.1 插入记录
/*
INSERT INTO 表名 -- 表示往哪张表中添加数据(字段名1,字段名2,...) -- 要给哪些字段设置值
VALUES (值1,值2,...); -- 设置具体的值
*/
INSERT INTO student (id,NAME,age,sex,address)
VALUES (1,'学哥斌',20,'男','广东广州');-- 插入全部字段
-- 方式一:所有的字段名都写出来
-- 格式:INSERT INTO 表名 (字段名1,字段名2,字段名3…) VALUES (值1,值2,值3);
INSERT INTO student (id,name,age,sex) VALUES (1, '孙悟空', 20, '男','水帘洞');
-- 没有添加的字段会使用 NULL
INSERT INTO student (id,name,age,sex) VALUES (1, '孙悟空', 20, '男');-- 方式二:不写字段名(默认添加所有字段)
-- 格式:INSERT INTO 表名 VALUES (值1,值2,值3…);
INSERT INTO student VALUES (3, '孙悟饭', 18, '男', '龟仙人洞中');
注意事项:插入的数据应与字段的数据类型相同,数据的大小应在列的规定范围内,在values中列出的数据位置必须与被加入的列的排列位置相对应,字符和日期型数据应包含在单引号中,不指定列或使用 null,表示插入空值。
1.8.2 蠕虫复制
蠕虫复制即将一张已经存在的表中的数据复制到另一张表中。
-- 将表名2中的所有的列复制到表名1中
-- INSERT INTO 表名1 SELECT * FROM 表名2;
INSERT INTO student2 SELECT * FROM student;-- INSERT INTO 表名1(列1,列2) SELECT 列1,列2 FROM student;
INSERT INTO student2 (name,age) SELECT name,age FROM student;
1.8.3 更新表记录
/*
UPDATE 需要更新的表名
SET 修改的列值
WHERE 符合条件的记录才更新
*/
-- 不带条件修改数据,将所有的性别改成女
UPDATE student SET sex = '女';-- 带条件修改数据,将 id 号为 2 的学生性别改成男
UPDATE student SET sex='男' WHERE id=2;-- 一次修改多个列,把 id 为 3 的学生,年龄改成 26 岁,address 改成北京
UPDATE student SET age=26, address='北京' WHERE id=3;
1.8.4 删除表记录
-- DELETE FROM 表名 [WHERE 条件表达式]
-- 带条件删除数据,删除 id 为 1 的记录
DELETE FROM student WHERE id=1;-- 不带条件删除数据,删除表中的所有数据
DELETE FROM student;-- 使用 TRUNCATE 删除表中所有记录(TRUNCATE 相当于删除表的结构,再创建一张表。)
TRUNCATE TABLE 表名;
1.9 DQL(数据查询语言)
查询不会对数据库中的数据进行修改.只是一种显示数据的方式。
基本格式:SELECT 列名 FROM 表名 [WHERE 条件表达式]
SELECT 命令可以读取一行或者多行记录。可以使用星号(* )来代替其他字段,SELECT 语句会返回表的所有字段数据。可以使用 WHERE 语句来包含任何条件。
SQL语句顺序分为书写顺序和执行顺序:
书写顺序:SELECT-> FROM-> WHERE-> GROUP BY -> HAVING -> ORDER BY -> LIMIT[OFFSET,]
执行顺序:FROM-> WHERE-> GROUP BY -> HAVING-> SELECT -> ORDER BY -> LIMIT
最先执行的总是FROM
操作,最后执行的是LIMIT
操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。FORM
: 对FROM
的左边的表和右边的表计算笛卡尔积。产生虚表VT1;WHERE
: 对虚拟表VT2进行WHERE
条件过滤。只有符合<where-condition>
的记录才会被插入到虚拟表VT2中;GROUP BY
: 根据GROUP BY
子句中的列,对VT2中的记录进行分组操作,产生VT3;HAVING
: 对虚拟表VT3应用HAVING
过滤,只有符合<having-condition>
的记录才会被插入到虚拟表VT4中;SELECT
: 执行SELECT
操作,选择指定的列,插入到虚拟表VT5中;ORDER BY
: 将虚拟表VT5中的记录按照<order_by_list>
进行排序操作,产生虚拟表VT6;LIMIT
:取出指定行的记录,产生虚拟表VT7, 并将结果返回。
1.9.1 简单查询
-- 查询所有行和列
-- 格式:SELECT * FROM 表名;
SELECT * FROM student;-- 查询指定的列
-- 格式:SELECT 字段名 1,字段名 2,字段名 3,... FROM 表名;
SELECT name,age FROM student;
1.9.2 指定列的别名进行查询
-- 对列指定别名
-- 格式:SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名;
SELECT name as 姓名,age AS 年龄 FROM student;-- 对列和表使用别名
-- 格式:SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS 表别名;
SELECT st.name AS 姓名,age AS 年龄 FROM student AS st
1.9.3 清除重复值
-- 查询指定列并且结果不出现重复数据
-- 格式:SELECT DISTINCT 字段名 FROM 表名;
SELECT DISTINCT address FROM student;
1.9.4 查询结果参与运算
-- 某列数据和固定值运算
-- 格式:SELECT 列名 1 + 固定值 FROM 表名;
SELECT math+5 FROM student;-- 某列数据和其他列数据参与运算
-- 格式:SELECT 列名 1 + 列名 2 FROM 表名;
SELECT *,(math+english) AS 总成绩 FROM student;
1.9.5 条件查询
条件查询就是取出表中的每条数据,满足条件的记录就返回,不满足条件的记录不返回。
格式:SELECT 字段名 FROM 表名 WHERE 条件;
创建一个表来进行演示:
-- 创建 student 表
CREATE TABLE student (id INT, -- 编号name VARCHAR(20), -- 姓名age INT, -- 年龄sex VARCHAR(5), -- 性别address VARCHAR(100), -- 地址math INT, -- 数学english INT -- 英语
);-- 插入数据
INSERT INTO student(id,NAME,age,sex,address,math,english)
VALUES (1,'马云',55,'男','杭州',66,78),(2,'马化腾',45,'女','深圳',98,87),(3,'马景涛',55,'男','香港',56,77),(4,'柳岩',20,'女','湖南',76,65),(5,'柳青',20,'男','湖南',86,NULL),(6,'刘德华',57,'男','香港',99,99),(7,'马德',22,'女','香港',99,99),(8,'德玛西亚',18,'男','南京',56,65);-- 查询表所有行和列
SELECT * FROM student;
执行后显示如下:
使用比较运算符对这个表进行条件查询:
比较运算符 | 说明 |
---|---|
> 、< 、<= 、>= 、= 、<> | <>在 SQL 中表示不等于,在 mysql 中也可以使用!=,没有==运算符 |
BETWEEN…AND | 在一个范围之内,如:between 100 and 200相当于条件在 100 到 200 之间,包头又包尾 |
IN( 集合) | 集合表示多个值,使用逗号分隔 |
LIKE ’ 张%’ | 模糊查询,%匹配任意多个字符,_匹配一个字符 |
IS NULL | 查询某一列为 NULL 的值,注:不能写=NULL |
查询math分数大于80分的学生:SELECT * FROM student WHERE math>80;
查询 english 分数小于或等于 80 分的学生:SELECT * FROM student WHERE english <=80;
查询 age 等于 20 岁的学生:SELECT * FROM student where age = 20
;
查询 age 不等于 20 岁的学生,注:不等于有两种写法
写法一:SELECT * FROM student WHERE age <> 20;
写法二:SELECT * FROM student WHERE age != 20;
查询 english 成绩大于等于 75,且小于等于 90 的学生:SELECT * FROM student WHERE english between 75 and 90;
查询姓马的学生:SELECT * FROM student WHERE name LIKE '马%';
查询姓马,且姓名有两个字的学生:SELECT * FROM student WHERE name LIKE '马_';
使用逻辑运算符对这个表进行条件查询:
逻辑运算符 | 说明 |
---|---|
and 或 && | 与,SQL 中建议使用前者,后者并不通用。 |
or 或 || | 或 |
not 或 ! | 非 |
查询 age 大于 35 且性别为男的学生:SELECT * FROM student WHERE age>35 AND sex='男';
查询 age 大于 35 或性别为男的学生:SELECT * FROM student WHERE age>35 OR sex='男';
查询 id 是 1 或 3 或 5 的学生:SELECT * FROMstudent WHERE id=1 OR id=3 OR id=5;
IN关键字:里面的每个数据都会作为一次条件,只要满足条件的就会显示。
查询 id 是 1 或 3 或 5 的学生:SELECT * FROM student WHERE id IN (1,3,5);
1.9.6 排序
-- DESC:降序 ASC:升序
-- 单列排序:只按某一个字段进行排序,单列排序。
SELECT * FROM student ORDER BY age DESC;-- 组合排序:同时对多个字段进行排序,如果第 1 个字段相等,则按第 2 个字段排序,依次类推。
SELECT * FROM student ORDER BY age DESC, math ASC;
1.9.7 聚合函数
聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值。聚合函数会忽略空值 NULL。
聚合函数 | 作用 |
---|---|
MAX(列名) | 求这一列的最大值 |
MIN(列名) | 求这一列的最小值 |
AVG(列名) | 求这一列的平均值 |
COUNT(列名) | 统计这一列有多少条记录 |
SUM(列名) | 求这一列的总和 |
-- SELECT 聚合函数(列名) FROM 表名;
SELECT COUNT(id) AS 总人数 FROM student;
SELECT COUNT(*) AS 总人数 FROM student;-- 可以利用 IFNULL()函数,如果记录为 NULL,给个默认值,这样统计的数据就不会遗漏
SELECT COUNT(IFNULL(id,0)) FROM student;
1.9.8 分组
分组查询是指使用 GROUP BY 语句对查询信息进行分组,相同数据作为一组。
格式:SELECT 字段 1, 字段 2... FROM 表名 GROUP BY 分组字段 [HAVING 条件];
下面根据SQL执行顺序来理解分组查询的流程:
-- 按性别进行分组,求男生和女生数学的平均分
SELECT sex, AVG(math) FROM student GROUP BY sex;
顺序是:FROM -> GROUP BY -> SELECT
。首先FROM
语句生成student虚拟表,然后GROUP BY
以student虚拟表作为输入,生成两张sex唯一的虚拟表,然后SELECT
以这两张虚拟表作为输入,生成sex和AVG(math)为字段的虚拟表并返回。
1.9.9 限制
LIMIT
是限制的意思,所以 LIMIT
的作用就是限制查询记录的条数。
格式:LIMIT offset,length;
-- 查询学生表中数据,从第 3 条开始显示,显示 6 条。
SELECT * FROM student LIMIT 2,6;
1.10 数据库的备份和还原
1.10.1 备份
在DOS下,未登录的时候,执行语句:mysqldump -u 用户名 -p 密码 数据库 > 文件路径
-- 备份 day21 数据库中的数据到 d:\day21.sql 文件中
mysqldump -uroot -proot day21 > d:/day21.sql
1.10.2 还原
还原 day21 数据库中的数据,注意:还原的时候需要先登录 MySQL,并选中对应的数据库。
USE day21;
source d:/day21.sql;
2、MySQL约束
约束的作用:对表中的数据进行限制,保证数据的正确性、有效性和完整性。一个表如果添加了约束,不正确的数据将无法插入到表中。约束在创建表的时候添加比较合适。
约束名 | 约束关键字 |
---|---|
主键 | PRIMARY KEY |
唯一 | UNIQUE |
非空 | NOT NULL |
外键 | FOREIGN KEY |
检查 | CHECK (MySQL不支持) |
2.1 主键约束
主键用来唯一标识数据库中的每一条记录。通常不用业务字段作为主键,单独给每张表设计一个 id 的字段,把 id 作为主键。主键是给数据库和程序使用的,不是给最终的客户使用的。所以主键有没有含义没有关系,只要不重复,非空就行。
主键的特点是:非空、唯一。
2.1.1 创建主键
-- 在创建表的时候给字段添加主键
-- 格式:字段名 字段类型 PRIMARY KEY
-- 创建表学生表 st5, 包含字段(id, name, age)将 id 做为主键
CREATE TABLE st5 (id INT PRIMARY KEY, -- id 为主键name VARCHAR(20),age INT
)
DESC st5;
2.1.2 删除主键
-- 删除 st5 表的主键
ALTER TABLE st5 DROP PRIMARY KEY;-- 在已有表中添加主键
-- ALTER TABLE 表名 ADD PRIMARY KEY(字段名);
ALTER TABLE st5 ADD PRIMARY KEY(id);
2.1.3 主键自增
主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值。格式:AUTO_INCREMENT 表示自动增长(字段类型必须是整数类型)
/*
CREATE TABLE 表名(列名 INT PRIMARY KEY AUTO_INCREMENT
) AUTO_INCREMENT= 起始值;
*/
-- 指定起始值为 1000
create table st4 (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20)
) AUTO_INCREMENT = 1000;-- 如果想创建表后修改起始值
ALTER TABLE st4 AUTO_INCREMENT = 2000;
DELETE
删除所有的记录之后,自增长没有影响。TRUNCATE
删除以后,自增长又重新开始。
2.2 唯一约束
唯一约束表示数据表中某一列不能出现重复的值。
格式:字段名 字段类型 UNIQUE
-- 创建学生表 st7, 包含字段(id, name),name 这一列设置唯一约束,不能出现同名的学生
CREATE TABLE st7 (id INT,name VARCHAR(20) UNIQUE
)
2.3 非空约束
非空约束表示数据表的某一列不能为 null。
格式:字段名 字段类型 NOT NULL
-- 创建表学生表 st8, 包含字段(id,name,gender)其中 name 不能为 NULL
CREATE TABLE st8 (id INT,name VARCHAR(20) NOT NULL,gender CHAR(1)
)
或者可以通过设置默认值来防止出现NULL:字段名 字段类型 DEFAULT
-- 创建一个学生表 st9,包含字段(id,name,address), 地址默认值是广州
CREATE TABLE st9 (id INT,name VARCHAR(20),address VARCHAR(20) DEFAULT '广州'
)
如果一个字段设置了非空与唯一约束,该字段与主键的区别:主键数在一个表中,只能有一个。不能出现多个主键。主键可以单列,也可以是多列。自增长只能用在主键上。
2.4 外键约束
2.4.1 应用场景
外键约束用于多表中,解决数据冗余的问题。外键是在从表中与主表主键对应的那一列。主表是用来约束别人的表,从表是被别人约束的表。
对于下面的表,存在数据冗余,因为研发部和广州是一一对应,销售部和深圳也是一一对应,没必要每插入一条记录时,部门和地点都要重复写。
解决方法是拆分成两个表,一个部门表作为主表,员工表作为从表。这样,每插入新的员工表记录时,只需要协商部门表的id即可。
拆分成两个表还要在程序上关联,即让部门表的主键id和员工表的dep_id关联上,否则增删改没有系统限制。
2.4.2 创建外键
-- 新建表时增加外键
-- 格式:[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
-- 创建从表 employee 并添加外键约束 emp_depid_fk
-- 多方,从表
CREATE TABLE employee(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),age INT ,dep_id INT , -- 外键对应主表的主键CONSTRAINT emp_depid_fk FOREIGN KEY (dep_id) REFERENCES department(id) -- 创建外键约束
)-- 已有表增加外键
-- 格式:ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主键字段名);
-- 在 employee 表情存在的情况下添加外键
ALTER TABLE employee ADD CONSTRAINT emp_depid_fk FOREIGN KEY (dep_id) REFERENCES department(id);
2.4.3 删除外键
-- ALTER TABLE 从表 DROP FOREIGN KEY 外键名称;
-- 删除 employee 表的 emp_depid_fk 外键
ALTER TABLE employee DROP FOREIGN KEY emp_depid_fk;
2.4.4 外键的级联
在修改和删除主表的主键时,同时更新或删除副表的外键值,称为级联操作。
级联语法 | 描述 |
---|---|
ON UPDATE CASCADE | 级联更新,创建表的时候创建级联。更新主表中的主键,从表中的外键列也自动同步更新 |
ON DELETE CASCADE | 级联删除 |
-- 创建 employee 表,添加级联更新和级联删除
CREATE TABLE employee(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),age INT,dep_id INT, -- 外键对应主表的主键-- 创建外键约束CONSTRAINT emp_depid_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE
)
2.5 表与表之间的关系
关系 | 描述 |
---|---|
一对一 | 如:姓名和身份证,使用相对较少 |
一对多 | 如:部门和员工,使用最广泛。使用外键建立关系 |
多对多 | 如:学生和课程,建立第三张表作为中间表,使用外键建立关系 |
2.6 数据库范式
范式 | 特点 |
---|---|
第一范式 | 原子性,每一列都不可再拆分。 |
第二范式 | 不产生局部依赖,表中每一列都完全依赖于主键。 |
第三范式 | 不产生传递,表中每一列都直接依赖于主键。 |
3、MySQL多表&事务
3.1 表连接查询
多表查询用于对多个表的数据访问,因为查询结果在多张不同的表中,每张表取 1 列或多列。多表查询分为内连接和外连接。
多表选择时会出现笛卡尔积现象,比如A表有3条记录,B表有5条记录,然后对AB表直接查询会出现3×5=15条的记录。
一般我们进行多个表查询时,这些表直接往往是有关联的,比如上图的员工表的dept_id就是对应部门表的id,我们查询往往是要dept_id=id的结果。也就是说,当查询多个表时,是先生成了一个笛卡尔积表,然后我们从这个笛卡尔积表中进行过滤。
3.1.1 内连接
内连接就是用左边表的记录去匹配右边表的记录,如果符合条件则显示。内连接还分为隐式和显示。假设有两张表dept和emp:
执行FROM dept,emp
时生成笛卡尔积表,如下:
1.隐式内连接:看不到JOIN
关键字,条件使用WHERE
指定。
格式:SELECT 字段名 FROM 左表, 右表 WHERE 条件
执行语句:SELECT * FROM emp,dept WHERE emp.'dept_id' = dept.'id';
输出如下:
分析:左表是emp,右表是dept,先生成量表的笛卡尔积表,然后选择符合emp.‘dept_id’ = dept.'id’条件的记录,显示符合条件是所有记录。
2.显示内连接:使用 INNER JOIN ... ON
语句, 可以省略 INNER
格式:SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件
例如,查询唐僧的信息,显示唐僧的id、姓名、性别、工资和所在部门名称。发现这些字段分属两个表,所以要进行多表查询。
执行语句:SELECT e.'id' 编号,e.'name' 姓名,e.'gender' 性别,e.'salary' 工资,d.'name' 部门名字 FROM emp e INNER JOIN dept d ON e.'dept_id' = d.'id' WHERE e.'name'='唐僧';
输出如下:
总结使用内连接的查询步骤:
- 确定查询那些表;
- 确定表连接的条件;
- 确定查询的条件;
- 确定查询的字段。
3.1.2 外连接
(左右)外连接就是在内连接的基础上保证数据(左右)表的全部显示。
在部门表中增加一个销售部:INSERT INTO dept (name) VALUES ('销售部');
使用内连接:SELECT * FROM dept d INNER JOIN emp e on d.'id' = e.'dept_id';
使用左外连接:SELECT * FROM dept d LEFT JOIN emp e ON d.‘id’ = e.‘dept_id’;
在员工表中增加一个员工:INSERT INTO emp VALUES (null, '沙僧','男',6666,'2013-12-05',null);
使用内连接:SELECT * FROM dept INNER JOIN emp ON dept.‘id’ = emp.‘dept_id’;
使用右外连接:SELECT * FROM dept RIGHT JOIN emp ON dept.'id' = emp.'dept_id';
3.2 子查询
子查询就是一个查询的结果做为另一个查询的条件,有查询的嵌套,内部的查询称为子查询。子查询要使用括号。子查询的结果分为三种情况:单行单列、多行单列、多行多列。
3.2.1 单行单列
子查询结果只要是单行单列,肯定在 WHERE
后面作为条件,父查询使用:比较运算符,如:> 、<、<>、=等。
-- 查询最高工资是多少
SELECT MAX(salary) FROM emp;-- 根据最高工资到员工表查询到对应的员工信息
SELECT * FROM emp WHERE salary = (SELECT MAX(salary) FROM emp);-- 查询平均工资是多少
SELECT AVG(salary) FROM emp;-- 到员工表查询小于平均的员工信息
SELECT * FROM emp WHERE salary < (SELECT MAX(salary) FROM emp);
3.2.2 多行单列
子查询结果是单例多行,结果集类似于一个数组,父查询使用 IN 运算符。
-- 查询工资大于 5000 的员工,来自于哪些部门的名字
-- 先查询大于 5000 的员工所在的部门 id
SELECT dept_id FROM emp WHERE salary > 5000;
-- 再查询在这些部门 id 中部门的名字 Subquery returns more than 1 row
SELECT name FROM dept WHERE id = (SELECT dept_id FROM emp WHERE salary > 5000);
-- 使用 IN 运算符
SELECT name FROM dept WHERE id in (SELECT dept_id FROM emp WHERE salary > 5000);-- 查询开发部与财务部所有的员工信息
-- 先查询开发部与财务部的 id
SELECT id FROM dept WHERE name in('开发部','财务部');
-- 再查询在这些部门 id 中有哪些员工
SELECT * FROM emp WHERE dept_id in (SELECT id FROM dept WHERE name in('开发部','财务部'));
3.2.3 多行多列
子查询结果只要是多列,肯定在 FROM 后面作为表。
-- 查询出 2011 年以后入职的员工信息,包括部门名称
-- 在员工表中查询 2011-1-1 以后入职的员工
SELECT * FROM emp WHERE join_date >='2011-1-1';
-- 查询所有的部门信息,与上面的虚拟表中的信息组合,找出所有部门 id 等于的 dept_id
SELECT * FROM dept d, (SELECT * FROM emp WHERE join_date >='2011-1-1') e WHERE d.`id`= e.dept_id;
也可以使用表连接:
SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id` WHERE join_date >='2011-1-1';
SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id` AND join_date >='2011-1-1';
3.3 事务
事务执行是一个整体,所有的 SQL 语句都必须执行成功。如果其中有 1 条 SQL 语句出现异常,则所有的SQL 语句都要回滚,整个业务执行失败。MySQL有两种方式进行事务操作:手动和自动。
功能 | SQL语句 |
---|---|
开启事务 | START TRANSACTION; |
提交事务 | COMMIT; |
回滚事务 | ROLLBACK; |
3.3.1 手动提交事务
成功的情况:开启事务 -> 执行多条 SQL 语句 -> 成功提交事务;
失败的情况:开启事务 -> 执行多条 SQL 语句 -> 事务的回滚。
案例演示1:模拟张三给李四转 500 元钱(成功) 目前数据库数据如下:
使用 DOS 控制台进入 MySQL,执行 SQL 语句:开启事务;张三账号-500;李四账号+500。使用 SQLYog 查看数据库:发现数据并没有改变。在控制台执行 commit 提交事务。使用 SQLYog 查看数据库:发现数据改变。
注意,上图查询表时显示执行成功了,但是这时候没有提交,所以使用SQLyog查看时数据没有改变。
案例演示2:模拟张三给李四转 500 元钱(失败) 目前数据库数据如下:
在控制台执行以下 SQL 语句:1.开启事务, 2.张三账号-500。使用 SQLYog 查看数据库:发现数据并没有改变。在控制台执行 rollback 回滚事务。使用 SQLYog 查看数据库:发现数据没有改变。
总结: 如果事务中 SQL 语句没有问题,commit 提交事务,会对数据库数据的数据进行改变。 如果事务中 SQL语句有问题,rollback 回滚事务,会回退到开启事务时的状态。
3.3.2 自动提交事务
MySQL 默认每一条 DML(增删改)语句都是一个单独的事务,每条语句都会自动开启一个事务,语句执行完毕自动提交事务,MySQL 默认开始自动提交事务。
可以通过取消自动提交事务,使得每一次执行SQL语句都要commit才能生效。
执行更新语句,使用 SQLYog 查看数据库,发现数据并没有改变,在控制台执行 commit 提交任务,数据更改才生效。
3.3.3 事务原理
事务开启之后, 所有的操作都会临时保存到事务日志中, 事务日志只有在得到 commit 命令才会同步到数据表中,其他任何情况都会清空事务日志(rollback,断开连接)。
事务的步骤:1)客户端连接数据库服务器,创建连接时创建此用户临时日志文件;2)开启事务以后,所有的操作都会先写入到临时日志文件中;3)所有的查询操作从表中查询,但会经过日志文件加工后才返回;4)如果事务提交则将日志文件中的数据写到表中,否则清空日志文件。
3.3.4 事务回滚点
操作 | SQL语句 |
---|---|
设置回滚点 | SAVEPOINT 名字 |
回到回滚点 | ROLLBACK TO 名字 |
设置回滚点可以让我们在失败的时候回到回滚点,而不是回到事务开启的时候。
3.3.5 事务的隔离级别
事务的四大特性ACID:
特性 | 描述 |
---|---|
原子性(Atomicity) | 每个事务都是一个整体,不可再拆分,事务中的语句要么执行成功,要么都失败 |
一致性(Consistency) | 事务在执行前数据库的状态和执行后的状态保持一致。 |
隔离性(Isolation) | 事务与事务之间不应该相互影响,执行时保持隔离的状态。 |
持久性(Durability) | 一旦事务执行成功,对数据库的修改是持久的,就算关机也保存下来。 |
事务在操作时的理想状态: 所有的事务之间保持隔离,互不影响。因为并发操作,多个用户同时访问同一个数据。可能引发并发访问的问题:
问题 | 含义 |
---|---|
脏读 | 一个事务读取到了另一个事务中尚未提交的数据。 |
不可重复读 | 一个事务中两次读取的数据内容不一致,这是事务update时引发的问题。 |
幻读 | 一个事务中两次读取的数据的数量不一致,这是INSERT或DELETE时引发的问题。 |
根据这三个问题,引出MySQL数据库的四种隔离级别:
级别 | 名字 | 隔离级别 | 脏读 | 不可重复读 | 幻读 | 数据库默认隔离级别 |
---|---|---|---|---|---|---|
1 | 读未提交 | read uncommitted | 是 | 是 | 是 | |
2 | 读已提交 | read committed | 否 | 是 | 是 | Oracle和SQL Server |
3 | 可重复读 | repeatable read | 否 | 否 | 是 | MySQL |
4 | 串行化 | serializable | 否 | 否 | 否 |
隔离级别越高,性能越差,安全性越高。
功能 | SQL语句 |
---|---|
查询隔离级别 | SELECT @@tx_isolation |
设置隔离级别 | SET GLOBAL TRANSACTION ISOLATION LEVEL 级别字符串 |
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 用matlab写的径向分布函数RDF
RDF是径向分布函数Radical distribution function的缩写,指的是给定一个空间,在此空间以一个对象为中心,去寻找周围对象的的概率。对于分子模拟的径向分布函数实则也是求解粒子在周期性边界盒子的区域密度和全局密度的比值。 其中: 区域密度 = 每一个球壳的数密度 / 球壳体…...
2024/5/10 9:09:38 - 目标检测——anchor-free的算法的阅读笔记
FCOS、Centre-Net和Corner-Net;...
2024/5/10 12:56:28 - OSPF路由协议简单介绍及实验
内部网关协议和外部网关协议自治系统(AS)内部网关协议(IGP)外部网关协议(EGP)OSPF是链路状态路由协议OSPF的工作过程邻居列表链路状态数据库路由表OSPF区域为了适应大型的网络,OSPF在AS内划分多个区域每个OSPF路由器只维护所在区域的完整链路状态信息区域ID可以表示成一个十进…...
2024/5/7 3:09:21 - jenkins配置,一键打包,备份,部署多服务器,多环境启动
https://www.cnblogs.com/wfd360/p/11314697.html...
2024/5/10 15:54:58 - 路由重分布(OSPF)简单介绍及实验(GNS3)
理解路由重发布一个单一IP路由协议是管理网络中IP路由的首选方案Cisco IOS能执行多个路由协议,每一个路由协议和该路由协议所服务的网络属于同一个自治系统Cisco IOS使用路由重分发特性以交换由不同协议创建的路由信息路由重发布的考虑度量值管理距离OSPF重分发路由重分发到OS…...
2024/5/10 18:54:45 - 设置多个子图的label
from matplotlib import pyplot as plt import matplotlib import pandas as pd import numpy as npfont = {family: MicroSoft YaHei,weight: bold,size: 4} matplotlib.rc("font", **font)dataM_pd = pd.read_excel(r./data/每个男会员消费记录.xlsx, sheet_name=3…...
2024/5/10 10:56:32 - 学习云的概念
“云”到底长啥样 现在提到云,一般都指的是云计算,所以想弄清,云计算,云存储、混合云、私有云、公有云。搜了几篇介绍,总结如下: 链接地址: 云计算和云存储的关系 云计算服务介绍 公有云、私有云 云存储(个人理解图) 云其实就一种服务,通过网络链接大量的计算资源,然…...
2024/5/10 6:27:30 - 表单
关于表单 表单的结构 表单是一个包含表单元素的区域。 表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等等。 表单使用表单标签 <form> 来设置:<form method = " " action = " &qu…...
2024/5/7 3:09:01 - K8s可视化监控告警【4】--使用代理提供TLS+安全认证
1.证书密钥获取,两种方式选其一 #one [root@k8s-master ~]#openssl genrsa -out cert.key 2048 [root@k8s-master ~]#openssl req -new -x509 -key cert.key -out cert.pem -days 3650 -subj /CN=www.example.com#two openssl genrsa > cert.key openssl req -new -x509 -k…...
2024/5/10 8:43:20 - Centos7 使用Yum源安装MongoDB4.2版本数据库
Centos7 使用Yum源安装MongoDB4.2版本数据库 1.修改yum安装源对mongodb的支持 可查看官方文档: 本月也是参照官方文档搭建的 https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/#configure-the-package-management-system-yum正式操作 (1)修改yum安装mo…...
2024/5/7 3:08:53 - LAMP架构网站部署
继上一个LAMP文档部署动态网站,如果不会部署LAMP架构的可以去上一个文档。 文档可能由于这几天比较忙了,发的有的晚了不好意思。 废话不少说我们直接开干,奥利给~~~~我们先下载一个论坛源码包Discuz!; 下载好了我们把Discuz源码包上传至虚拟机上的目录; 3.然后我们把这个压…...
2024/5/7 3:08:49 - P1144 最短路计数· BFS/dijkstra
题解 其实题目很简单不写了,这里总结一下从这道题目里学到的知识:当最短路的边权都是1时,dijkstra/spfa 就是 BFS 如果使用优先队列,内部结构是pair<int,int>时,dis[v]=dis[u]+1使得当前路成为新的最短路,这条路在优先队列里的级别变高,应该使用q.push(make_pair{…...
2024/5/6 8:12:41 - Arduino安全和警报系统项目
在这个项目中,我们将学习如何制作一个Arduino安全和警报系统。您可以观看以下视频或阅读下面的书面教程。 Arduino安全和警报系统项目 概述 按下A按钮后10秒内将激活警报。 为了检测物体,它使用了超声波传感器,一旦警报器检测到某种东西,蜂鸣器就会开始发出声音。 为了停止…...
2024/5/7 3:08:45 - 【Vue】项目碰到‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件报错
刚刚通过阅读某个博主的博客,成功运行了从别人那里clone的项目,借用别人的错误图先删除项目node_modules。依次运行命令:npm install和npm run build,最后运行npm run dev后项目成功运行。运行完npm install后会重新生成项目新的node_modules————————————-----…...
2024/5/7 3:08:41 - Arduino触摸屏MP3音乐播放器和闹钟项目
在这个项目中,我将向您展示如何制作Arduino触摸屏MP3音乐播放器和闹钟。您可以观看以下视频或阅读下面的书面教程。 Arduino触摸屏MP3音乐播放器和闹钟项目 概述 主屏幕具有大时钟,日期和温度信息,以及音乐播放器和闹钟的两个按钮。 如果我们进入音乐播放器,则可以通过按屏…...
2024/5/9 18:50:41 - abrt-ccpp CentOS7
无法创建ccpp文件导致的 “abrtd” creates a sub-directory (named something like “ccpp-1279914365-14618″) in the directory “/var/cache/abrt” as shown in the value of the variable. This also means that the core files will also be stored in that sub-direct…...
2024/5/7 3:08:33 - Vue项目的创建
Vue项目的创建 1.首先确保全局安装有node.js环境 下载地址: http://nodejs.cn/download/ 检查命令:node -v 2.全局安装vue -cli npm install --global vue-cli检查命令:vue 3.在目标盘符的目录下安装一个基于webpack模板的新项目 vue init webpack my-priject //my-prije…...
2024/5/6 6:30:28 - PTA:7-99 堆栈模拟队列 (25分)--解析
7-99 堆栈模拟队列 (25分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S):判断堆栈S是否已满,返回1或0; int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0; void Push(St…...
2024/5/7 3:08:25 - 前端学习笔记 CSS布局
1、绝对定位属性:position 值: absolute 会将该元素从原文档删除,重新给它指定一个位置。(原来的位置就被其他东西占了) 通过指定left,top绝对定位一个元素,绝对定位是基于最近的一个定位了的父容器。绝对定位可能会造成谁把谁掩盖了的问题,这时候可以使用z-index属性,…...
2024/5/10 10:17:06 - Vue-Cli 按需引入Ant Design of Vue 组件库
一)、安装Ant Design of Vue cnpm install ant-design-vue --save二)、安装babel-plugin-import 官方文档 使用 babel-plugin-import 为了方便进行按需引入Ant Design of Vue组件,使用 babel-plugin-import 是一个用于按需加载组件代码和样式的 babel 插件 此插件配合 style…...
2024/5/8 23:30:23
最新文章
- 【C语言】——联合体与枚举
【C语言】——联合体与枚举 一、联合体1.1、联合体类型的声明1.2、联合体的特点1.3、相同成员的结构体和联合体对比1.4、联合体的大小计算1.5、联合体的应用举例 二、枚举2.1、枚举类型的声明2.2、枚举类型的优点 一、联合体 1.1、联合体类型的声明 联合体也叫做共用体 与…...
2024/5/10 19:18:15 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/9 21:23:04 - 招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本
功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…...
2024/5/10 0:13:57 - Databend 开源周报第 138 期
Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 支持多表插入 …...
2024/5/8 2:36:25 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/10 12:36:12 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/9 15:10:32 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/9 4:20:59 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/8 20:48:49 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/8 19:33:07 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/8 20:38:49 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/10 10:22:18 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/9 17:11:10 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57