加载中...

mysql 基础

mysql -h 127.0.0.1 -P 3306 -u root -p

忘记密码,修改

[mysqld]
skip-grant-tables

win安装mysql5.7

Mysql5.7地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip

1)解压,设置bin目录为环境变量

2)新建文件夹my.ini

[client]
port=3306
default-character-set=utf8
[mysqld]
# 设置为自己MYSQL的安装目录
basedir=D:\..\..\
# 设置为MYSQL的数据目录
datadir=D:\..\..\data\
port=3306
character_set_server=utf8
#跳过安全检查
skip-grant-tables

3)管理员运行CMD , 打开 D: cd到目录

4)打开mysql服务:mysqld -install ------------ 与之相反是 删除服务:sc delete mysql

5)初始化数据库: mysqld --initialize-insecure --user=mysql

6)启动mysql 服务: net start mysql 【停止mysql服务指令 net stop mysql】

7)进入mysql 管理终端: mysql -u root -p 【当前root 用户密码为 空】

8)修改root 用户密码:use mysql;update user set authentication_string=password('新密码') where user='root' and Host='localhost';

9)刷新权限:flush privileges;

10)修改my.ini:#skip-grant-tables

注意安装报错 如果找不到文件2:win+R regedit --》 计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL 改一下上面的imagepath路径


Linux安装mysql8.0

一、先卸载MariaDB
rpm -qa | grep -i mariadb(检查有没有mariadb)

rpm -e  --nodeps  mariadb-libs-5.5.56-2.el7.x86_64(不检查依赖直接卸载)

二、检查是否有mysql残留(如有最好也卸载干净,下面重新安装)
rpm -qa | grep mysql

三、下载mysql库(要连网)
wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm

四、安装mysql库
yum -y install mysql80-community-release-el7-3.noarch.rpm

五、重新获取mysql的GPG(不执行的话下一步yum安装会报错)
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

六、安装mysql(默认安装mysql8.0)
yum -y install mysql-community-server

七、开启mysql服务
systemctl start mysqld

八、检查mysql运行状态(非必要操作)
systemctl status mysqld(如没运行,执行systemctl start mysqld)

九、查看默认密码(非必要操作)
cat /var/log/mysqld.log | grep password

十、进入mysql -uroot -p,修改初次密码
alter user 'root'@'localhost' identified by 'Root@123456';

十一、把密码权限调低后可以改任意密码
set global validate_password.policy=0;
set global validate_password.length=1;

十二、给远程地址授权登陆
# 创建用户并设置密码
create user 'root'@'%' identified with mysql_native_password by '123456';

# 授权远程访问
grant all privileges on *.* to 'root'@'%' with grant option;

# 修改加密规则(mysql8.0版本)
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;

# 刷新
flush privileges;


在DOS中备份数据库为.sql文件

-B 指后面全是数据库, 不带-B 后面可以单保存表


数据库三层结构


mysql约束

1)primary key :主键,一张表只能有唯一 一个主键,可以复合主键,not null + unique = primary key

2)auto_increment : 自增长

2)unique : 值唯一,没有与not null 搭配时,可以有多个null存在

3)foreign key: 约束在 primary key 或 unique 上,
foreign key (外键名) references 主键表(id)

4)check : 像是添加限制,示例如下 (包括5.7之前都用不了)


索引 (优化)

原理:生成二叉树、B树之类的排序
注意: 主键 primary key 天然就是索引


管理mysql登录账户


数据库语句分类

DDL(Data Definition Language):数据库定义语言,操作数据库和数据表的语言 create

DML(Data Manipulation Language): 数据操纵语言,对数据表的数据进行增删改的语言 insert update delete

DQL(Data Query Language): 数据查询语言,用来查询记录(数据)select

DCL(Data Control Language): 数据控制语言,用来设置/更改数据库用户权限,常用关键字有 GRANT、REVOKE 。




数据 CRUD

SELECT

order by(排序)

求一列的值,count()、sum()、avg()

group by(求值..后分组), having(分组后筛选)

limit (分页公式)

优先级

时间

★★ 多表查询

联表查询

自连接

子查询


复制结构、插入复制数据 + distinct 实现去重

union 俩表相加


事务

特性

a 原子性(事务里要么全生效,要么全失效)
c 一致性(关联数据之间的数据保证正确与完整)
i 隔离性 (多用户并发访问数据库时,每个用户开启的事务互不影响)
d 持久性(事务一旦commit后,就不会丢失数据)

隔离级别

Read uncommitted、Read committed、Repeatable read、Serializable

1)查看当前会话隔离级别
select @@tx_isolation;

2)查看系统当前隔离级别
select @@global.tx_isolation;

3)设置当前会话隔离级别 (为可重复读)
set session transaction isolation level repeatable read;

4)设置系统当前隔离级别
set global transaction isolation level repeatable read;

开启事务细节

posted @ 2023-06-02 17:37  1502god  阅读(19)  评论(0)    收藏  举报
-->