![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql基础
comochris
Don't shout messager
展开
-
mysql 密码 配置Access denied for user ‘root‘@‘localhost‘
Ubuntu mysql 无密码登入安全模式登入MySQL停止mysql进程sudo /etc/init.d/mysql stop创建mysqld文件 sudo mkdir -p /var/run/mysqld给文件赋权 sudo chown mysql:mysql /var/run/mysqld进入安全模式 sudo /usr/bin/mysqld_safe --skip-grant-tables --skip-networking &无原创 2020-09-15 14:59:20 · 103 阅读 · 0 评论 -
15.s主从复制
主从复制步骤master将改变记录到二进制日志(binary log) ,这些记录过程叫二进制日志事件。slave将master的binary log event拷贝到它的中继日志slave重做中继日志中的事件,将改变应用到自己的数据库中,MySQL复制是异步且串行化的。基本原则一(slave)对多(master)...原创 2020-09-09 17:27:02 · 64 阅读 · 0 评论 -
14.mysql锁机制
MySQL锁机制锁是计算机协调多个进程或线程并发访问某一资源的机制例如在淘宝买商品的模型,只有一件商品时,如何解决谁买到商品的问题这里要用到事务,先从库存表中取出物品数量,然后再插入订单,付款后插入付款表信息,然后再更新商品数量,再这个过程中使用锁可以对有限的资源进行保护,解决隔离和并发的矛盾。锁的分类按数据操作的类型分读锁共享锁,针对同一份数据,多个读操作可以同时进行而不相互影响写锁排它锁,当前写操作未完成前,会阻断其他写锁和读锁从对数据操作的粒度来分表原创 2020-09-09 17:26:19 · 72 阅读 · 0 评论 -
13.s日志查询
mysql慢查询慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中相应时间超过时间阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL。则会被记录到慢查询日志中,long_query_time的默认值为10(s),默认MySQL数据库没有开启慢查询日志SHOW VARIABLES LIKE '%slow_query_log%'#如果要永久开启,就要修改配置文件my.cnfs原创 2020-09-09 17:25:44 · 198 阅读 · 0 评论 -
12.s查询截取分析
查询优化观察,至少跑一天,看看生产的慢SQL情况开启慢查询日志,设置阈值,比如超过5秒钟的就是慢SQL,并将它抓取出来explain+慢SQL分析show profile运维经理 or DBA,进行数据库服务器参数的调优===总结慢查询的开启并捕获explain+慢SQL分析show profile查询SQL在mysql服务器里面执行细节和生命周期情况SQL数据库服务器的参数调优优化原则:小表驱动大表 ####################原理(RBO)########原创 2020-09-09 17:24:27 · 110 阅读 · 0 评论 -
11.s_性能优化
性能下降SQL慢 执行时间长 等待时间长查询数据过多能不能拆,条件过滤尽量少关联太多表,太多joinjoin 原理。用 A 表的每一条数据 扫描 B表的所有数据。所以尽量先过滤。没有利用索引单值 ==> create index idx_user_name on user(name)复合服务器调优及各个参数设置(缓冲、线程数等)(不重要的DBA工作)索引是帮助MYSQL高效率获取数据的数据结构。(本质是数据结构,可以类比字典–排好序的快速查找数据结构b原创 2020-09-09 17:23:18 · 145 阅读 · 0 评论 -
10.s_常用join查询
mysql语句的执行顺序select 查询列表 # 7from 表 # 1[join type join 表2 # 2 on 连接条件 # 3 where 筛选条件 # 4 group by 分组条件 # 5 having 分组后筛选 # 6 order by 排序字段] # 8 limit [offset,]size;原创 2020-09-09 17:22:50 · 86 阅读 · 0 评论 -
9.s_存储引擎
对比项MyISAMInnoDB主外键支持不支持事务不支持支持行表锁表锁,即使操作一条记录也会锁住整个表,不适合高并发的操作对内存要求较高,而且内存大小对性能有决定性的影响缓存只缓存索引,不缓存真实数据不仅缓存索引还要缓存真实数据,对内存要求较高,而且内存大小对性能有决定性的影响表空间小大关注点性能事务默认安装YY用户表默认使用NY自带系统表使用YNinnodb 索引 使用 B+TREE myisa...原创 2020-09-07 20:31:23 · 104 阅读 · 0 评论 -
8.函数
函数存储过程:可以有多个返回。适合做批量插入、批量更新函数:有且仅有1个返回,适合做数据处理后返回语法CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型BEGIN 函数体END#使用delimiter来设置结束标记SELECT 函数名(参数列表)#有参有返回CREATE FUNCTION myf1(empName VARCHAR(20)) RETURNS DOUBLEBEGIN SET @sal=0; #用户变量 #DECLARE sal INT原创 2020-09-07 20:30:50 · 126 阅读 · 0 评论 -
7.存储过程
变量变量系统变量全局变量针对所有会话(连接)有效,但不能跨重启(这需要修改配置文件)会话变量对当前会话有效自定义变量自定义变量1,同于会话变量的作用域,2作用于会话中任何地方 3.必须添加@符号局部变量1.作用于BEGIN END中 2.BEGIN END的第一句3.一般不加@,需要限定类型系统变量1.查看系统变量show global|session variables2.查看满足条件的部分系统变量show global|sess原创 2020-09-07 20:30:24 · 108 阅读 · 0 评论 -
6.视图
视图:一种虚拟存在的表,在使用视图时动态生成,只保存了sql逻辑,不保存查询结果。应用场景:1.多个地方用到同样结果2.该查询结果使用的sql语句较复杂#无视图时SELECT stuname,majornameFROM stuinfoINNER JOIN major m ON s.'majorid' = m.'id'WHERE s.'stuname' LIKE '张%'#使用视图CREATE VIEW v1ASSELECT stuname,majornameFROM stuinf原创 2020-09-07 20:29:29 · 85 阅读 · 0 评论 -
5.事务控制
扁平事务要么都执行,要么都回滚,InnoDB最常用,最常见的事务.带有保存点的扁平事务事务的操作过程有 begin, A, B, C, D, commit 几个过程,那么带有保存点的扁平事务过程大致如下:begin–> 隐含保存点1(save work 1)–>A–>B(save work2)–>C–>D(rollback work2) -->commit上述过程中如果遇到rollback work2, 只需要回滚到保存点2,不需要全部回滚.简单来说,带有保存原创 2020-09-07 20:28:36 · 256 阅读 · 1 评论 -
4.约束条件
六大约束1.NOT NULL : 非空2.DEFAULT: 默认值3.PRIMARY KEY:主键4.UNIQUE:保证唯一性,可以为空5.CHECK:检查约束 [mysql中不支持]6.FOREIGN KEY: 外键约束,用于保证该字段的值必须来自于主表关联列的值。添加约束的时机:(数据添加之前) 1.创建表时 2.修改表时 CREATE TABLE 表名( 字段名 字段类型 列级约束 #外键约束无效果 字段名 字段类型 表级约束 #非空、默认无效)C.原创 2020-09-07 20:27:41 · 308 阅读 · 0 评论 -
3.子查询例题分析
1.查询工资最低的员工信息#(1) 查询最低工资SELECT MIN(salary)FROM employees#(2) 查询 last_name, salarySELECT last_name,salaryFROM employeesWHERE salary=( SELECT MIN(salary) FROM employees);2.查询平均工资最低的部门信息#(1) 查询各部门平均工资SELECT AVG(salary) department_idFROM emplo原创 2020-09-07 20:26:52 · 167 阅读 · 0 评论 -
2.mysql语句大全
select * from emp; #注释#---------------------------#----命令行连接MySql---------#启动mysql服务器net start mysql#关闭 net stop mysql#进入mysql -h 主机地址 -u 用户名 -p 用户密码#退出exitstatus;显示当前mysql的version的各种信息。#---------------------------#----MySql用户管理-------原创 2020-09-07 20:25:23 · 58 阅读 · 0 评论 -
1.mysql环境配置
1.修改mysqld.cnf配置文件sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf,进入到这个配置文件,然后在这个配置文件中中加入skip-grant-tables这句话。user = mysqlpid-file = /var/run/mysqld/mysqld.pidsocket = /var/run/mysqld/mysqld.sockport = 3306b原创 2020-09-07 20:24:36 · 130 阅读 · 0 评论