# MySQL 笔记
# 1. 安装
-
解压文件到安装目录,如 D:\mysql-8.0.17-winx64
创建配置文件 my.ini
[mysqld] # 设置 3306 端口 port=3306 # 设置 mysql 的安装目录 basedir=D:\mysql-8.0.17-winx64 # 设置 mysql 数据库的数据的存放目录 datadir=D:\mysql-8.0.17-winx64\data # 允许最大连接数 max_connections=20 # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统 max_connect_errors=10 # 服务端使用的字符集默认为 UTF8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB # 默认使用“mysql_native_password”插件认证 default_authentication_plugin=mysql_native_password [mysql] # 设置 mysql 客户端默认字符集 default-character-set=utf8 [client] # 设置 mysql 客户端连接服务端时默认使用的端口 port=3306 default-character-set=utf8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25以管理员身份打开 cmd,加载至 MySQL 安装目录,初始化命令:mysqld --initialize --console
画横线处为初始密码
启动服务,分别执行
mysqld --install
mysqld --net start mysql
停止服务
net stop mysql
# 2. mysql 使用
# 2.1. 基本用法
进入 MySQL
D:\mysql-8.0.17-winx64\bin>mysql -u root -p Enter password: ******
1
2创建数据库
mysql> create database test1;
1创建表格:直接创建比较复杂,可以使用 Navicat 等工具
进入表格:use test1
mysql> use test1 Database changed
1
2插入数据
mysql> insert into table2(OCCUR_TIME) values ('ac'); Query OK, 1 row affected (1.49 sec)
1
2退出
mysql> exit Bye
1
2
# 2.2. MySQL 插入数据
import pymysql
# 连接数据库:ip,username,password,sqlname
db = pymysql.connect("localhost", "root", "123456", "test1")
# 创建游标
cursor = db.cursor()
# 一次插入 10 条语句
for i in range(10):
d = df.iloc[i, :]
# sql 语句
sql = "insert into table_name(col1_name, col2_name) " \
"values ('%s', '%s')" \
% (data[0], data[1])
# 执行 sql 语句
cursor.execute(sql)
# 提交到数据库执行
db.commit()
# 关闭数据库
db.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 2.3. MySQL 查询
查找
select 列名 from 表名
1筛选
where 筛选条件
1排序
# 2.4. 函数
命令
关键字 功能 Distinct 不同/去重 Order by asc/desc 升降序排列 Update 修改表数据 Top/Limit 限定条目 Like 模糊查找 In 多值操作 Between 介于两值之间 As 别名 Join 多个表之间的关系 Union 合并多个 Select 结果 Select Into 从一个表中取数据放入另一个表 约束 Constraints
关键字 功能 not null 强制不接受 Null 值 unique 约束唯一标识 primary key 主键 foreign key 指向另一个表中的主键 check 用于限制列中值的范围 default 默认值 create index 创建索引 drop 删除索引、表、数据库 alter 在表中添加、修改或删除列 auto increment 自增字段 view 可视化表 date 日期 函数
函数名 功能 avg(col_name) 平均值(不包含 Null) count(col_name) 制定列值的数目(不含 Null) first(col_name) 返回指定字段中第一个记录的值 last(col_name) 返回指定字段中最后一个记录的值 max(col_name) 返回一列中的最大值 min(col_name) 返回一列中的最小值 sum(col_name) 返回数值列的总和 group by(col_namae) 根据一个或多个列对结果进行分组 having where 不能和合计函数一起使用 ucase 把字段值转换成大写 lcase 把字段值转换成小写 mid 从文本字段中提取字符 len 返回文本字段长度 round 把数值字段舍入为指定小数位 now 返回当前的日期和时间 formart 对字段的显示进行格式化
# 2.5. SQL 性能优化
- 减少数据访问
- 返回更少的数据
- 减少交互次数
- 减少数据库服务器 CPU 运算
- 利用更多的资源
# 3. 备注
- MySQL 大小写不敏感
- MySQL 字符或英文的问题
- 错误提示
pymysql.err.InternalError: (1054, "Unknown column 'xxxxx' in 'field list'")
- 解决方法:在 SQL 语句中将 %s 加引号改成 '%s'
- 错误提示
- sql 语言使用单引号
# 4. Navicat 可视化工具
连接数据库并修改初始密码
# 5. MySQL 密码重置
创建一个文本文件,比如 abc.txt,写入下面的指令,新 root 密码为 123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
1以管理员身份打开 cmd
停止 mysql
net stop mysql
1执行重置命令,执行完成后,Ctrl+c 退出
mysqld --init-file="d:\\mysql-8.0.17-winx64\\abc.txt" --console
1启动 MySQL
net start mysql
1用新的密码登录
mysql -u root -p
1