当前位置: 移动技术网 > IT编程>数据库>Mysql > MYSQL的操作命令

MYSQL的操作命令

2019年09月04日  | 移动技术网IT编程  | 我要评论

一、御前

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分区

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网