前言
提示:记录MySQL的相关命令:
包含windows下的一些小知识
一、MySQL的安装
1、MySQL下载
下载链接: https://dev.mysql.com/downloads/
具体下载步骤如下图所示:
第一步:
第二步:
第三步:
2、安装配置
第一步:对下载的文件进行解压,将文件解压至自己想要存放的位置
第二步:将下面配置内容复制带ini文件中,配置文件中的basedir=D:\mysql-8.0.30-winx64为自己实际文件解压之后存放路径,datadir=E:\mysql\data为自己文件data存在路径,若无可自行创建
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录 ----------是你的文件路径-------------
basedir=D:\mysql-8.0.30-winx64
# 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建
#datadir=E:\mysql\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
第三步:配置环境变量
右击“此电脑”->选择“属性”,进入如下图所示界面,点击“高级系统设置”
点击环境变量,选择“系统变量”->新建环境变量,变量名为:MYSQL_HOME 变量值为:D:\mysql-8.0.30-winx64(自己实际mysql存放的路径)
备注:如果系统环境变量中存在MYSQL_HOME,则不需新建,选中点击编辑即可
MYSQL_HOME环境变量添加完成之后,在系统环境变量中找到path(Path、PATH)变量,操作步骤如下图所示:在path环境变量中添加一条 %MYSQL_HOME%\bin,添加完成之后,点击确定。
3、MySQL启动
第一步:初始化
windows环境下以管理员方式打开cmd命令窗口,进入mysql所在路径下的bin目录下如下图所示:
第二步:在bin目录下执行语句,得到下图所示结果,得到初始化root随机密码
mysqld --initialize --console
第三步:安装mysql服务并启动
安装命令:
mysqld --install mysql
启动命令:
net start mysql
第四步:连接MySQL并修改密码
连接MySQL:
mysql -uroot -p
修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY '111111';
二、MySQL命令
1、基本命令
# 启动
net start mysql
# 停止
net stop mysql
# 登录
mysql -h(ip 地址) -u(用户名) -p(密码)
# 登录本地数据库
mysql -uroot -p
# 退出
exit/quit
2、用户相关命令
用户增删改查
# 查看全部用户
select user,host from mysql.user;
# 新增用户
CREATE USER '(用户名)'@'(ip地址)'
-> IDENTIFIED BY '(密码)';
# 修改用户名
RENAME USER 'user1'@'localhost' TO 'user2'@'localhost';
# 修改root用户初始密码
alter user 'root'@'localhost' identified by '123456';
# 修改root用户密码
set password for root@localhost = password('123456');
# 删除用户
DROP USER '(已存在的用户名)'@'(ip地址)';
数据库权限配置
# 配置超管权限(全部数据库,全部操作权限)
GRANT ALL
-> ON *.*
-> TO '(已存在的用户名)'@'(ip地址)'
-> WITH GRANT OPTION;
# 具有访问bankaccount数据库的所有数据库级权限
GRANT ALL
-> ON bankaccount.*
DTO '(已存在的用户名)'@'(ip地址)';
# 具有访问expenses数据库的特定数据库级权限,例如查询,插入,更新,删除等
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON expenses.*
-> TO '(已存在的用户名)'@'(ip地址)';
# 具有特定的表级权限,可以从域中的任何主机访问数据库中 的 addresses表
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
-> ON customer.addresses
-> TO '(已存在的用户名)'@'(ip地址)';
# 查看用户权限
SHOW GRANTS FOR 'admin'@'localhost';
# 查看非特性属性
SET print_identified_with_as_hex = ON;
SHOW CREATE USER 'admin'@'localhost'\G
# 撤销全部权限
REVOKE RELOAD
-> ON *.*
-> FROM '(已存在的用户名)'@'(ip地址)';
# 撤销数据库权限
REVOKE CREATE,DROP
-> ON expenses.*
-> FROM '(已存在的用户名)'@'(ip地址)';
# 撤销数据库表权限
REVOKE INSERT,UPDATE,DELETE
-> ON customer.addresses
-> FROM '(已存在的用户名)'@'(ip地址)';
3、MySQL增删改查
库的增删改查
# 新增数据库
CREATE DATABASE (数据库名);
# 查询全部数据库
show databases;
# 选择数据库
use (数据库名);
# 删除数据库
DROP DATABASE (数据库名);
数据库表的增删改查
# 新增数据库表
CREATE TABLE if NOT EXISTS user(
`id` int UNSIGNED AUTO_INCREMENT PRIMARY KEY, #主键 自增
`name` VARCHAR(50),
`age` int(10),
`sex` VARCHAR(10),
`phonNUM` VARCHAR(20)
)
# 修改数据表名
alter table student.user rename AS student.person;
#查看所有数据库表
select table_name
from information_schema.tables where table_schema='当前数据库'
# 查询所有表名及表注释
select TABLE_NAME,TABLE_COMMENT
from INFORMATION_SCHEMA.Tables where table_schema = '某数据库名称'
#查看表中所有字段与字段注释
select COLUMN_NAME,COLUMN_COMMENT
from INFORMATION_SCHEMA.Columns
where table_name = '表名' and table_schema='数据库名'
# 复制数据库表
同一个数据库中复制(只复制表结构与数据):
CREATE TABLE if not EXISTS userr SELECT * FROM users WHERE username='rtttu';
同一个数据库中复制(复制表结构与数据,关联其他表与索引):
CREATE TABLE IF NOT EXISTS userr LIKE users;
INSERT userr SELECT * FROM users;
跨库复制
只复制表结构与数据:
CREATE TABLE if not EXISTS student.userr SELECT * FROM ovp_data.users WHERE username='ruigh';
复制表结构与数据,关联其他表与索引:
CREATE TABLE IF NOT EXISTS userr LIKE users;
INSERT userr SELECT * FROM users;
# 删除数据库表
DROP TABLE userr;
数据库表的字段的增加修改删除
#数据库表字段增加,默认加在最后
ALTER table student.user add location VARCHAR(20);
#数据库表修改字段名称
ALTER TABLE student.person change `location` `locat` VARCHAR(20) NOT NULL DEFAULT CHARSET=utf8;
#数据库表字段修改字段属性
ALTER TABLE student.person MODIFY `locat` INT(20);
#数据库删除字段
ALTER TABLE student.person drop `locat`;
#数据库表中指定位置添加字段
alter table person add statu varchar(10) comment "状态" after id;
# 插入在第一列
ALTER TABLE person ADD number INT(4) FIRST;
# 把name字段移动到id后面
ALTER TABLE name MODIFY card CHAR(10) AFTER id;
# 把id字段移动到第一位
ALTER TABLE id MODIFY test CHAR(32) NOT NULL DEFAULT '123' FIRST;
数据增删改
#往数据库中添加数据
INSERT into student.uesr (id,name,age,sex,phonNUM)
VALUES(0,'来了',22,'女','12222111'),(0,'来了11',23,'女','12112221'),(0,'来了2',24,'女','12111');
# 修改数据
UPDATE user SET phonNUM='18252524545' WHERE id=3;
#删除数据
delete from user where id =8;
数据查询
# 查询全部信息
select * from user;
# 查询部分字段信息
select id,name,age from user;
# 根据条件查询部分字段信息
select id,name,age from user where age=24;
# 查询条件查询结果的前3行数据
select id,name,age from user where age=24 LIMIT 3;
# 查询以 abc 为开头的数据
SELECT * FROM person WHERE name like ‘杨 %’;
# 查询以 abc 为结尾的数据
SELECT * FROM person WHERE author like ‘%丹 ’;
# 查询包含 abc 的数据
SELECT * FROM person WHERE author like ‘%雅 %’;
# 查询最大最小值
select max(age),min(age) from person where id<15;
# 查找name字段中以'st'为开头的所有数据
SELECT name FROM person_tbl WHERE name REGEXP '^st';
# 查找name字段中以'ok'为结尾的所有数据
SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
# 查找name字段中包含'mar'字符串的所有数据
SELECT name FROM person_tbl WHERE name REGEXP 'mar';
# 查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据
SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
MySQL中关于like与regexp的区别与用法
- like的用法,like有两种模式_和%
_表示:表示单个字符,用来查询定长的数据,举例如下:
SELECT * FROM person WHERE name like ‘杨_’;
%表示:表示0个或多个任意字符,举例如下:
SELECT * FROM person WHERE name like ‘杨 %’;
- regexp的用法:正则匹配
具体用法参考Java中的正则表达式:https://blog.csdn.net/qq_44895342/article/details/107797267?spm=1001.2014.3001.5501
总结
本文主要针对MySQL基本操作进行总结归纳。