Tiger の MySQL-base
文章平均质量分 71
数据库一个庞大的。存储。系统在其中。我们能够清晰明了的。得到自己想要的信息。进行有序、高效的分类。
StudiousTiger
这个作者很懒,什么都没留下…
展开
-
【MySQL】MySQL-SQL语句执行顺序
SQL的执行顺序与书写顺序是有较大的不同的,二者不能混为一谈,接下来主要谈一下参数的执行顺序以及其中涉及的一些细节。原创 2024-02-18 21:20:00 · 180 阅读 · 0 评论 -
【JDBC】JDBC、JdbcUtil工具类源码、sql注入问题、事务、数据库连接池(DBCP)
文章目录一、什么是jdbc?二、连接数据库步骤:JdbcUtil工具类源码:三、sql注入问题:四、事务例子五、数据库连接池一、什么是jdbc?数据库驱动:将应用程序与数据库之间建立连接jdbc:为了简化开发人员的同意操作,提出了java操作数据库的规范,规范由具体的厂商去完成,开发人员只需要掌握jdbc的接口。需要的包javax.sqlcom.mysql.jdbc.Driver(数据库驱动包)二、连接数据库步骤:1.加载驱动class.forName(com.mysql原创 2021-06-08 16:26:53 · 248 阅读 · 0 评论 -
MySQL使用IN、EXISTS、ANY、ALL关键字的子查询
# pan_junbiao # MySQL使用IN、EXISTS、ANY、ALL关键字的子查询转载 2020-11-09 14:10:46 · 119 阅读 · 0 评论 -
数据库连接工具类 DbUtil
import java.sql.*;/** * @Description 这个类是作为对数据库操作(增删改查)操作的标准工具类 * @author HuXuehao Email:1938667362@qq.com * @version 1.0 * @date 2020年10月16日下午8:12:41 */public class DbUtil { private static final String URL = "jdbc:mysql://localhost:3306/*****?us原创 2020-10-19 21:44:01 · 405 阅读 · 0 评论 -
老铁们想知道 Class.forName(“com.mysql.cj.jdbc.Driver“) 这个加载类是干啥用的吗
老铁们,JDBC咱们都用过吧,大家好不好奇A :Class.forName(“com.mysql.cj.jdbc.Driver”);B :Connection conn=DriverManager.getConnection(url,user,password);这俩有什么关系看起来这没啥关系呀,那他俩为啥要写在一起呢?今天 我就来给你解开它们的神秘面纱我都知道 Class.forName()是要加载一个类,不知道大家还记得不记得类被加载时是会执行静态代码块的,好像执行之一次所以A和B原创 2020-10-19 21:22:37 · 594 阅读 · 0 评论 -
数据库中的三级范式(1NF、2NF、3NF、BCNF)
一级范式(1NF)保证列的原子性什么是列的原子性呢?就是每一列的数据(字段值)是不可再分的比如说一个列名为address,value为“中国山东”,那么这就不满足1NF,因为“中国山东”可以再分为 [国家:中国]、[城市:山东]。没有保证列的 原子性二级范式(2NF)在满足1NF的前提下,一个表只描述一种事物。非主属性完全依赖于主键[消除非主属性对主码的部分函数依赖]。例如:一个表为 (学号, 姓名, 年龄, 课程名称, 成绩, 学分) 这个就不满足2NF。首先他描述的是两种事务,一种原创 2020-09-25 18:46:01 · 1723 阅读 · 0 评论 -
24变量 ——MySQL
# 变量:# 1.系统变量:-- 全局变量:作用域:服务器每次启动将会为所有的全局变量赋予初始值-- 会话变量:作用域:仅对当前会话(连接)有效。# 2.自定义变量:-- 用户变量:作用域:仅对当前会话(连接)有效。-- 局部变量:作用域:仅在begin end 中有效,而且只能是放在第一句话中。# 一、系统变量/*是由系统提供,用于服务器层面语法: 1、查看所有系统变量 show variables; 1.1、查看全局变量 sh原创 2020-08-22 11:06:15 · 73 阅读 · 0 评论 -
23视图 ——MySQL
-- 视图:/*一、含义:虚拟表,视图和普通表的用法一样。视图是通过表动态生成的数据 视图中没有保存具体的数据,只保存了SQL逻辑 换一句话说,视图中其实是保存的SQL语句,语句的查询结果(表)作为视图的数据映像。 我们可以通过查询视图,更方便的查询到我们所需要的的内容二、创建视图: use 库名; create view 视图名 AS 复杂的SQL语句;三、修改视图 方法:1(存在则修改,不存在则创建)原创 2020-08-22 11:05:58 · 89 阅读 · 0 评论 -
22事务(TCL) ——MySQL
# TCL/* Transaction Control Language 事务控制语言一、事务: 一个或多个aql语句组成的执行单元,这个执行单元,要么全部执行,要么全部不执行 案例:转账,张给郭转500 张三丰 1000 郭襄 1000 update 表 set 张三丰的余额=500 where name="张三丰" update 表 set 郭襄的余额=1500 where name="郭襄" 可见,上述的两条语句要么都执行,要么都不执行二、事务的(ACID)属性原创 2020-08-22 11:05:26 · 75 阅读 · 0 评论 -
21标识列 ——MySQL
#标识列-- auto_increment/* 标识列有叫做 自增长列 含义:系统会默认提供序列值特点:1.表示必须和key搭配(primary key,unique,foreign key)2.一个表中只能有一个标识列3.标识列的类型只能是数值型4.可以通过手动插入时设置起始值设置步长为3:set auto_auto_increment_auto_increment=3;*/# 一、创建表设置标识列/*CREATE table test5( id int prima原创 2020-08-22 11:05:09 · 87 阅读 · 0 评论 -
20常见约束 ——MySQL
-- 常见约束/*含义:用于限制表中的数据,保证数据的准确和可靠性分类: 1.not null 非空 2.default="默认值" 默认,保障字段有默认值 3.primary key 主键,保证字段唯一且非空 4.unique 唯一约束,保证字段具有唯一性,但是可以为空(只允许一个为空) 5.check>80 检查约束【MySQL中不支持】,输入的值必须大于80 6.foreig原创 2020-08-22 11:04:43 · 97 阅读 · 0 评论 -
19数据类型 ——MySQL
# 一、数据类型-整型/* Tinyint 1字节 Smallint 2字节 Mediumint 3字节 Int/Intager 4字节 Bigint 8字节特点:①默认为有符号(无符号不能插入负数),无符号的关键字为unsigned ②超出整型的范围时,会报out of range ;并且插入临界值 ③如果不设置长度,会有默认的长度,也可以手动 例如: int(12) ④上述的int(12)中的12是指显示的宽度如果不够会用0原创 2020-08-22 11:04:23 · 288 阅读 · 0 评论 -
18表的管理_创建_修改_删除 ——MySQL
# 表的管理#一、表的创建/* 语法: create table 【if not exists】 表名( 列名 列的类型【(长度) 列的约束】, 列名 列的类型【(长度) 列的约束】, 列名 列的类型【(长度) 列的约束】, ..... 列名 列的类型【(长度) 列的约束】 )*/#案例:创建book表-- CREATE TABLE book(-- id INT,-- bname VARCHAR(20),--原创 2020-08-22 11:04:04 · 107 阅读 · 0 评论 -
17库的管理_创建_修改_删除 ——MySQL
# DDL/* 数据定义语言 库和表的管理一、库的管理创建、修改、删除二、表的管理创建、修改、删除创建:create修改:aalter删除:drop*/ #库的管理#1.库的建立/* 语法:create 库名;*/#案例一:创建库(直接创建)-- CREATE DATABASE books;#案例二:创建库(加判断条件-不存在才创建)CREATE DATABASE IF NOT EXISTS books;#2.库的修改的字符集ALTER DATAB原创 2020-08-22 11:03:47 · 106 阅读 · 0 评论 -
16.2修改_update ——MySQL
/*一、修改单表的记录(重点) 语法: update 表名 set 列=新值,列=新值,... where 筛选条件;*/#案例1:修改姓刘的女神的电话为11115555UPDATE beautySET phone='11115555'WHERE `name` LIKE '刘%';#案例2:修改boys表中的id号为2的名称为张飞,魅力值为10UPDATE boysSET boyName='张飞',userCP=10WHERE id=2;/*二、修改多表的记录原创 2020-08-22 11:03:29 · 96 阅读 · 0 评论 -
16.1.2插入_方式2 ——MySQL
/* 语法: INSERT INTO 表名 SET 列名=值,列名=值,..*/ -- INSERT into beauty-- set id=19,NAME='刘涛',phone='99955445';SELECT * FROM beauty;原创 2020-08-22 11:03:12 · 78 阅读 · 0 评论 -
16.1.1插入_方式1(经典)——MySQL
-- 插入语句/*语法: insert into 表名(列名,...) value (值1,...); 特点:支持多行 支持子查询*/#1.插入的值的类型和列数与列的类型一致且兼容-- INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)-- VALUES(13,'唐艺昕','女','1990-4-30','15487569853',null,2);#SELECT * FROM beauty;#原创 2020-08-26 09:43:50 · 108 阅读 · 0 评论 -
22事务(TCL)——MySQL
# TCL/* Transaction Control Language 事务控制语言一、事务: 一个或多个aql语句组成的执行单元,这个执行单元,要么全部执行,要么全部不执行 案例:转账,张给郭转500 张三丰 1000 郭襄 1000 update 表 set 张三丰的余额=500 where name="张三丰" update 表 set 郭襄的余额=1500 where name="郭襄" 可见,上述的两条语句要么都执行,要么都不执行二、事务的(ACID)属性原创 2020-08-13 10:36:46 · 97 阅读 · 0 评论 -
21标识列——MySQL
#标识列-- auto_increment/* 标识列有叫做 自增长列 含义:系统会默认提供序列值特点:1.表示必须和key搭配(primary key,unique,foreign key)2.一个表中只能有一个标识列3.标识列的类型只能是数值型4.可以通过手动插入时设置起始值设置步长为3:set auto_auto_increment_auto_increment=3;*/# 一、创建表设置标识列/*CREATE table test5( id int prima原创 2020-08-23 09:20:24 · 73 阅读 · 0 评论 -
20常见约束——mysql
-- 常见约束/*含义:用于限制表中的数据,保证数据的准确和可靠性分类: 1.not null 非空 2.default="默认值" 默认,保障字段有默认值 3.primary key 主键,保证字段唯一且非空 4.unique 唯一约束,保证字段具有唯一性,但是可以为空(只允许一个为空) 5.check>80 检查约束【MySQL中不支持】,输入的值必须大于80 6.原创 2020-08-12 12:21:42 · 143 阅读 · 0 评论 -
19数据类型——MySQL
# 一、数据类型-整型/* Tinyint 1字节 Smallint 2字节 Mediumint 3字节 Int/Intager 4字节 Bigint 8字节特点:①默认为有符号(无符号不能插入负数),无符号的关键字为unsigned ②超出整型的范围时,会报out of range ;并且插入临界值 ③如果不设置长度,会有默认的长度,也可以手动 例如: int(12) ④上述的int(12)中的12是指显示的宽度如果不够会用0原创 2020-08-12 12:21:23 · 107 阅读 · 0 评论 -
18表的管理_创建_修改_删除——MySQL
# 表的管理#一、表的创建/* 语法: create table 【if not exists】 表名( 列名 列的类型【(长度) 列的约束】, 列名 列的类型【(长度) 列的约束】, 列名 列的类型【(长度) 列的约束】, ..... 列名 列的类型【(长度) 列的约束】 )*/#案例:创建book表-- CREATE TABLE book(-- id INT,-- bname VARCHAR(20),--原创 2020-08-12 12:20:56 · 75 阅读 · 0 评论 -
17库的管理_创建_修改_删除——MySQL
# DDL/* 数据定义语言 库和表的管理一、库的管理创建、修改、删除二、表的管理创建、修改、删除创建:create修改:aalter删除:drop*/ #库的管理#1.库的建立/* 语法:create 库名;*/#案例一:创建库(直接创建)-- CREATE DATABASE books;#案例二:创建库(加判断条件-不存在才创建)CREATE DATABASE IF NOT EXISTS books;#2.库的修改的字符集ALTER DATAB原创 2020-08-12 12:20:38 · 531 阅读 · 0 评论 -
16.2修改_update——MySQL
/*一、修改单表的记录(重点) 语法: update 表名 set 列=新值,列=新值,... where 筛选条件;*/#案例1:修改姓刘的女神的电话为11115555UPDATE beautySET phone='11115555'WHERE `name` LIKE '刘%';#案例2:修改boys表中的id号为2的名称为张飞,魅力值为10UPDATE boysSET boyName='张飞',userCP=10WHERE id=2;/*二、修改多表的记录原创 2020-08-12 12:20:17 · 87 阅读 · 0 评论 -
16.1.1插入_方式1(经典)——MySQL
-- 插入语句/*语法: insert into 表名(列名,...) value (值1,...); 特点:支持多行 支持子查询*/#1.插入的值的类型和列数与列的类型一致且兼容-- INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)-- VALUES(13,'唐艺昕','女','1990-4-30','15487569853',null,2);#SELECT * FROM beauty;#原创 2020-08-13 10:39:11 · 151 阅读 · 0 评论 -
15连接查询——MySQL
-- 联合查询/* union 联合 合并 :将多条查询语句的结果合成一个结果 语法: 查询语句1 UNION (union all) 查询语句2 UNION union all) 查询语句3 .... 应用场景: 当我要查询查询相同的信息结果来自多个表,而却表之间没有联系 并且要求结果呈现在一张表中特点:①要求多条查询语句的列数一致 ②要求多条查询语句的每一列的类型和顺序最好一致 ③使用union默认去重,若不想去重,则使用union all ,不去重原创 2020-08-06 15:38:20 · 89 阅读 · 0 评论 -
14分页查询_limit——MySQL
-- 分页查询/*应用场景:当要显示的数据,一页显示不全,需要分页提交SQL请求语法: select 查询列表 from 表名 [join tyle] join 表2 on 连接条件 where 筛选条件 group by 分页字段 having 分页后的筛选 order by desc limit offset,size;注意: offset :要显示条目的其实索引(其实索引从0开始) size:要显示的条目个数特点:①limit都是在语句的在最后 ②公式原创 2020-08-06 15:38:05 · 143 阅读 · 0 评论 -
13.1放在exists后面的子查询的使用——MySQL
-- exists后面的子查询的使用-- 语法:-- exist(完整的查询语句)-- 结果:0或1-- 特点:可以用in代替,所以用的不多-- exists后面有值则返回1,没有值返回0SELECT EXISTS(SELECT employee_id FROM employees);-- 没有工资是30000的,所以返回0 SELECT EXISTS(SELECT employee_id FROM employees WHERE salary=30000); -- 案原创 2020-08-06 15:37:43 · 146 阅读 · 0 评论 -
12.1from后面的子查询使用——MySQL
-- from后面的子查询使用 :将子查询的结果充当一张表,必须起别名 -- 案例:查询每个部门的平均工资的工资等级-- 我们先查询每个部门的平均工资,得到表1SELECT AVG(salary) avg,department_idFROM employeesGROUP BY department_id;-- 将表1与job_grades进行连接SELECT avg,grade_level,department_idFROM job_grades greJOIN (SELECT AV原创 2020-08-06 15:37:22 · 278 阅读 · 0 评论 -
11.1select后面的子查询——MySQL
-- 放在select后面的子查询 (用的很少,被弱化)-- 仅仅支持标量子查询-- 案例:查询每个部门的员工个数SELECT d.*,( SELECT COUNT(*) FROM employees e WHERE e.department_id=d.department_id) numberFROM departments d;-- 案例:查询员工号=102的部门名SELECT ( SELECT department_name FROM de原创 2020-08-06 15:36:58 · 184 阅读 · 0 评论 -
10.4where后面的 行子查询使用——MySQL
-- where后面的 行子查询使用(一行多列,多行多列)-- 案例:查询员工编号最小并且工资最高的员工信息 (具备条件的不一定存在)-- 使用列子查询SELECT *FROM employeesWHERE employee_id=( SELECT MIN(employee_id) FROM employees) AND salary=( SELECT MAX(salary) FROM employees);-- 行子查询SELECT *FROM原创 2020-08-05 22:30:16 · 169 阅读 · 0 评论 -
10.3where后面的 列子查询使用——MySQL
-- where后面的 列子查询(多行子查询)/*in/not in 等于/不等于 列表中的任意一个 (☆)any | some 和子查询返回的某一个值比较all 和子查询返回的所有值比较*/-- 案例1:返回location_id 是1400或1700的部门中的所有员工姓名-- ①查询location_id是1400或1700的部门编号-- ②查询员工姓名要求部门编号是①中的一个SELECT last_namefrom employeesWHERE d原创 2020-08-02 22:36:29 · 334 阅读 · 0 评论 -
10.2where后的 标量(一行一列)子查询使用.——MySQL
-- where或having后面/*1.标量子查询(单行子查询)2.列子查询(多行子查询)3.行子查询(多列多行)特点:①子查询一般放在小括号内②子查询一般放在条件的右侧③标量子查询,一般搭配着单行操作符使用(>、<、>=、<=、<>)④一般搭配着多行操作符使用(in、ang/some、all)⑤子查询的执行优先于主查询的执行*/-- 1.标量子查询-- 案例1:谁的工资比Abel高SELECT *FROM employeesWHER原创 2020-08-02 22:35:55 · 138 阅读 · 0 评论 -
10.1子(内)查询介绍——MySQL
-- 子查询/* 含义: 出现在其他语句中的其他语句,称之为子查询或内查询 外部的查询语句,称之为主查询或外查询 分类: 按子查询出现的位置分类 select后面: 仅支持标量子查询 from后面: 支持表子查询 where后面或having后面:(重点) 标量(单行)子查询(☆) 列(多行)子查询(☆) 行子查询 exists后面(相关子查询)原创 2020-08-02 22:35:34 · 126 阅读 · 0 评论 -
09连接查询-交叉连接——MySQL
-- 交叉连接 (使用99语法的标准来实现的笛卡尔乘积)SELECT be.*, bo.*FROM beauty beCROSS JOIN boys boon be.boyfriend_id=bo.id原创 2020-08-02 22:35:13 · 104 阅读 · 0 评论 -
07.2sql99语法-内连接-非等值连接——MySQL
-- 非等值连接-- 案例:查询员工的工资级别SELECT salary, grade_levelFROM employees eJOIN job_grades gON e.salary BETWEEN g.lowest_sal AND g.highest_salORDER BY salary;-- 案例:查询每个工资级别的个数(>2),按照级别降序SELECT grade_level,COUNT(salary)FROM employees eJOIN job_grades原创 2020-07-21 21:37:36 · 250 阅读 · 0 评论 -
07.1sql99语法-内连接-等值连接——MySQL
/*sql99语法: SELECT 查询列表 from 表1 别名 【连接类型】join 表2 别名 on 连接条件 【where 连接条件】 【group by 分组】 【having 筛选条件】 【order by 排序条件】 内连接(最重要的) : 连接类型:inner 外连接 左外 连接类型:left 【outer】 右外 连接类型:right 【outer】 全外 连接类型:full 【outer】 交叉连原创 2020-07-21 21:37:02 · 295 阅读 · 0 评论 -
08.1连接查询-外连接——MySQL
-- 外连接/* 应用场景: 用于查询一个表中有,另一个表中没有的记录 特点: 1、外连接的查询结果为主表中的所有记录 如果从表中有和主表匹配的,则显示匹配的值 如果从表中没有和主表匹配的,则显示null 外连接查询的结果=内链接结果+主表中有而从表中没有的记录 2、左外连接:left join 左边的是主表 右外连接:right join 右边的是主表3、左外和右外交换两表的顺序可以实现同样的效果4、全外连接:内链接结果+表1中有但表2中没有+表1中没有但原创 2020-07-20 19:21:30 · 111 阅读 · 0 评论 -
07.3aql99语法-内连接-自连接——MySQL
-- 自连接-- 案例:查询姓名中包含k的员工的名字和其上级的名字SELECT e.last_name employeesname,m.last_name managernameFROM employees eJOIN employees mON e.manager_id=m.employee_idWHERE e.last_name LIKE "%k%";原创 2020-07-20 19:21:08 · 136 阅读 · 0 评论 -
06.3sql92-连接查询-内连接-自连接——MySQL
-- 自连接-- 自连接相当于等值连接-- 案例:查询员工名和其上级的名字-- 思路:(上级业数据员工)-- ①应该向last_name查询到其上级manager_id,-- ②在employee_id中匹配manager_id SELECT e.employee_id eID,e.last_name eName,m.employee_id mID,m.last_name mNameFROM employees e,employees m-- ② WHERE e.manager原创 2020-07-17 21:42:05 · 102 阅读 · 0 评论