mysql配置和常用指令
安装mysql
官网下载
https://dev.mysql.com/downloads/mysql/
环境配置
- mysql拥有俩个文件目录
- mysql软件目录(在软件目录的bin目录下实行mysql指令)
- mysql数据目录(在数据目录处进行init配置)
- 系统环境配置
软件指令
登录mysql
- 本地数据库登录
mysql -u[username] -p[password] -A # 中括号中的变量需要替换指定值
- 远程数据库登录
mysql -h110.110.110.110 -uroot -p123
// 主机ip 用户名 密码
登出mysql
mysql> exit;
# 或
mysql> quit;
修改密码
# 命令格式:
mysql> SET PASSWORD FOR [username]@[host]= PASSWORD([newpassword]);
# 示例
mysql> set password for lvlv@localhost=password('123456');
用户增删和权限增删
mysql> create user [username]@[host] identified by [password];
//增加用户
mysql> DROP USER [username]@[host];
//删除用户
mysql> GRANT [privileges] ON [databasename].[tablename] TO [username]@[host];
//用户授权
//privileges – 是一个用逗号分隔的赋予MySQL用户的权限列表,如SELECT , INSERT , UPDATE 等
mysql> REVOKE [privileges] ON [databasename].[tablename] FROM [username]@[host];
//解除用户权限
database和table操作指令
对数据库的操作
- 创建数据库
- 删除数据库
- 查看所有数据库
- 查看当前数据库
- 连接数据库
# 创建数据库
mysql> create database [databasename];
# 删除数据库
mysql> drop database [databasename];
# 查看所有数据库
mysql> show databases;
# 连接所选数据库
mysql> use [databasename]
对表的操作
创建或删除表
# 创建表
mysql> create table [表名] ( [字段名1] [类型1] [is null] [key] [default value] [extra] [comment],
...多个字段名2
)[engine] [charset];
# 删除表
DROP TABLE [IF EXISTS] table_name1 [ ,table_name2, table_name3 ...]
- 必写选项
- 表名,字段名和字段类型
- is null
- 表示是否非空,不写就是可空
- key
- 设置是否是主键,外键,唯一键还是索引
- default value
- 设置默认值
- extra
- 其他的一些描述,比如能否自增auto_increment
- comment
- 注释
- engine
- 选择使用的存储引擎
- charset
- 存放的字符编码,默认是latin1
其他
- 关于表操作的其他一些语句
# 修改表的字符集
alter table 表名 character set 字符集;
# 修改表名
alter table 表名 rename to 新的表名;
# 显示表的字符创建信息
show create table 表名;
# 查询某个数据库的所有表的名称:
show tables;
# 查询表结构:
desc 表名;
# 复制表:
create table 表名1 like 表名2;
# 清空表的数据:
delete from 表名;
# 删除表:
drop table if exists 表名;
对数据列的操作
# 添加一列
alter table 表名 add 列名 数据类型;
# 修改列名称
alter table 表名 change 旧列名 新列名 数据类型;
# 修改列数据类型
alter table 表名 modify 列名 数据类型;
# 删除列
alter table 表名 drop 列名;
数据操作指令
增删改数据
# 添加数据
insert into 表名(列名1,列名2…)values{…};
# 删除数据
delete from 表名 where 条件;
# 删除全部记录
delete from 表名;
# 删除表并创建一个同名的空表(效率更高):
truncate table 表名;
# 修改数据
update 表名 set 列名1=值1,列名2=值2 where 条件
查找数据
详情请看mysql常用查询语句
事务指令
- 什么是事务?
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败 - 事务常用指令
- 开启事务:start transaction ;
- 提交事务:commit
- 回溯: rollback;
- 给事务上锁
- 多线程读取同一数据存在问题:
- 读脏:一个事务,读取到另一个事务没有提交的数据
- 不可重复读(虚读):在同一个事务中,两次读取到的数据不一样
- 幻读:一个事务操作(DML)数据表中的所有记录,另一个书屋添加一条数据。则第一个事务查询不到自己的修改
- 隔离级别 1->4 安全性越高 效率越低:
- read uncommitted (读未提交) 产生1,2,3的问题
- read committed 产生2,3的问题
- repeatable read (可重复度)产生 3的问题
- serializable (串行化,把表锁上) 解决所有问题
- 乐观和悲观锁
- 乐观锁:
出现问题再上锁 - 悲观锁:
每一个步骤都上锁
- 乐观锁:
- 多线程读取同一数据存在问题: