湛蓝之海 发表于 2021-12-12 20:31:27

MySQL 命令大全

启动\关闭MySQL
net stop mysql --关闭
net start mysql --启动

连接MqSQL

mysql   -h主机IP    -P端口-u用户名 -p密码
(1)-p密码不要有空格
(2)如果没有写 -h 主机,默认本机
(3)如果没有写 -P 端口,默认3306

查询数据库
指定数据库采用的字符集,默认 utf8
character set 字符集
指定数据库字符集的校对规则
collate 校对规则
默认 utf8_general_ci (不区分大小写)utf8_bin(区分大小写)
创建数据库
create database 数据库名
创建数据库 使用utf8字符集,并带有校对规则为区分大小写
eg.CREATE DATABASE xy_db03 CHARACTER SET utf8 COLLATE utf8_bin;
删除数据库
drop database 数据库名
显示数据库
show databases;
显示数据库的创建语句
show create database 数据库名;

备份恢复数据库
备份数据库(DOS界面)
mysqldump -u root -p -B 数据库1 数据库2> 路径名 \文件名.sql
eg.mysqldump -u root -p -B xy_db01 xy_db02 xy_db03 > D:\桌面\QQClientTest\Mysql.sql
恢复数据库 (MySQL命令行执行)
source 路径名(不要中文)\文件名.sql
备份数据库的表(DOS界面)
mysqldump -u root -p密码数据库 表1 表2> 路径名(不要中文) \文件名.sql

表的增删查改
创建表
create table 表名
(
​   field1 datatype,
​   field2 datatype,
​   field3 datatype,
)charater 字符集 collate 校对规则 engine 存储引擎;
eg.
> CREATE TABLE user(
    id          INT,
    name      VARCHAR(255),
    passwd      VARCHAR(255),
    birthday    DATE
)CHARACTER SET utf8 COLLATE utf8_bin ENGINE innodb;删除表
drop table 表名;
添加列
alter table 表名 add 列名 数据类型;
修改列名
alter table 表名 change column 原名 新名 数据类型;
修改列数据类型
alter table 表名 modify 列名 数据类型;
删除列
alter table 表名 drop列名;
修改字符集
alter table 表名 character set 字符集;
修改表名
rename table 表名 to 新表名;
查看表结构
desc table_name;
查询表
select from 表名;

数据库的增删查改(CRUD)
插入insert 语句
insert into 表名(column1,column2....)
​                   VALUES(值1,值2...),(值1,值2...);
更新update语句
update 表名 set [列名1 = 值1,列名2 = 值2...]    注:没有where条件默认全部设置
删除delete语句
delete from 表名 ;
注:没有where条件默认全部设置
查询select语句
基本语句
select | {column1,column2...}from 表名;
注: | 表示或则,distinct 去重复 ,* 表示所有列,也可以指定 column1,column2...
使用as别名
select 列 as 别名 from 表名;
查询并运算
select | {column1,column2...},(运算式) from 表名;

条件-where

排序-order by
select from 表名 order by 列名 asc|desc;
默认升序asc/desc降序
合计/统计函数count/sum/avg/max/min
函数-count
select count(*)|count(列名) from 表名 ;
返回行的总数
函数-sum
select sum(列名1),sum(列名2)... from 表名 ;
返回满足where条件的行的和
函数-avg
select avg(列名1),avg(列名2)... from 表名 ;
返回满足where条件的列平均值
函数-max/min
select max(列名1), max(列名2)... from 表名 ;
返回满足条件的最大/最小值
分组-group by
select 列名1,列名2... from 表名 group by列名 having 条件      注:不可以使用where
group by 对列进行分组
having 对分组后的结果进行过滤
字符串函数

字符串函数-charset
select charset(列名) from 表名;
返回字符串集
字符串函数-concat
select concat(列名1,字符串,列名2...) from 表名;
连接字符串,将多个列和字符拼接成一列
字符串函数-instr
select instr(列名/string ,substring) from 表名;
返回substring在列名/string中出现的位置,没有则返回0
字符串函数- ucase
select ucase(列名) from 表名;
转成大写
字符串函数-lcase
select lcase(列名) from 表名;
转成小写
字符串函数 left/right
select left(string , length) from 表名
从string的左/右中取length个长度的字符显示
字符串函数- length
select length(列名) from 表名;
返回字符串长度
字符串函数-replace
select replace(列名,search_str,replace_str) from 表名;
在列名中用replace_str替换search_str
字符串函数-strcmp
select strcmp(列名1/string1,列名2/string2) from 表名;
比较两个字付串的大小,大于1,小于-1,等于0
字符串函数-substring
select substring(str,position,length) from 表名
从str的position开始,取length个字符
字符串函数-ltrim/rtrim/trim
select ltrim/rtrim/trim(列名) from 表名;
去除左/右/左右两端的空格
数学函数

数学函数bs
select abs(列名) from 表名;
返回列数值的绝对值
数学函数-bin
select bin(列名) from 表名;
返回列数值的十进制;
数学函数-ceiling\floor
select seiling\floor(列名) from 表名;
返回向上\向下取整;
数学函数-conv
select conv(列名,原进制,现进制) from 表名;
返回列的现进制
数学函数-format
select format(列名,number) from 表名;
返回列数值四舍五入后的number位小数位数
数学函数-least
select least(列名1,列名2...) from 表名;
返回列中每行的最小值;
数学函数-mod
select mod(列名,number) from 表名;
返回列名数值对number求余后的值;
数学函数-rand
select rand() fromdual;
返回随机数/有seed(数值)则返回固定随机数
日期函数

日期函数-current_date
select current_data() from dual;
返回当前的日期
日期函数-current_time
select current_time() from dual;
返回当前的时间
日期函数-current_timestamp
select current_timestamp() from dual;
返回当前的时间戳(年月日    时分秒)
日期函数-now
select now() from dual;
返回当前时间(年月日时分秒)
函数-date
select date(列名(时间类型)) from 表名;
放回列的日期
日期函数-date_add
select from 表名 where date_add(列名,interval 数值minute) >= now();
返回列时间加上数值后大于当前时间的行
日期函数-date_sub
select from 表名 where date_sub(now(),interval 数值 year/month/day) <= 列名;
日期函数-datediff/timediff
select datediff(列名1,列名2) from 表名;
返回两列差(天数差)/(时间差)
日期函数-year/month/day
select year/month/day(列名) from 表名;
返回列名时间的(年/月/日)
日期函数-unix_timestamp
select unix_timestamp() from dual;
返回从1970-01-01 00:00:00 到现在的秒数
日期函数-from_unixtime
select from_unixtime(时间戳,格式) from dual;
返回格式的时间戳
加密/系统函数
系统函数-user
select user() from dual;
返回用户@IP地址
系统函数-database
select datebase();
返回当前使用的数据库名称
加密函数-md5
select md5(str) from dual;
为字符串算出一个MD5 32位的字符串,(用户密码)加密
加密函数-password
select password(str) from dual;
为str密码加密(数据库的密码就是这种加密)
流程控制函数

流程控制函数-if
select if( 判断,结果1,结果2) from 表名;
判断为真返回结果1,为假返回结果2
流程控制函数-ifnull
select ifnull(列名,结果)from 表名
如果列值为空返回结果,不为空返回列的值
流程控制函数-case
&gt; select ename,job from emp;
+--------+-----------+
| ename| job       |
+--------+-----------+
| SMITH| CLERK   |
| ALLEN| SALESMAN|
| WARD   | SALESMAN|
| JONES| MANAGER   |
| MARTIN | SALESMAN|
| BLAKE| MANAGER   |
| CLARK| MANAGER   |
| SCOTT| ANALYST   |
| KING   | PRESIDENT |
| TURNER | SALESMAN|
| JAMES| CLERK   |
| FORD   | ANALYST   |
| MILLER | CLERK   |
+--------+-----------+
13 rows in set (0.07 sec)
mysql&gt; select ename,(select case
    -&gt;          when job = 'CLERK' then '职员'
    -&gt;          when job = 'MANAGE' then '经理'
    -&gt;          when job = 'SALESMAN' then '销售人员'
    -&gt;          else job end) as new_job from emp;
+--------+-----------+
| ename| new_job   |
+--------+-----------+
| SMITH| 职员      |
| ALLEN| 销售人员|
| WARD   | 销售人员|
| JONES| MANAGER   |
| MARTIN | 销售人员|
| BLAKE| MANAGER   |
| CLARK| MANAGER   |
| SCOTT| ANALYST   |
| KING   | PRESIDENT |
| TURNER | 销售人员|
| JAMES| 职员      |
| FORD   | ANALYST   |
| MILLER | 职员      |
+--------+-----------+
13 rows in set (0.07 sec)
索引
增加索引
alter table 表名 add index [索引名] (列名);
alter table 表名 add unique [索引名] (列名);
alter table 表名 add primary key   (列名);
create index 索引名 on 表名(列名);
删除索引
alter table 表名 drop primary key;
alter table 表名 drop index 索引名;
drop index 索引名 on 表名;
查询索引
SHOW INDEX FROM 表名
SHOW INDEXES FROM 表名
SHOW KEYS FROM 表名
DESC 表名

左右连接
select * from 表1 left join 表2 on 条件
select from 表1 right join 表2 on 条件
左连接表1全部显示
右连接表2全部显示

事务
开启事务
start transaction;
set autocommit = off;
设置保存点
savepoint 名
返回保存点
rollback 保存点
没有保存点返回开启事务处
提交
commit

隔离级别
隔离级别脏读不可重复读幻读READ UNCOMMITTED可能可能可能READ COMMITTED×可能可能REPEATABLE READ××可能SERIALIZABLE××××查看会话隔离级别
select @@tx_isolation
查看系统隔离级别
select @@global_isolation
设置当前会话隔离级别
SET SESSION TRANSACTION ISOLATION LEVEL级别
设置当前系统隔离级别
SET GLOBAL TRANSACTION ISOLATION LEVEL级别
全局设置 修改my.ini配置文件
transaction-isolation = 级别

视图
创建视图
create view 视图名 as select语句
修改视图
alter view 视图名 as select语句
显示视图创建
show create view 视图名
删除视图
drop view 视图名1,视图名2

外键约束
foreign key (本表列名) references主表名(列名)
本表列名作为列名的外键

MySQL用户管理
创建用户
create user'用户名'@'允许登录位' identified by '密码'
未指定@'允许登录位' 表示所有IP都可以登录即远程登录
指定@'xxx.xxx.xxx.%' 表示该IP字段可以登录
查询用户
select from mysql.user
删除用户
drop user '用户名'[@'允许登录位']
非% 需要指定登录位
修改密码(自己)
set password = password('新密码');
修改其他用户密码(需要权限)
set password for '用户名'@'登录位' = password('新密码')
设置用户权限
权限意义ALL 设置除GRANT OPTION之外的所有简单权限ALTER允许使用ALTER TABLEALTER ROUTINE更改或取消已存储的子程序CREATE允许使用CREATE TABLECREATE ROUTINE创建已存储的子程序CREATE TEMPORARY TABLES允许使用CREATE TEMPORARY TABLECREATE USER允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALLPRIVILEGES。CREATE VIEW允许使用CREATE VIEWDELETE允许使用DELETEDROP允许使用DROP TABLEEXECUTE允许用户运行已存储的子程序FILE允许使用SELECT...INTO OUTFILE和LOAD DATAINFILEINDEX允许使用CREATE INDEX和DROPINDEXINSERT允许使用INSERTLOCK TABLES允许对您拥有SELECT权限的表使用LOCK TABLESPROCESS允许使用SHOW FULL PROCESSLISTREFERENCES未被实施RELOAD允许使用FLUSHREPLICATION CLIENT允许用户询问从属服务器或主服务器的地址REPLICATION SLAVE用于复制型从属服务器(从主服务器中读取二进制日志事件)SELECT允许使用SELECTSHOW DATABASESSHOW DATABASES显示所有数据库SHOW VIEW允许使用SHOW CREATE VIEWSHUTDOWN允许使用mysqladmin shutdownSUPER允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SETGLOBAL语句,mysqladmindebug命令;允许您连接(一次),即使已达到max_connections。UPDATE允许使用UPDATEUSAGE“无权限”的同义词GRANT OPTION允许授予权限grant 权限列表 on 库.对象名 to ' 用户名'@'登录位置'
回收用户权限
revoke 权限列表 on 库.对象名 from ' 用户名'@'登录位置'

参考视频及资料:
视频
韩顺平讲MySQL
资料
MYSQL5.1 CHM版中文帮助文档

            </div>
      
      <div id="asideoffset"></div>

https://blog.51cto.com/u_15328731/4369512
页: [1]
查看完整版本: MySQL 命令大全