mysql常用命令
来源:互联网 发布:软件对比分析 编辑:程序博客网 时间:2024/06/06 03:22
mysql -h主机地址 -u用户名 -p用户密码
建立一个名为xhkdb的数据库
mysql> create database xhkdb;
show databases ;(注意:最后有个s)
建立user表,设置时间戳和存储引擎
create table user (
id int(11) not null auto_increment primary key,
account varchar(20) not null,
password varchar(32) default '',
nickname varchar(20) default '',
level int(4) default 1,
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
建立一个名为jishubu的表,建立hash分区。
mysql> create table jishubu(
-> id int(4) not null primary key,
-> name char(20),
-> sex int(4),
-> age int(2)
->)
Partition by hash (id) partitions 4;
建立一个名为jishubu的表,建立range分区。
mysql> create table jishubu(
-> id int(4) not null primary key,
-> name char(20),
->sex int(4),
-> age int(2)
->)
Partitionby range (id) (
PartitionP0 values less than (10),
PatitionP1 values less than (20),
PartitionP2 values less than (30)
);
mysql> show create table aaa \ G;
mysql> insert into jishubu values(1,'Tom',96.45),(2,'Joan',82.99), (3,'Wang',96.59);
mysql> update jishubu set sex='man' whereid=1;
mysql> update aaa set id=id+1 whereid>=2;(把id=2空出来)
describe表名; 查看表结构
mysql> delete from member where id=1;
alter table 表名 add column 列名 varchar(20);
alter table 表名 add column 列名 varchar(20)[first|after 列名];
alter table 表名 drop column 列名;
alter table 表名 change id id int(4);更改字段名
alter table 表名modify namevarchar(30);更改字段数据类型
alter table 表名modify sex int(3)after id;更换字段位置
alter table 旧表名 rename 新表名;
alter table 表名 engine=myisam;
constraint 外键名 foreign key(id,name)refrerncesmember1(id,name);建表的时候建外键
alter table 表名 drop foreign key外键名;
show create table 表名 \G;
alter table 表名 drop foreign key 外键别名;
alter table 表名 add primary key(id); 添加主键
alter table 表名 drop primary key; 删除主键
show grants;
软连接 In -s /opt/mysql/bin/mysqldump /usr/bin
select * from member where ange > 20 and age < 30;
select * from member where phone like ‘%888%’;(查看前三位)
select * from member order by age; (升序)
select * from member order by age desc; (降序)
select * from member where age > 20 order by age;
select id,name,count(name) from member group by name;
mysql>optimize table famliy; (优化famliy表)
MYSQL索引
create index 索引名 on表名(列名);
例create index chen on member(name);
show index from member;
show keys from member;
drop index chen on member;
mysql备份与还原
[root@localhost~]#/usr/bin/mysqldump –uroot –proot –l -F jishubu member famliy > /data/jishubu.dmp
[root@localhost~]#/usr/bin/mysql –uroot –proot jishubu < /data/jishubu.dmp
[root@localhost~]#mysqlbinlog mysql-bin.000001 | mysql –uroot –proot member
mysql触发器
一、创建只有一个执行语句的触发器
Create trigger 触发器名 before|after 触发事件
On 表名 for each row
执行语句
例mysql> create trigger aaa before insert
-> on member for each row
-> insert into trigger name values(now());
二、创建有多个执行语句的触发器
Create trigger 触发器名 before|after 触发事件
On 表名 for each row
Begin
执行语句列表 (不用的执行语句之间用;号隔开)
End
例mysql> create trigger aaa after delete
-> on member for each row
-> begin
-> insert into trigger time values('21:03:01');
-> insert into trigger time values('12:23:12');
-> end
-> &&
查看触发器
mysql>show triggers \G
mysql>select * from information_schema.Triggers \G
mysql>select * from information_schema.triggers where trigger_name='aaa' \G
mysql中触发器执行的顺序是before、表操作(insert、update、delete)、after触发器。
删除触发器
mysql>drop trigger aaa;
mysql>delimiter ; (更改mysql结束符号)
创建视图
一、在单表上创建视图
Create view 视图表名 as select * from 表名;
例mysql>create view aaa as select * from member;
mysql> create view bbb (id,name,sex) as select id,name,sex from member;
Desc aaa; 查看视图表结构
二、在多表上创建视图
Create algorithm=merge view 视图表名 (字段1,字段2,字段3)
As select字段1,字段2,字段3 /这些字段是表下的字段
From 表1,表2 where 表1字段1=表2字段1
With local check option;
例mysql> create algorithm=merge view bbb (name,sex,age)
-> as select member.name,member.age,famliy.sex
-> from member,famliy where member.id=famliy.id
-> with local check option;
修改视图(alter view修改)
Alter algorithm=undefined|merge|tempbable view 视图名(属性字段)
Asselect语句
With cascaded|local check potion;
例mysql> alter view aaa (dname,dsex,dage)
-> as select member.name,famliy.sex,famliy.age
-> from member,famliy where member.id=famliy.id
->with check option;
修改视图(create or replace view修改)
create or replace algorithm=undefined|merge|tempbable view 视图名(属性字段)
as select语句
Withcascaded|local check potion;
例mysql> create or replace algorithm=temptable
-> view aaa (name,sex,age)
-> as select member.name,famliy.sex,famliy.age
-> from member,famliy;
查看视图
1 mysql> show table status like 'aaa' \G;
2 mysql> show create view aaa \G;
3 mysql> select * from information_schema.views \G;
删除视图
1 mysql> drop view if exists aaa;
2 mysql> drop view if exists aaa,bbb;
查看mysql是否有drop权限
Select drop_privfrom mysql.user where user=’root’;
查询语句:
(like相当于=号,not like相当于“不等”号)但使用通配符或_时不能使用=号
mysql>select * from member where address like 'beijing%'; (%为通配符)
mysql>select * from member where name like 'zhan_san'; (_为任意字符)
Is null为空值,is not null 是不能为空值
例mysql> select * from famliy where phone is null;
mysql> select * from famliy where phone is not null;
mysql>select * from member where id in(1,2);
mysql>select * from member where name not in('zhangsan','lisi');
between and 可以判断某个字段是否在指定范围内
mysql>select * from member where age between 30 and 50; (包含30和50)
mysql>select * from member where age not between 30 and 50;
个人认为between and就相当于>= <=
And为‘并’,满足所有条件 ; or为‘或’,满足其中一个条件即可。
mysql>select * from famliy where name like 'chenb' and sex like 'man';
mysql>select * from famliy where name like 'chenb' or age like 34;
mysql>select * from famliy where age like 27 and sex like 'man' or age like 34;
groupby 分组查询
mysql>select name,id,age from member group by age;
mysql>select sex,count(name) from member group by sex;
mysql>select sex,count(name) from member group by sex having count(name) >5;
group_concat()和group by 一起使用
mysql>select sex,group_concat(name) from member group by sex;
groupby和with rollup一起使用 (with rollup求和)
mysql>select sex,count(name) from member group by sex with rollup;
mysql>select sex,group_concat(name) from member group by sex with rollup;
查询member表下所有记录,但只显示前两行
mysql>select * from member limit 2;
mysql>select * from member limit 2,3; (2是起始位置,显示3行)
集合函数查询
Count()函数用来统计记录的条数
mysql>select count(name) from member;
mysql>select sex,count(name) from member group by sex;
sum()函数是用来求和的
mysql>select id,sum(score) from member where id;
mysql>select id,sum(score) from member group by id;
avg()函数是求平均值的函数
mysql>select avg(yuwen) from chengji;
max()函数是求最大值得函数
min()函数是求最小值的函数
连接查询
内连接查询方式
mysql>select member.name,famliy.sex,member.age from member,famliy where member.id=famliy.id;
外连接查询方式
Select属性名列表from 表1 left|right join 表2
On 表1.属性名1=表2.属性名2;
mysql>select member.name,famliy.sex,member.age from member right join famliy on member.id=famliy.id;
子查询
mysql中更改root密码
一:[root@localhost~]# mysqladmin -uroot -p123456 password 'root'
二:mysql> update mysql.user set password=password('123456') where user='root' and host='localhost';
mysql> flush privileges;
三:mysql> set password=password('root');
mysql> flush privileges;
注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。
Mysql用户管理
新建普通用户
mysql>create user 'chenbo'@'localhost' identified by 'chenbo123';
mysql>grant select on *.* to 'chenbu'@'localhost' identified by 'chenbu123';
查看用户
mysql>select * from mysql.user where user='chenbo' \G;
删除用户
mysql>drop user 'chenbo'@'localhost';
mysql>delete from mysql.user where host='localhost' and user='chenbu';
mysql>flush privileges; (刷新权限表)
root给普通用户修改密码:
mysql>set password for 'chenbo'@'localhost'=password('123456');
mysql>grant select on *.* to 'chenbo'@'localhost' identified by '123456';
mysql>update mysql.user set password=password('chenbo') where user='chenbo' and host='localhost';
mysql>flush privileges; (刷新权限表)
普通用户给自己修改密码
mysql>set password=password('chenbo');
权限管理:
MySQL 赋予用户权限命令的简单格式可概括为:
grant 权限 on数据库对象 to 用户
grant 权限 on数据库对象 to 用户identified by "密码"
//开放管理MySQL中所有数据库的权限
grant all on *.* to ‘chenbo’@'192.168.0.10'identified by "dbapasswd";
//开放管理MySQL中具体数据库的表(testdb.table1)的权限
grant all on testdb.teable1 to ‘chenbo’@'192.168.0.10' identified by "dbapasswd";
//开放管理MySQL中具体数据库的表(testdb.table1)的部分列的权限
grant select(host,user,password) on testdb.table1 to ‘chenbo’@'192.168.0.%' identified by "dbapasswd";
//开放管理操作指令
grant select, insert, update, delete on testdb to ‘chenbo’@'localhost' identified by "dbapasswd";
添加权限
mysql>grant select,update,insert on *.* (*.*表示所有表)
-> to 'chenbo'@'localhost' identified by 'chenbo'
-> with grant option;
mysql>grant all privileges on *.*
-> to 'chenbo'@'localhost' identified by 'chenbo';
//回收权限
revoke all on *.* from ‘chenbo’@’localhost’;
收回权限mysql> revoke select,update on *.* from 'chenbo'@'localhost';
mysql>revoke all privileges, grant option from 'chenbo'@'localhost';
//查看 MySQL 用户权限
show grants;
show grants for chenbo@localhost;
mysql存储过程和函数
创建存储过程和函数
mysql>create procedure aaa (in emp_id int,out count_num int)
-> reads sql data
-> begin
-> select count(*) into count_num
-> from member
-> where id=emp_id ;
-> end
-> &&
创建存储函数
mysql>create function aaa (emp_id int)
-> returns varchar(20)
-> begin
-> return (select name from member where id=emp_id);
-> end
-> &&
光标的使用
声明光标
mysql>declare cur_member cursor for select name,age from member;
打开光标
mysql>open cut_member;
使用光标
mysql>fetch cut_member into name,age;
关闭光标
mysql>close cur_member;
MYSQL分区
通过使用show variables like ‘%partition%’;来确定当前的mysql是否支持分区。
mysql>alter table aaa add partition partitions 6;
mysql>alter table member remove partitioning;(删除表的所有分区)
Mysql日志
日志的读取
[root@localhost~]# mysqlbinlog /var/lib/mysql/mysql-bin.000001
日志的删除
1. mysql> reset master;
2. mysql> purge master logs to "mysql-bin.000006";
3. mysql> purge master logs before '2014-08-12 08:05:00';
4. 在my.cnf中设置参数expire_logs_days=7
查看mysql日志
mysql>system ls -ltr /var/lib/mysql/mysql-bin*
通过配置文件my.cnf中的log-slow-queries选项可以开启慢查询日志
[mysqld]
Log-bin=mysql-bin 开启二进制日志(binlog日志)
slow_query_log=1 开启慢查询日志
查询long_query_time的值
mysql> show variables like 'long%';
mysql> set long_query_time=2; 设置慢查询时间
mysql> set globallong_query_time=0.01; 设置微妙慢查询时间
- MySQL常用命令
- MySql常用命令
- MySQL常用命令
- mysql常用命令
- mysql常用命令
- mysql常用命令
- Mysql常用命令
- MySQL常用命令
- mysql 常用命令
- MySQL常用命令
- mysql常用命令
- MySql常用命令
- MySQL常用命令
- mysql 常用命令
- mysql常用命令
- mysql常用命令
- mysql 常用命令
- MySQL常用命令
- javascript 与 webview 交互
- 自动生成@3x图
- 一些博客
- MATH相关概念
- IMP-00041: 警告: 创建的对象带有编译警告解决办法
- mysql常用命令
- WCF basicHttpBinding 实例
- 英文win 7 系统中文乱码,修改默认语言
- 微信和淘宝最赤裸的分析
- Android四大组件
- c# 短信猫池移动空充程序
- Android的小菜鸟
- 5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
- android 选择图片拍照并剪切照片上传到服务器