MySql学习笔记

本文介绍了MySQL的基础知识,包括数据库的概念、基本操作如增删改查,SQL语句的应用,以及表的设计与创建等内容。
1,什么是数据库?
Excel就是一个数据表,人操作
MySQL是一个数据库,便于程序操作,便于存储百万以上级别的数据

对于数据库的基本操作:增删改查
如何对数据库操作 SQL语句 SQL命令 Structured Query Language(SQL)
1,每个命令后;
2,不区分大小写

学习数据库注意事项:学会老师讲解的80%,遇到剩余20%不懂的,学会多搜索
2,数据库排行(2016.10)
Oracle
MySQL
SQL Server
MongoDB
PostgreSQL
DB2
3,关系数据库,
是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。


Oracle、SQL Server、MySQL


4,服务器端运行原理图
(理解什么是ip和端口号)
Web Application Server
Game Server

5,如何在MySQL中存储数据
MySQL下可以创建多个库(数据库)database
每个库下可以创建多个表(表格)table
通过表格存储我们的数据


6,什么是表(Table)(表,行,列,格子)
表有表头(表头表示这个表有哪些列)
表里面的每一行都是我们存储的数据


7,假如我们要学生信息和班级信息,如何设计表呢






8,MySQL安装
默认超级管理员
root root
9,
MySQL Workbench介绍
MySQL Command Line Editor

数据库的链接
localhost  127.0.0.1  都代表本机

10,什么是表(Table)(表,行,列,格子)
表有表头(表头表示这个表有哪些列)
表里面的每一行都是我们存储的数据
主键(Primary Ke y)
1,每行数据独一无二的标识
2,一个表必须有主键(只能有一个主键)
3,不能为NULL(空值)
4,由一列或者多列组成
Unique Key
1,表示该项数据不能重复
2,允许一条可以为NULL
外键(Foreign Key)
1,这列数据引用了另外一个表的主键 


表的关系
一对一 OneToOne
一对多 OneToMany
多对多 ManyToMany

数据库的创建
表的创建
列的设置


数据添加


数据删除


数据修改


数据查询


10,数据类型
字符串 - char varchar(length) - string
整数 - int - int
小数 - float - float
日期时间 - date - DateTime

默认值
可以为NULL
自动增长
11,MySQL控制台
help;
quit;
show databases;
use databasexxx;
show tables;
select * from tablename;
12,MySQL Workbench全面功能学习
http://dev.mysql.com/doc/workbench/en/

添加表
添加数据
数据的查询
数据的更改
数据的提交
添加数据
修改表结构查看表结构 alter table
13,select column_list 
from table_name 
where filter_condition 
order by column_list (desc)
limit rom_limit;



SQL添加注释
--单行注释
/* */多行注释
14, 查询静态值
select 'some string';
select 1+1;
select now();
select curdate();
select curtime();
select pi();
select mod(45,7);
select sqrt(25);
可以在查询的时候通过as 修改这一列的列名

15,select * from where 1=2;


16,查询的时候可以对查询的列做一些运算
*
/ (除 结果为浮点)
div (除 结果为整数)
%  mod (求余,结果为浮点数)

-
17,查询的时候可以使用的功能函数
round() 四舍五入
round(columnname,x)四舍五入保留x位小数
floor()直接舍
ceiling()直接入
18,字符串操作
concat 
left 
length 
reverse
replace
date_format %m %b %d %y %Y %T %f 
http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format
get_format(datetime,'EUR' 'ISO' 'USA')
dayofweek
quarter
week
monthname
19,distinct


20,where条件
1,数字 > < = >= <= <>
2,字符串 = '' > < = >= <= <> !=

逻辑操作
is 仅用is null或is not null
and or not
and 优先级> or 

范围判断
in (not in)
between (not between)     示例:select * from category where category_id between 1 and 9;
like (not like) % _
   示例1:select * from category where name like 'A%';
关于NULL的条件
is NULL
is not NULL


21,limit x
limit x1,x2;

22,创建表
create table tablename(
col_name type not null auto_increment,
col_name type default,
primary key(col_name)
);
desc tablename;查看表结构
插入表
insert into tablename(col_name,col_name,col_name)
values(value1,value2,value3,value4,value5);

更新数据
update tablename
set col_name = 'value',
col_name = 'value'
where condition;

删除数据
delete from tablename where condition;

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
<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、付费专栏及课程。

余额充值