
MySQL基础
MySQL
却道天凉_好个秋
这个作者很懒,什么都没留下…
展开
-
MySQL进阶1——底层数据结构B+树
MySQL 是会将数据持久化在硬盘,而存储功能是由 MySQL 存储引擎实现的,所以讨论 MySQL 使用哪种数据结构作为索引,实际上是在讨论存储引使用哪种数据结构作为索引,InnoDB 是 MySQL 默认的存储引擎,它就是采用了 B+ 树作为索引的数据结构。要设计一个 MySQL 的索引数据结构,不仅仅考虑数据结构增删改的时间复杂度,更重要的是要考虑磁盘 I/0 的操作次数。...转载 2022-08-05 21:17:11 · 2228 阅读 · 0 评论 -
MySQL进阶2——用户管理
用户管理原创 2022-08-08 21:09:29 · 246 阅读 · 0 评论 -
MySQL(28)——事务相关
事务相关。原创 2022-07-21 20:56:02 · 185 阅读 · 0 评论 -
MySQL(27)——update语句
语法update 表名 SET column_name = value, [column_name = value ...] where 条件1 [条件2...]1)column_name为数据库内的字段的值;2)可以同时设置多个值;示例UPDATE `city` SET `Name` = 'Kabul' WHERE ID = 1执行结果:...原创 2022-04-16 20:59:10 · 534 阅读 · 0 评论 -
MySQL(26)——insert语句
语法insert info 表名(字段1, 字段2, 字段3, ...) VALUES ('值1', '值2', '值3', ...)注意:1)字段与字段之间用英文逗号隔开;2)字段是可以省略的,后面的值必须一一对应;3)VALUES后可以插入多个值;示例INSERT INFO `jobs` ('zhangsan', '男', '2021-01-01')......原创 2022-04-16 20:36:10 · 1163 阅读 · 1 评论 -
MySQL(25)——修改和删除表字段
修改表名:ALTER TABLE 旧表名 RENAME AS 新表名ALTER TABLE jobs1 RENAME AS jobs增加表字段:ALTER TABLE 表名 ADD 字段名 列属性ALTER TABLE jobs ADD ave_salary INT(11)修改表字段(MODIFY):ALTER TABLE 表名 MODIFY 字段名 列属性ALTER TABLE jobs MODIFY ave_salary VARCHAR(11)修改表字段(CHANGE):.原创 2022-04-14 17:39:47 · 1081 阅读 · 0 评论 -
MySQL(24)——where后面的标量子查询使用
标量子查询(1)谁的工资比Abel高SELECT *FROM `employees`WHERE salary > ( SELECT salary FROM `employees` WHERE last_name = 'Abel');(2)返回job_id与141号员工相同,salary比143号员工多的员工的姓名、job_id和工资SELECT last_name, job_id, salaryFROM `employe.原创 2021-10-10 22:12:39 · 150 阅读 · 0 评论 -
MySQL(23)——子查询
1. 概念出现在其他语句中的select语句,称为子查询或内查询。外部的查询语句,称为主查询或外查询。2. 分类子查询出现的位置 select后面:仅仅支持标量子查询 from后面:支持表子查询 where或having后面:支持标量子查询、列子查询、行子查询 exists(相关子查询)后面:表子查询 按结果集的行列数不同 标量子查询:结果集只有一行一列 列子查询:结果集只有一列多行 行子查询:结果集只有一行多列 表子查询:结果集一般为多行多列 3. 示原创 2021-09-26 21:38:16 · 119 阅读 · 0 评论 -
MySQL(22)——sql99语法(交叉连接)
SELECT b.*, bo.*FROM beauty bCROSS JOIN boys bo;注意:交叉连接的关键字是CROSS JOIN,结果是笛卡尔乘积。原创 2021-09-22 21:59:27 · 217 阅读 · 0 评论 -
MySQL(21)——sql99语法(左(右)外连接)
1. 概念左外连接:left join左边的是主表; 右外连接:right join右边的是主表; 左外连接和右外连接交换两个表的顺序,可以实现相同的效果;2. 示例(1)查询男朋友不在男生表的女生名----------左外连接SELECT b.nameFROM beauty bLEFT OUTER JOIN boys boON b.`boyfriend_id`=bo.`id`WHERE bo.`id` IS NULL;(2)查询男原创 2021-09-17 19:50:36 · 289 阅读 · 0 评论 -
MySQL(20)——sql99语法(非等值连接)
(1)查询员工工资级别SELECT salary, grade_levelFROM employees eINNER JOIN job_grades gON e.`salary` BETWEEN g.`lowest_sal` AND g.`highest_sal`;(2)根据工资级别查询,查询人员个数大于20的数据,并且按工资级别降序SELECT COUNT(*), grade_levelFROM employees eINNER JOIN原创 2021-09-15 21:24:30 · 163 阅读 · 0 评论 -
MySQL(19)——sql99语法(等值连接)
1. 语法select 查询列表from 表1 别名 【连接类型】join 表2 别名on 连接条件【where 筛选条件】【group by 分组条件】【having 筛选条件】【order by 排序列表】【】表示可选。2. 连接类型内连接:inner 外连接: 左外连接:left 【outer】 右外连接:right 【outer】 全外连接:full 【outer】 交叉连接: cross3. 特点添加排序、分组、筛选 inner可以省略..原创 2021-09-15 21:14:38 · 994 阅读 · 0 评论 -
MySQL(18)——连接查询(自连接)
(1)查询员工名和上级的名称SELECT e.employee_id 员工id, e.last_name 员工名, m.employee_id 上级领导id, m.last_name 上级领导名FROM employees e, employees mWHERE e.`employee_id`=m.`manager_id`;原创 2021-09-12 20:56:00 · 234 阅读 · 0 评论 -
MySQL(17)——连接查询(非等值连接)
(1)查询员工的工资和工资级别SELECT salary, grade_levelFROM employees e, job_grades gWHERE salary BETWEEN g.`lowest_sal` AND g.`highest_sal`;原创 2021-09-12 20:44:21 · 159 阅读 · 0 评论 -
MySQL(16)——连接查询(等值连接)
1. 笛卡尔乘积表1有m行数据,表2有n行数据,查询结果有m*n行数据。2. 分类(1)按年代分类sql92标准:仅支持内连接 sql99标准(推荐):支持内连接、外连接(左外连接和右外连接)、交叉连接(2)按功能分类内连接:等值连接、非等值连接、自连接 外连接:左外连接、右外连接、全外连接 交叉连接3. 等值连接(1)查询女生名及其对应的男朋友名SELECT girlname, boynameFROM boys, girlsWH原创 2021-09-10 20:58:45 · 4425 阅读 · 0 评论 -
MySQL(15)——分组查询(按函数分组)
按表达式或函数分组(1)按员工姓名(last_name)分组,查询每一组的员工个数,筛选满足员工个数大于5的SELECT COUNT(*) c, LENGTH(last_name) len_nameFROM JDSCGROUP BY len_nameHAVING c>5;按多个字段分组(2)查询每个部门(department_id)、每个工种(job_id)的员工的平均工资(salary)SELECT AVG(原创 2021-09-09 21:29:45 · 234 阅读 · 0 评论 -
MySQL(14)——分组查询
1. 语法SELECT 分组函数,列(要求出现在GROUP BY的后面)FROM 表名【WHERE 筛选条件】GROUP BY 分组的列表【ORDER BY 子句;】【】表示可选项。2. 特点1)分组查询中筛选条件分为两类:分组前筛选:数据源为原始表,位置在group by子句前面,关键字为WHERE 分组后筛选:数据源为分组后的结果集,位置在group by子句后面,关键字为HAVING2)分组函数做条件肯定放在HAV原创 2021-09-08 20:32:15 · 217 阅读 · 0 评论 -
MySQL(13)——分组函数
1. 概念分组函数用于统计使用,所以又称为聚合函数或统计函数,亦或组函数。2. 分类sum: 求和avg: 平均值max: 最大值min: 最小值count:计算个数(计算非空值个数)3. 特点sum、avg一般用于处理数值型,max、min、count可以处理任意类型; sum、avg、max、min、count均忽略null; 可以和distinct搭配实现去重;#去重---SUMSELECT SUM(DISTINCT salary),SUM(s...原创 2021-09-06 21:31:16 · 153 阅读 · 0 评论 -
MySQL(12)——流程控制函数
1. if函数SELECT IF(12>10, '大于', '小于') 结果;2. case函数语法1case 要判断的字段或表达式when 常量1 then 要显示的值1或语句1;when 常量2 then 要显示的值2或语句2;...else 要显示的值n或语句n;end示例:/*部门号(department_id)=30,显示工资(salary)的1.1倍部门号=40,显示工资的1.2倍部门号=50,显示工资的1.3倍其他部门,显示原工资表名:原创 2021-09-06 19:44:30 · 202 阅读 · 0 评论 -
MySQL(11)——其他函数
(1)查看当前版本SELECT VERSION();(2)查看当前数据库SELECT DATABASE();(2)查看当前用户SELECT USER();原创 2021-09-05 21:23:37 · 117 阅读 · 0 评论 -
MySQL(10)——日期函数
1. now返回当前系统日期。SELECT NOW();2. curdate返回当前系统的日期,不包含时间。SELECT CURDATE();3. curtime返回当前时间,不包含日期。SELECT CURTIME();4. 获取日期指定的部分SELECT YEAR(NOW()) 年;#返回: SeptemberSELECT MONTHNAME(NOW()) 月;5. str_to_date将日期格式为字符转换成指定格式的日期。SELE原创 2021-09-05 21:19:05 · 227 阅读 · 0 评论 -
MySQL(09)——数学函数
1. round四舍五入。正数四舍五入:#输出:2SELECT ROUND(1.76);负数四舍五入:#输出:-1SELECT ROUND(-1.12);根据小数点位数四舍五入:#输出2.12SELECT ROUND(2.123,2);2. ceil向上取整,返回大于等于该参数的最小整数。#输出: 5SELECT CEIL(4.001);3. floor向下取整,返回小于等于该参数的最大整数。#输出:3SELECT FLOOR(3.9.原创 2021-09-05 20:42:46 · 104 阅读 · 0 评论 -
MySQL(08)——字符函数
1. 概念将一组逻辑语句封装在方法体中,对外暴露方法名,隐藏了实现细节,提高了代码的重用性。2. 调用方式SELECT 函数名(实参列表);或SELECT 函数名(实参列表) FROM 表名;3. 分类(1)单行函数例如:concat、length、ifnull等。(2)分组函数(统计函数)做统计使用。4. 单行函数4.1 字符函数4.1.1 length获取参数值的字节个数。SELECT LENGTH("TOM"); SELECT L原创 2021-09-03 22:05:18 · 176 阅读 · 0 评论 -
MySQL(07)——排序查询
1. 语法SELECT 查询列表FROM 表名【WHERE 筛选条件】ORDER BY 排序列表 【asc|desc】;【】表示可选。2. 特点asc表示升序,desc表示降序。如果不写,默认升序。 order by子句中可以支持单个字段、多个字段、表达式、函数、别名 order by子句一般是放在查询语句最后面,limit子句除外3. 示例示例1:#查询员工信息, 要求工资从高到低排序SELECT * FROM 表名 ORDER原创 2021-09-01 21:09:51 · 2783 阅读 · 0 评论 -
MySQL(06)——条件查询练习
#查询员工号为120的员工的姓名、部门号和年薪SELECT 员工名, 部门号, 年薪*12*(1+IFNULL(奖金率)) AS 年薪FROM 表名;注意: 奖金率可能为NULL,需要用IFNULL。原创 2021-09-01 19:28:03 · 125 阅读 · 0 评论 -
MySQL(05)——条件查询
1. 语法SELECT 查询列表FROM 表名 WHERE 筛选条件;执行顺序:表名——筛选——查询列表2. 分类(1)按条件表达式筛选条件运算符:>(大于) <(小于) =(等于) !=(不等于) <>(不等于) >=(大于等于) <=(小于等于)(2)按逻辑表达式筛选逻辑表达式:&&(与) ||(或) !(非) and or not(3)模糊查询关键词:li...原创 2021-08-31 21:38:02 · 207 阅读 · 0 评论 -
MySQL(04)——+号的作用与CONCAT拼接函数
(1)两个操作数都为数值型,则做加法运算。SELECT 10+20;(2)其中一方为字符型,试图将字符型转换成数值型,转换成功,做加法运算。SELECT '12'+23;(3)其中一方为字符型,试图将字符型转换成数值型,转换失败,将字符型数值转换成0继续做运算。SELECT 'Tom'+10;(4)只要其中一方为null,则结果为nullSELECT null+12;...原创 2021-08-31 20:14:02 · 271 阅读 · 0 评论 -
MySQL(03)——起别名与去重
1. 起别名1.1 方式1(使用AS):SELECT 100%12 AS 结果;或SELECT 字段名1 AS 结果1,字段名2 AS 结果2 FROM 表名;1.2 方式2(使用空格):SELECT 字段名1 结果1,字段名2 结果2 FROM 表名;1.3示例查询字段名,显示结果为out putSELECT 字段名 AS "out put" FROM 表名;避免出现歧义。1.4. 好处便于理解 如果查询的字段友重名的情况,使用别名便于区分2..原创 2021-08-30 20:34:12 · 192 阅读 · 0 评论 -
MySQL(02)——查询常量、表达式、函数
1. 查询常量SELECT 100;100是一个普通的值。SELECT 'Tom';注意:注意使用单引号,MySQL中没有字符串的概念。2. 查询表达式SELECT 100*80;3. 查询函数SELECT VERSION();步骤: 调用VERSION()函数获取结果并显示。...原创 2021-08-30 20:18:59 · 660 阅读 · 0 评论 -
MySQL(01)——查询表中的字段
1. 打开库名USE 库名2. 查询表中的单个字段SELECT 字段名 FROM 表名;3. 查询表中的多个字段SELECT 字段名1,字段名2,字段名3 FROM 表名注意:中间用逗号隔开。4. 查询表中的所有字段SELECT * FROM 表名"*"表示所有字段。"*"查询出来的表的顺序和原始表相同。...原创 2021-08-30 20:11:11 · 2171 阅读 · 0 评论