欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MYSQL的操作命令

程序员文章站 2023-10-26 20:08:58
一、御前 1 win+R DOS 输入 net start mtsql 和 net stop mysql 启动和停止Mysql 服务,也可通过计算机——管理——服务和应用程序——服务——MYSQL——右击 启动mysql服务出现服务名无效的原因及解决方法【失败】 问题原因: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分区