MySQL常用命令总结

–数据库服务器登录
mysql -hlocalhost -uroot -proot -P3306 –这里不加分号
mysql -uroot -proot
mysql -uroot -p
*****
—————————————-
–退出的方法
>mysql exit;
>mysql quit;
>mysql /q;
—————————————

–创建数据库
create database 数据库名称;
–选择数据库
use 数据库名称;
–查看当前数据库
select database();
–查看服务器中所有数据库
show databases;
–删除数据库
drop database 数据库名称;

–关于表的操作
–查看当前数据库所有表
show tables;
–创建数据表
–学生表,ID号,姓名, 性别,年龄,籍贯
create table tb_stu (
id int(11) not null auto_increment primary key,
name varchar(10) not null,
sex char(1) not null,
age tinyint not null default 0,
city varchar(20) not null default ‘bj’
)
–查看表的表结构
desc 表名
–修改表名
alter table 旧表名 rename 新表名 — 修改表名在当前库名
alter table 旧表名 rename 库名.新表名 — 在修改表名的基础上移动表

— 第二种方法
rename table 旧表名 to 新表名 //在当前库修改表名
rename table 旧表名 to 数据库名.新表名 // 将表移动到其它库中,可以修改名称,也可以不修改。

–删除表
drop table 表名 — 删除一个
drop table 表名1,表名2….. — 删除多个

— ////////////////////////////////////////////////////////////
— 数据库操作的步骤:
–1. 登录 mysql_connect(‘localhost’,’root’,’root’);
–2. 选择数据库: mysql_select_db(数据库名)
–3. 设置字符集:set names utf8

— 插入数据语句
insert into 表名 values (所有字段对应的值,字段值之间用逗号,如果是字符串要单引号)
— 查询数据语句
select * from 表名
— 修改表
— 添加字段
alter table 表名 add 字段名 字段类型 字段的属性 first | after
— 修改字段
alter table 表名 modify 字段名 字段类型 字段的属性 — 只能修改类型和属性
alter table 表名 change 字段名 字段类型 字段的属性 — 都可以修改
— 删除字段
alter table 表名 drop 字段名 , drop 字段名

— 复制表与结构
create table 新表名 select * from 旧表名
— 复制结构
create table 新表名 like 旧表名
— 显示表结构
desc 表名
— 显示创建表的语句
show create table 表名
— 显示当前库所有表
show tables
— 删除表命令
drop table 表名
— 查询所有字符集
show character set
— 查询当前系统使用字符集
show variables like ‘%char%’;
— 修改表字符集
alter table 表名 charset 字符集名称
— 修改数据库字符集
alter database 库名 charset 字符集名称
— 查询所有校对规则
show collation
— 校对规则分类
_ci //不区分大小写
_cs //区分大小写
_bin //区分大小写
— 修改校对规则
alter table 表名 collate 校对规则名称
— 查询所有存储引擎
show engines
— 修改表的存储引擎
alter table 表名 engine 存储引擎名称
— 设置字段为无符号
字段数据类型 unsigned 字段属性
— 设置字段为前导零
字段数据类型 zerofill 字段属性
— float,double,decimal区别

create table customer (
id int not null auto_increment primary key,
name varchar(10) not null,
sex char(1) not null,
age tinyint not null,
email varchar(50) not null,
address varchar(50) not null,
birthday date
);

— ///////////////////////////////////////////////////////////////////////////
— 插入SQL语句
insert into 表名 values (字段值……);
insert into 表名 (字段….) values (字段值….)
— 从其它表中插入数据
— 先建一个空表
create table 新表名 like 旧表名
insert into 新表名 select * from 旧表名
— 更新SQL语句
update 表名 set 字段1=’值1’,字段2=’值2′ where 条件
— 删除SQL语句
delete from 表名 where 条件
truncate 表名 //清空表
— 查询SQL语句
select all | distinct 字段。。。from 表名 【where 条件 】
— 从表stu,查询age>25的所有记录
select * from stu where age > 25;
— 从表stu,查询籍贯为山东省的所有记录
select * from stu where city = ‘山东省’;
— 从表stu,查询id为 4,9,23 的记录
select * from stu where id in(4,9,23);
— ///////////////////////////////////////////////////////////////////////////
陈艳平
— 插入一条新闻记录,表news, title为’江苏盐城遭龙卷风暴雨冰雹袭击’,name为’admin’

insert into news (title,name) values (‘江苏盐城遭龙卷风暴雨冰雹袭击’,’admin’);

黄云龙
— 查询 news 表 所有记录
— 查询并显示 news表id,title,author,soruce,addate字段 , 条件为id=1010的记录
select * from news;
select id,title,author,soruce,addate from news where id=1010;

孔繁岐
— 更新stu表中 id=100 的记录,字段 title为’我努力为’,author为’你’,source为’本站原创’,addate为time();
update stu set title = ‘我努力为’,author = ‘你’,source =’本站原创’,addate = time() where id = 100;

冯少波
— 删除stu表中 id=500 的记录
delete from stu where id=500;

— DQL —》 select
— select 完整 语句
select all | distinct 列字段, 分组的字段 from 表名1,表名2 where 条件 group by 分组的字段 having 过滤 order by 排序的字段 ASC | DESC limit m , n ;

— 连接查询语句
。。。 from 表1 【left | right | natural|】join 表2 on 条件(表1,表2有相同值的字段)

— 联合查询
select * from 表1 union 【all】select * from 表2

–////////////////////////////////////////////////////////////////////////////////////////

select all | distinct 列字段, 分组的字段 from 表1 【left | right | natural|】join 表2 on 条件(表1,表2有相同值的字段) where 条件 group by 分组的字段 having 过滤 order by 排序的字段 ASC | DESC limit m , n ;

–标量子查询
— 查询最高工资的学生信息
select * from student where salary = (select max(salary) from student);
— 查询最低工资的学生信息
select * from student where salary = (select min(salary) from student);

— 查询和id为20的性别一样的学生信息
select * from student where sex = (select sex from student where id = 20);

— 查询“基本工资”>“平均工资”的学生信息
select * from student where salary > (select avg(salary) from student);
— 显示“基本工资”>“平均工资”,并且籍贯为“山东省”的学生信息
select * from student where salary > (select avg(salary) from student) and city = ‘山东省’;

— 查询学生表,性别人数大于20的所有学生信息。
select * from student where sex = (select sex from student group by sex having count(*) >20);

–查询籍贯为“山东省”,“山西省”的学生信息
select * from student where city in (select city from student where city = ‘山东省’ or city = ‘山西省’);

— 实例:商品表(goods),查询同类商品最新的商品信息。
select goods_name from goods where goods_id in (select max(goods_id) from goods group by goods_cat);

— 查询id大于任意id为5,13,23的所有学生信息。
select * from student where id > any (select id from student where id in (5,13,23));

— 查询id大于所有 id为5,13,23的所有学生信息。
select * from student where id > all (select id from student where id in (5,13,23));

— 查询 当季旅游表中id=1的文章标题和作者,在旅游指南表中有没有相同的文章标题和作者
select *from lvyouzhinan where (title,author) = (select title,author from dangjilvyou where id = 1);

— 查询总工资 >30000的学生
select * from (select name,salary+bonus as a from student) b where a>30000;

— 1) 查出“计算机系”的所有学生信息;
select * from stu_info where depart = (select id from stu_depart where name = ‘计算机系’);

— 2) 查出“许娜”所在的院系信息;
select * from stu_depart where id = (select depart from stu_info where name = ‘许娜’);

— 3) 查出在“行政楼”办公的院系名称;
select name from stu_depart like ‘行政楼%’;

— 4) 查出男生女生各多少人;
select sex , count(*) as 总人数 from stu_info group by sex;

— 5) 查出人数最多的院系信息。
select * from stu_depart where id = (select depart from stu_info group by depart order by count(*) desc limit 1);

–/////////////////////////////////////////////////////////
— 创建用户:
create user ‘用户名’@’主机IP或 域名’ identified by ‘密码’;
— 修改密码:
当前用户自己修改密码 set password = password(‘密码’);
管理员为其它用户修改密码: set password for ‘用户名’@’主机IP或 域名’ = password(‘密码’);
删除用户: drop user ‘用户名’@’主机IP或 域名’

— 为新用户授予权限
 grant 权限列表 on 数据库.数据表名 to ‘用户名’@’主机’;
grant all on 数据库.* to ‘用户名’@’主机’; // all 为所有权,*代表所有表
grant all on *.* to ‘用户名’@’主机’; // all 为所有权,*代表所有库,所有表
— 收回权限
revoke all on *.* from ‘用户名’@’主机’; // 收回所有权

–数据库的备份:
在cmd 下:mysqldump -h主机 –u用户名 –p密码 数据库名 【数据表】 > 备份文件(*.sql)的路径
–数据库的恢复:
在cmd 下: mysql –h主机 –u用户 –p密码 数据库 【不加表名】 < 路径 文件名.sql