JAVA坎坷之路(11 day)

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2022-6-30

-- 删除表 DROP TABLE 表名;

-- 向表插入一条数据 INSERT INTO 表名(字段1,字段2....) VALUES(插入的数据1,插入的数据2....); 这里要注意插入的数据要和字段对应

-- 插入多条数据 INSERT INTO 表名(字段1,字段2....) VALUES(插入的数据1,插入的数据2....),(插入的数据1,插入的数据2....) ok吧 难不倒你们;

-- 查询所有数据 SELECT * FROM 表名;

-- 删除一条数据 DELETE FROM 表名 WHERE 表达式(例如 id=1);

-- 删除全部数据 DELETE FROM 表名;

-- 清空表数据 TRUNCATE TABLE 表名;

-- LIMIT关键字 后面跟查询的条件

-- 查询指定条数的结果集(查前10条 记住一定要跟limit 否则不行) SELECT * FROM 表名 LIMIT 10;

-- 查询指定起始位置的结果集(表示从第二条开始查后面10条的数据) SELECT * FROM 表名 LIMIT 1,10;

-- 查询指定字段的结果集(表示从第二条开始查后面10条的数据) SELECT id name FROM 表名 LIMIT 1,10;

-- 更新某一列字段的值(更新前三条数据) UPDATE 表名 SET 字段1=11,字段2='哈哈' LIMIT 3;

-- 更新指定字段的值 UPDATE 表名 SET 字段1=11,字段2='哈哈' WHERE id=3;

-- % 表示指代任意内容 例如 '%小%' 表示包含小的表达式 且前后都有内容

-- 使用like模糊查询 SELECT name FROM 表名 WHERE name LIKE '%文%';

-- WHERE 条件 <,>,=,<>(不等于),<=,>=,LIKE,NOT LIKE(不满足模糊条件),BETWEEN AND(在两个值之间,包含两端)

-- NOT BETWEEN AND(不在两个值之间 不包含两端),IS NULL(空),NOT IS NULL(非空)

-- 单条件查询上面写过 这里写多条件查询吧AND表示和(并且)的意思 SELECT * FROM 表名 WHERE id=8 AND name LIKE '哥%';

-- OR多条件查询OR(或) SELECT * FROM 表名 WHERE id=8 OR name LIKE '哥%';

-- BETWEEN AND演示(查询10-30之间的数据) SELECT * FROM 表名 WHERE id BETWEEN 10 AND 30;

-- UNION联合查询 UNION ALL把满足两种查询条件的结果集合并在一起

-- SELECT * FROM 表名 WHERE id=8 AND name LIKE '哥%' UNION ALL SELECT * FROM 表名 WHERE id=3 AND name LIKE '哈%';

-- 使用 UNION ALL 需要注意的小细节 结果集有重复数据并没有去除

-- 使用 UNION 需要注意的小细节 结果集去除了重复数据

-- SELECT * FROM 表名 WHERE id=8 AND name LIKE '哥%' UNION SELECT * FROM 表名 WHERE id=3 AND name LIKE '哈%';

[滑稽][滑稽][滑稽][滑稽][滑稽]
突然发现
就是发图片和文字很难表达出来
因为图片和文字不在同一位置
大河之剑天上来 [滑稽][滑稽]

今日刚好突破筑基二层

诸位道友努力修炼吧 尔等圣体神体

必然威慑诸天 独断万古

吾只希望能够仰望诸位
[滑稽][滑稽][滑稽]
-- ORDER BY排序

-- ASC从小到大排序 SELECT * FROM 表名 ORDER BY id ASC;

-- DESC从大到小排序 SELECT * FROM 表名 ORDER BY id DESC;

-- 多字段排序演示 SELECT * FROM 表名 ORDER BY id DESC,name ASC;

-- 注意点 对字符串类型排序 其实是对字段字符串编码的排序 英文字符排序在前 中文排序在后 其中排序规则是安装字符ascll码 对应值的大小排序的

-- JOIN 表连接 AS起别名 外号

-- LEFT JOIN左连接 ON后面跟着的条件是连接表的条件 左连接是以左边的表为基准 若右表没有对应的值 用null填充
-- SELECT * FROM 表名 AS a LEFT JOIN 表名 AS b ON a.id=b.id;

-- INNER JOIN内连接 表示左右两表都有对应的数据
-- SELECT * FROM 表名 AS a INNER JOIN 表名 AS b ON a.id=b.id;

-- LEFT JOIN右连接 ON后面跟着的条件是连接表的条件 右连接是以右边的表为基准 若左表没有对应的值 用null填充
-- SELECT * FROM 表名 AS a RIGHT JOIN 表名 AS b ON a.id=b.id;

-- 多表混合连接查询 后面把前面执行的结果集当成一个表 AS可以不写
-- SELECT * FROM 表名 a LEFT JOIN 表名 b ON a.id=b.id RIGHT JOIN 表名 c ON b.id=c.id INNER JOIN 表名 d ON c.id=d.id;
-- 这里ok的吧

-- 补充 ON 后面表示连接条件 并且可以用 WHERE 进行筛选
-- SELECT * FROM 表名 a LEFT JOIN 表名 b ON a.id=b.id RIGHT JOIN 表名 c ON b.id=c.id INNER JOIN 表名 d ON c.id=d.id WHERE id=8;

-- GROUP BY分组
-- SELECT * FROM 表名 a LEFT JOIN 表名 b ON a.id=b.id RIGHT JOIN 表名 c ON b.id=c.id INNER JOIN 表名 d ON c.id=d.id GROUP BY d.id,c.id;
-- 单字段分组和多字段分组的区别在于 单字段是以一个字段来判断数据是否重复分组出来的结果
-- 多字段分组是以多个字段同时来判断是否重复分组出来的结果
4楼
呵呵二爷爷 2022-6-30
-- DISTINCT去重 多字段去重只有所有指定的列信息都相同 才会被认定为重复的数据
-- SELECT DISTINCT * FROM 表名;

-- 聚合函数 AVG() 求平均值 SELECT AVG(age) FROM 表名;

-- COUNT() 统计总条数 SELECT COUNT(id) FROM 表名;

-- SUM() 统计总和 SELECT SUM(age) FROM 表名;

-- 注意点 avg 和 sum 会忽略值为null的数据

-- MIN() 取最小值 SELECT MIN(age) FROM 表名;

-- MAX() 取最大值 SELECT MAX(age) FROM 表名;

-- 使用 HAVING 后面的条件对分组聚合函数的值进行筛选
-- SELECT AVG(a.age) FROM 表名 a LEFT JOIN 表名 b ON a.id=b.id GROUP BY a.id,b.id HAVING AVG(a.age) > 20;

-- 条件判断 if() 如果成立 返回第二个参数 不成立返回第三个参数

-- SELECT IF(age > 17,'成年','未成年') FROM 表名;

-- IFNULL() 如果字段的值为null 则返回第二个参数的值 否则返回原本的值

-- SELECT IFNULL(age,18) FROM 表名;

-- CASE条件判断 对age字段进行判断 并将判断后的列重命名为new_age 若指定的age字段满足 WHEN则返回对应的 THEN后面的值

-- SELECT CASE age WHEN 18 THEN 20 ELSE 0 END AS new_age FROM 表名;
5楼
呵呵二爷爷 2022-6-30
-- 还有许多的系统函数这里就不再多说 下面是正则表达式

-- 下一个字符标记符 一个向后引用 一个八进制转义符 相当于多种编程语言中都有的转义字符概念
-- ^ 匹配输入字行首 如果设置了RegExp对象的Multiline属性 ^也匹配

之后的位置
-- $ 匹配输入字行首 如果设置了RegExp对象的Multiline属性 $也匹配

之后的位置
-- * 匹配前面的子表达式任意次
-- + 匹配前面的子表达式多次或一次
-- ? 匹配前面的子表达式零次或一次
-- {n} n是一个非负整数 匹配确定的n次
-- {n,} 至少匹配n次
-- {n,m} n=m 最少匹配n次且最多匹配m次
-- . 匹配除

之外的任何单字符
-- 正则表达式暂时就到这里 毕竟正则这个东西相似太多了 会一点基本即可当然 要深入也可以

-- MySQL存储引擎概述 MySQL数据库提供了独有的插件式存储引擎 常见的存储引擎有 INNODB myisam ndb memory archive federated matia等等 并且不同的存储引擎有着完全不同的功能 建表的时候可以指定存储引擎的类型 若不指定存储引擎类型 MySQL 8.0 默认存储引擎就是innodb

-- INNODB存储引擎 最大的特点就是支持事务 它主要应用于事务(OLTP)相关的数据存储 它的特点有行锁 支持外键 并且一般查询操作不会产生锁 INNODB有多版本并发控制 并且3中隔离级别 这种隔离级别 分为 顺序读 可重复读 读已提交 读未提交

-- 演示建表指定存储引擎 CREATE TABLE 表名(字段....)ENGINE=INNODB; ENGINE=INNODB 指定存储引擎类型为innodb

-- MySQL逻辑架构 逻辑架构组成 server层 连接池(连接管理 授权认证 安全) 执行器(调用引擎得出结果) 优化器(选择最优执行计划) 解析器(词法/语法解析) 查询缓存(命中直接返回结果)
-- 存储引擎层 INNODB myisam csv....

-- 一条查询语句是如何执行的 SELECT id FROM 表名 WHERE id=1;

-- 连接池 首先 通过mysql客户端进行数据库连接 这时遇到连接池 连接池负责客户端的连接管理 授权认证
-- mysql -hlocalhost -uroot -p 如果用户名和密码认证通过 连接池会通过权限表获取这个用户所拥有的权限信息
-- 如果用户名和密码认证不通过 则会收到一个错误提示ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
-- 建立连接之后 会产生相应的连接信息 通过show processlist;命令查看 注意Command这一行 值为Sleep 表示这是一个空闲连接
-- +-----+-----------------+-----------------+------+---------+--------+------------------------+------------------+
-- | Id | User | Host | db | Command | Time | State | Info |
-- +-----+-----------------+-----------------+------+---------+--------+------------------------+------------------+
-- | 5 | event_scheduler | localhost | NULL | Daemon | 670540 | Waiting on empty queue | NULL |
-- | 189 | root | localhost:55749 | web | Sleep | 4380 | | NULL |
-- | 190 | root | localhost:55750 | web | Sleep | 3385 | | NULL |
-- | 192 | root | local
6楼
呵呵二爷爷 2022-6-30
-- 优化器 从解析器出来 就到优化器阶段 优化器负责找到最优的执行阶段 也就是决定了sql语句的执行方案
-- SELECT id FROM 表名 WHERE id=1; 可以遍历表所有行 找出所有id等于1的值 也可以通过索引idx_id 找到id等于1的值 前提是字段id有创建索引idx_id
-- 两种方案的结果是一样的 但是执行效率不一样 优化器的作用就是选择最优的执行方案

-- 执行器 负责调用存储引擎 拿到查询结果 SELECT id FROM 表名 WHERE id=1; 调用innodb引擎接口获取表的第一行 如果id值等于1 则将id值存进结果集 如果不等于则跳过 取下一行
-- 调用innodb引擎接口获取下一行 重复第一步的逻辑 一直到表的最后一行
-- 将符合条件的结果集返回给客户端

-- MySQL物理组成 日志文件和数据文件

-- 日志文件 二进制日志 INNODB redo log 错误日志 查询日志
-- 数据文件 INNODB .idb ibdata myisam .myd .ayi csv .csv

-- 还有配置文件 my.cof pid文件 mysql.pid socket文件 mysql.socket

-- 日志文件 二进制日志 其实就是我们平常说的binlog 它是MySQL的重要日志模块 在server层实现
-- binlog以二进制的形式 将所有修改数据的query记录到日志文件中 包括query语句 执行时间 相关事务....

-- binlog的开启 通过配置文件my.cnf 或 my.ini 中显示指定参数 log-bin=file_name 如果未指定file_name 则会记录为mysql-bin.******(*表示0-9之间的某个数字 表示日志的序号)
-- log-bin=/mysql/logs/log binlog的存储路径

-- 重要日志模块 INNODB redo log 是存储引擎innodb生成的日志 主要为了保证数据的可靠性 记录了innodb所做的所有物理变更和事务信息

-- 通过修改 innodb_log_file_size和innodb_log_files_in_group来配置redo log的文件数量和每个日志的大小
-- innodb_log_file_size=1000M #每个文件的大小
-- innodb_log_files_in_group=3 #文件数量

-- 错误日志 log-error = 文件存放路径

-- 慢查询日志 slow_query_log=1 开启慢查询
-- long_query_time=1 设置慢查询阈值为1s
-- slow_query_log_file=文件路径
-- 一般查询日志 general_log=OFF 默认是关闭的
-- general_log_file=文件路径
-- 数据文件 .frm 存放表相关的元数据 包括表结构信息...
-- .ibd 和 ibdata都是innodb引擎的数据文件
-- 如果独享表空间的存储方式 则使用.ibd文件来存放数据 每张表都会有一个单独的.ibd文件
-- 如果是共享表空间的方式 则使用ibdata文件来存放数据 所有表共用一个ibdata文件
-- 通过配置参数innodb_file_per_table=1 为开启独享表空间
7楼
呵呵二爷爷 2022-6-30
MySQL暂且到这[滑稽][滑稽][滑稽]
8楼
呵呵二爷爷 2022-6-30
HTML 就用图片吧
主要是使用文本会有点奇奇怪怪的
[滑稽][滑稽][滑稽][滑稽]

span标签和hx标签

评论

登录后才可发表内容
  • 主题

    23

  • 帖子

    325

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0522s Mem:2148Kb