MYSQL的操作命令
一、御前
1 win+r dos 输入 net start mtsql 和 net stop mysql 启动和停止mysql 服务,也可通过计算机——管理——服务和应用程序——服务——mysql——右击
启动mysql服务出现服务名无效的原因及解决方法【失败】
问题原因:mysql服务没有安装。
解决办法: 在 mysql bin目录下 以管理员的权限 执行 mysqld -install命令
以管理员的权限 mysqld -remove ,卸载mysql服务
2 登录和退出
路径: dos:mysql -uroot -p
输入密码
exit; 退出
show databases; 查看数据库
command line client登录和退出
3 常见操作
\h 或者 help;
source d:\test.sql 即执行test.sql文件
4 图形 mysql workbench
另外介绍第三方 sqlyog
二、数据库和表的基本操作
1、mysql支持的数据类型
1)数值类型 字符串类型 日期和时间类型
2)数据库基本操作
create database 数据库名称;
show database;
show create database 数据库名称; 查看已经创建的数据库的创建信息
create database 数据库名称 character set gbk; 在创建数据库时指定编码方式
use 数据库名;
alter database 数据库名称 default character set 编码方式 collate 编码方式_bin;编码方式为修改后的
drop database 数据库名称;
3) 数据表的基本操作
create table stu( stu_id int(10),stu_name varchar(50) );
show create table 表名;
show create table 表名\g;格式化显示创建信息
describe 表名; 表的列相关信息
alter table 原表名 rename [to] 新表名;
alter table 表名 change 原字段名 新字段名 新数据类型;
alter table 表名 modify 字段名 新数据类型;
alter table 表名 add 新添字段名 数据类型;
alter table 表名 drop 字段名;
alter table 表名 modify 字段名1 数据类型 first|after 字段名2; 调整字段位置
drop table 表名;
三、表中数据的基本操作
insert into 表名 (字段1,字段2)values{值1,值2);
insert into 表名 values(值1,,值2); 为所有的字段都填上数据
insert into 表名(字段名1,字段名2)values(值1,值2);为指定字段添加数据
insert into 表名[(字段名1,字段名2,…)]values(值1,值2,…),…,(值1,值2,…);
update 表名 set 字段名1=值1 [字段名2=值2,…] where ;
delete from 表名 where;删除指定的全部数据
truncate [table] 表名;删除表中的所有数据
四 单表查询
select 字段名1,…字段名n from 表名;
select * from 表名;
select * from 表名 where ;
select * from 表名 where 条件表达式1 and|or 条件表达式2 ;
select * from 表名 where 字段名 [not] in (元素1,元素2,…,元素n) ;
select * from 表名 where 字段名 is [not] null ;
select * from 表名 where 字段名 [not] between 值1 and 值2 ;
select * from 表名 where 字段名 [not] like '匹配字符串';其中%表示n个字符,_表示一个
select distinct 字段名 from 表名 ;去重复
select * from 表名 where 字段1 [asc|desc],字段2 [asc|desc] ;asc升序
2)聚合函数
select count (*|1|列名) from 表名;
select sum (字段名) from 表名;
select avg (字段名) from 表名;
select max (字段名) from 表名;
select min (字段名) from 表名;
3)分组
select 字段名1,…字段名n from 表名 group by 字段名1,字段名2,…[having 条件表达式];
4)分页
select 字段名1,字段名2,…from 表名 limit [m,]n;【m代表起始数目,n代表个数】
五 数据的完整性
alter table 表名 add primary key(列名);主键 不空 不重
或者 create table 表名 (字段名 数据类型 primary key);
alter table 表名 add unique(列名);唯一约束
或者 create table 表名 (字段名 数据类型 unique);
alter table 表名 add primary key auto_increment(列名);自增
或者 create table 表名 (字段名 数据类型 auto_increment);
2)索引
alter indexe 索引名 on 表名(字段名[(长度)]);
或者 create table 表名 (字段名 数据类型 ,index [索引名] (字段名[(长度)]));
唯一索引:【不可有重复值】
在普通的index 前加 unique
3)域完整性
alter table 表名 modify 字段名 数据类型 not null,…;非空约束
或者 create table 表名 (字段名 数据类型 not null,);
alter table 表名 modify 字段名 数据类型 default 默认值;默认值约束
或者 create table 表名 (字段名 数据类型 default 默认值,);
4)引用完整性
alter table 表名 add foreign key(外键字段名) references 主表表名(主键字段名);
create table 表名 (字段名 数据类型,foreign key(外键字段名) references 主表表名(主键字段名));
alter table 表名 drop foreign key 外键名;
六、多表查询
1)合并结果集
select * from test1 union select * from test2;会过滤重复数据
select * from test1 union all select * from test2;不会过滤重复数据
2)连接查询
select 查询字段 from 表1 cross join 表2 where ;笛卡尔积
select 查询字段 from 表1 [inner] join 表2 on 表1.关系字段=表2.关系字段 where ;内连接
select 查询字段 from 表1 left [outer] join 表2 on 表1.关系字段=表2.关系字段 where ;左外连接
select 查询字段 from 表1 right [outer] join 表2 on 表1.关系字段=表2.关系字段 where ;右外连接
select 查询字段 from 表1 [别名] join 表2 [别名] on 表1.关系字段=表2.关系字段 join 表 m on…;多表
select 查询字段 from 表1 [别名] natural join 表2 [表名];自然连接 列名和数据类型相同的字段自动匹配
select 查询字段 from 表1 [别名] natural [left|right] join 表2 [表名];
select 查询字段 from 表名 [别名1],表名[别名2] where 查询条件;自连接
3)子查询
select * from emp where sal>(select sal from emp where ename='jones');子查询做条件
select e.ename,e.sal,d.dname,d.loc from emp e,(select dname,loc,deptno from dept)d where
e.deptno=d.deptno and e.empmo=7788;子查询做表
七、常用函数
1)字符串函数
ascii();
concat();
insert();
left();
right();
length();【占用字节】
2)数学函数
abs();
mod();
pi();
rand();
round();
truncate();【保留指定位数的结果】
3)日期和时间函数
day();
week();
month();
year();
now();
4)格式化函数
format();
date_format();
5)系统信息函数
database();
user();
system_user();
version();
八、视图
select drop_priv from mysql.user where user='root';查询用户对视图权限
create view view_emp(id,name,sex,age,department) as select id,name,sex,age,department from emp;还有一些可选的权限条件,用到再百度吧
describe 视图名;视图字段信息
desc 视图名;
show table status like '视图名';视图的基本信息
show create view 视图名;视图详细信息
create or replace view view_emp_detail(id,name,sex) as select id,name,sex from emp;修改
alter view view_emp as select name,age from emp;修改
update 视图名 set 字段名1=值1 [字段名2=值2,…] [where 条件表达式];
insert into view_emp values (值1,值2,……);
delete from 表名 [条件表达式];删除数据
drop view [if exists] 视图名 [,视图2]… [restrict|cascade];删除视图
九、存储过程
1 查看用户是否拥有创建存储过程的权限
select create_routine_priv from mysql.user where user='root';
create procedure sp_name ([proc_parameter[…]]) [characteristic…] routine_body;创建
show procedure status [like 'pattern'];查看存储过程的状态
show create procedure sp_name;查看存储过程的创建信息
select * from information_schema.routines where routine_name='sp_search' and routine_type='procedure'\g;
select alter_routine_priv from mysql.user where user='root';查看修改权限
alter procedure sp_name [characteristic…];修改
drop procedure [if exists] sp_name;删除
具体的 局部变量 定义条件 处理程序 光标的使用 流程控制(if case while) 自己看吧
2事件调度器
数据库安自定义的时间周期来出发某种操作,可以理解为时间触发器。
select @@event_scheduler;查看是否已经开启时间调度器
set global event_scheduler=on;开启
使用:
create
[definer = { user | current_user }]
event
[if not exists]
event_name
on schedule schedule
[on completion [not] preserve]
[enable | disable | disable on slave]
[comment 'comment']
do event_body;
schedule:
at timestamp [+ interval interval] ...
|every interval
[starts timestamp [+ interval interval] ...]
[ends timestamp [+ interval interval] ...]
interval:
quantity {year | quarter | month | day | hour | minute |
week | second | year_month | day_hour | day_minute |
day_second | hour_minute | hour_second | minute_second}
来自 <>
十、触发器
1 创建触发器
create trigger trigger_name【触发器名称】
triggername_time【before|alter】
trihher_event【insert|update|delete】 on tablename
for each row
trigger_stmt;
2查看触发器
show triggers\g【查看所有触发器】
desc information_schema.triggers;【查看触发器表】
select * from information_schema.triggers where trigger_name='t_afterdelete_on_test1'\g;【查看某一个触发器具体信息】
drop trigger [if exists] [schema_name.].trigger_name;删除触发器
十一、数据库事务
start transaction;开启事务
中间写语句
commit;提交事务
rollback;事务回滚——在提交之前
2事务的属性——数据库是多线程并发访问的
acid:原子性 一致性 隔离性 持久性
事务的隔离级别:
read uncommitted【脏读 读未提交】-所有事务都可看到其他未提交事务
read committed【不可重复读 读已提交】—一个事务只能看到已经提交事务改变
repeatable read 【幻读 可重复度】——同一事务多个实例并发执行同样数据
serializable 【可串行化】-强制事务排序使之不可能互相冲突
select @@tx_isolation;查看当前会话隔离级别
set session transaction isolation level (read uncommitted)|(read committed)|(repeatable read)|(serializable);设置会话隔离级别
3 分布式事务
xa {start|begin} xid [join|resume] 开始一个分布式事务
xa end xid [suspend [for migrate]] 操作分布式事务
xa prepare xid 准备提交事务
xa commit xid [one phase] 提交事务
xa rollback xid 回滚事务
xa recover [convert xid] 查看处于prepare状态的事务
十二、mysql 高级操作
1 数据的备份
mysql -uusername -ppassword dbname>path:filename.sql;
sqlyog 图形界面sql文件形式转储
2 数据的还原
mysql -uusername -ppassword dbname<path:filename.sql;
sqlyog 图形界面 执行sql脚本
3 权限管理【百度去吧】
mysql的权限与user表
授予权限:
查看权限:show gants for ‘username’@‘hostname’
收回权限:
4 mysql分区【具体自己看书去吧】
range分区 list分区 hash分区 key分区
推荐阅读
-
初识centos7与centos6的区别整理(内核、命令等)
-
mysql触发器之创建多个触发器操作实例分析
-
mysql事件之修改事件(ALTER EVENT)、禁用事件(DISABLE)、启用事件(ENABLE)、事件重命名及数据库事件迁移操作详解
-
查看某时间段到现在的系统日志的sed命令
-
mysql触发器之触发器的增删改查操作示例
-
windows下安装mysql-8.0.18-winx64的教程(图文详解)
-
如何将mysql存储位置迁移到一块新的磁盘上
-
mysql的计划任务与事件调度实例分析
-
mysql视图之确保视图的一致性(with check option)操作详解
-
Docker中镜像构建文件Dockerfile与相关命令的详细介绍