Mysql 学习笔记

      学习 mysql 之前有必要搞懂数据表和数据库还有Mysql三者的关系:

mysql中保存了很多数据库、一个数据库中可以保存很多表

对数据表的(创建表)(删除表)(修改表字段)(查询表结构)。 

注意:这里的操作对象是表,对表的操作也就是表的结构,和表中的字段的操作(字段和记录要分清楚)

前提:表是在数据库下的,所以要先确实使用哪个数据库。(use database)

接下来分享一些我刚入门做的一些笔记,希望对大家有用~

一、下载安装:

https://www.mysql.com/downloads/

教程可以参考链接:https://jingyan.baidu.com/article/8ebacdf02e392a49f65cd52d.html

二、登录方式

1、 提示 aborting,没有 data 目录

cd 至bin 目录,mysqld –initialize,会自动创建目录,网上也有很多解决措施

三、启动mysql 服务

1、 net start mysql 报错

解决办法:

计算机——管理——服务,查看如下:

使用net start mysql57 再次尝试成功:

四、登录

 (默认安装时为root用户,安装时设置密码 1234)

mysql -uroot –p

password 1234

1、 创建用户:

CREATE USER 'mzsql'@'host' IDENTIFIED BY '123456';

2、 授权

3、 SELECT host, user, authentication_string FROM user WHERE user ='mzsql';

(host, user, authentication_string, select_priv,insert_priv, update_priv)

VALUES ('localhost', 'mzzsql',authentication_string('mzzsql123'), 'Y', 'Y', 'Y');

4、 创建用户并授权

5、 grant all privileges on mq.* to test_1@localhost identified by'1234';

6、 查看当前用户

usemysql;

selectUser from user;(select 列名 from 表名 where 条件)

五、名词解释

1、select选择
select 列名 from 表名 where 条件
2insert插入
insert into 表名(列名) values(各个字段的值)
列名可以省略
也可以另一种形式,没有VALUES的
insert into 表名查询结果
如 insert into a
select '','','' --这里的列要与表 a定义相符才能正常插入
3update修改
update 表名 set 列名=值 where 条件
如:update a set a.a1='1' where a.a2='3'
a2=3的所有a1修改为1
4delete删除
删除表格中的记录
delete from 表名 where 条件
如:删除a.a1='1'的所有记录
delete from a where a.a1='1'

六、查询用户表

         注意: MySQL5.7 user 表的 password 已换成了authentication_string

         1、查询用户表()

           use mysql;

           SELECT User, Host, authentication_stringFROM mysql.user;


 

         2、显示所有的用户(不重复)

            usemysql;

           SELECT DISTINCT User FROM mysql.user;

七、数据库查看、增加、删除

         1、查看 mysql 中所有数据库

            mysql> show databases;

2、创建名为test_1的数据库

               mysql> CREATE DATABASE test_1;

Query OK, 1 row affected (0.00 sec)

3、删除名为test_1的数据库

mysql> DROP DATABASE test_1;

Query OK, 0 rows affected (2.30 sec)

4、创建数据表

CREATE TABLE 数据表名(

    字段名1  数据类型[列级别约束条件],

    字段名2  数据类型[列级别约束条件],

  字段名3  数据类型[列级别约束条件]

);

解释:1[]中括号中的内容表示可以有可以没有

2、列级别这个一定要搞清楚说的是什么,一张表中有行有列,列表示竖,行表示横 

3、约束条件后面会讲到

   5、创建没有约束的数据表

         show tables;

 查看表结构:

        describe tables;

。。。。。。。。。。。。。

<think>嗯……用户想要查找MySQL学习笔记,而且之前已经提供了三个引用片段作为参考。让我先理解一下用户的需求和上下文。 从用户的问题历史来看,ta似乎正在系统性地学习MySQL,特别是索引、事务隔离级别这些进阶内容。三个引用片段分别涉及多列索引的使用限制(引用1)、索引优化的重要性(引用2)和事务隔离级别的分类(引用3),这些都是MySQL的核心知识点。 用户明确说“我想查找MySQL学习笔记”,但没说具体方向。考虑到ta之前关注的索引和隔离级别,笔记应该覆盖这些深度内容,同时包含基础语法以便复习。可能需要整理成系统化的知识框架。 引用1提到多列索引的字段顺序很重要——这个必须强调,因为跳过第一个字段会使索引失效。引用2指出数据清洗要在update前完成,还提到B-Tree索引的结构原理,这些都应该整合进笔记。引用3关于事务隔离级别的描述很专业,但“未提交读/提交读/可重复读/可串行化”的对比需要更清晰的表格呈现。 用户没有指定笔记形式,但学习笔记最好结构化。我打算分成七部分:基础架构、数据类型、索引(重点展开)、事务、锁机制、优化技巧、备份恢复。其中索引部分要突出引用1的字段顺序限制和引用2的B-Tree原理;事务部分详解引用3的隔离级别。 需要警惕一个细节:引用3提到“可重复读使用MVCC+X锁实现”,但MySQL的InnoDB在可重复读级别下默认用MVCC避免幻读,实际只在写操作加锁。这点要修正说明,避免误导用户。 对了,用户可能还需要对比不同存储引擎(比如InnoDB和MyISAM的事务支持差异),但引用内容没涉及。为免信息过载,先聚焦已有引用关联的知识点,结尾用开放性问题引导用户提出细化需求比较稳妥。 </think>以下是一份系统的MySQL学习笔记整理,涵盖核心概念与实践要点,结合了您提供的引用内容: --- ### **一、MySQL基础架构** 1. **逻辑架构** - 连接层:客户端连接管理、认证 - 服务层:查询解析、优化、缓存(8.0+移除查询缓存) - 存储引擎层:InnoDB(默认)、MyISAM等 --- ### **二、数据类型与表设计** 1. **常见数据类型** - 整型:`INT`、`BIGINT`(注意无符号范围) - 字符型:`VARCHAR`(变长)、`CHAR`(定长) - 时间型:`DATETIME`(精确到秒)、`TIMESTAMP`(时区敏感) 2. **设计原则** - 主键推荐自增整型(避免页分裂[^1]) - 避免`NULL`字段(增加索引复杂度) --- ### **三、索引机制(核心重点)** 1. **索引类型** - **B-Tree索引**(默认结构): - 数据有序存储,支持范围查询 - 适用场景:`=, >, <, BETWEEN, LIKE 'prefix%'`[^2] - 哈希索引:仅精确匹配(Memory引擎) - 全文索引:`FULLTEXT`(文本搜索) 2. **多列索引(联合索引)规则** - 最多支持16个字段 - **最左前缀原则**: ```sql /* 索引 (a,b,c) */ WHERE a=1 AND b=2 -- ✅ 使用索引 WHERE b=2 AND c=3 -- ❌ 无法使用索引(缺少a)[^1] ``` 3. **索引失效场景** - 对索引列进行运算(`WHERE id+1=10`) - 类型转换(字符串列用数字查询) - `LIKE '%suffix'`(前导通配符) --- ### **四、事务与隔离级别** | 隔离级别 | 脏读 | 不可重复读 | 幻读 | 实现机制 | |------------------|------|------------|------|-----------------------------| | 读未提交 (RU) | ✅ | ✅ | ✅ | 无锁 | | 读已提交 (RC) | ❌ | ✅ | ✅ | MVCC(无X锁)[^3] | | 可重复读 (RR) | ❌ | ❌ | ⚠️ | **MVCC+间隙锁**(防幻读) | | 串行化 (Serializable) | ❌ | ❌ | ❌ | 全表锁 | > **说明**: > - InnoDB在RR级别通过**间隙锁**解决幻读问题[^3] > - MVCC通过事务ID和Undo Log实现快照读 --- ### **五、锁机制** 1. **锁类型** - 行级锁:`Record Lock`(单行)、`Gap Lock`(间隙)、`Next-Key Lock`(行+间隙) - 表级锁:`ALTER TABLE`时自动加锁 2. **死锁处理** - 检测机制:等待图(wait-for graph) - 解决策略:回滚代价最小的事务 --- ### **六、性能优化** 1. **SQL优化原则** - 避免`SELECT *`,用覆盖索引 - 数据清洗在应用层完成(如`UPPER()`处理[^2]) - 批量操作代替循环单条处理 2. **Explain工具** - 关注`type`(访问类型):`const > ref > range > index > ALL` - `Extra`字段:`Using index`(覆盖索引)、`Using filesort`(需优化) --- ### **七、备份与恢复** - **逻辑备份**:`mysqldump --single-transaction`(不影响事务) - **物理备份**:Percona XtraBackup(热备份) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值