1、数据库操作
进入命令行:mysql -uroot -p123456
查看数据库:show databases;
查看数据库创建语句:show create database test;
创建数据库:create database test charset utf8mb4;
选择数据库:use test;
删除数据库:drop database test;
备份指定数据库:mysqldump -uroot -p test >test.sql 注:由于mysql5.6版本不支持在命令行界面输入密码,所以暂不输入密码,回车后输入密码即可。
备份所有数据库:mysqldump -uroot -p -A >test.sql
恢复指定数据库:mysql -uroot -p test<test.sql
恢复所有数据库:mysql -uroot -p -A <test.sql
2、表操作:
表约束:
自增:aotu_increment
主键:primary key
非空:not null
默认值:default 'xx'
唯一:unique
指定字符集:charset utf8mb4
查看表:
查看表:show tables;
查看创建表语句:show create table user;
查看表结构:desc user;
创建表:
create table user( id int auto_increment primary key, #ID自增并设置为主键 name varchar(10) not null, #姓名不允许为空 sex varchar(5) default 1, #性别默认1 phone bigint not null unique, #电话不允许为空并且唯一 create_time datetime default now(), #创建时间默认当前时间 addr varchar(50) );
删除表:
删除表:drop table user;
修改表:
修改表名称:alter table user rename user1;
修改字段类型并重命名:alter table user change name names varchar(15);
修改字段类型:alter table user modify name varchar(15);
在指定位置新增字段:alter table user add password varchar(20) not null after name;
3、数据操作
增加数据:
表中新增数据:insert into user values('','张三','男','1234567890',NOW(),'北京市海淀区');
表中指定字段添加数据:insert into user(name,phone,create_time) values('张三','12348567890',NOW()); 注:如果字段设置非空,则必须添加
删除数据:
删除表中数据:delete from user; 注:自增长ID不会清空,还会从原有的ID开始继续增长
清空表:truncate user;
删除表中指定的数据:delete from user where id=1;
更改数据:
更改表中所有数据:update user set sex='男';
更改表中指定数据:update user set sex='男' where name='张三';
更改表中多个字段:update user set sex='男',addr='北京市朝阳区' where name='张三';
在原有数据基础上更改:update user set phone=phone+1 where name='张三';
查询数据:
查询前5条数据:select * from user limit 5;
查询第3至6条数据:select * from user limit 2,4; 注:从第几条开始查询(下标从0开始),查询多少条
查询指定字段:select name,sex,phone from user;
单表查询:select * from user where name='张三' and sex='男'; 注:and表示多个条件必须同时满足
select * from user where name='张三' or sex='男'; 注:or表示有其中一个条件满足即可
select * from user where sex !='男'; #查询不等于男生的信息,也可以用<>
select * from user where name like '张%'; #查询姓张的用户
select * from user where name like '张_'; #查询姓张并且姓名为2个字的用户
select * from user where name in ('张三','李四','王五'); #查询姓名为张三、李四、王五的信息
select * from user where phone between 13700000000 and 13712345678; #查询手机号在13700000000和13712345678之间的用户
select * from user order by create_time desc; #查询按照用户创建时间倒序显示,默认升序asc
select * from user where addr='' or addr is null; #查询地址为空或为null的用户
select distinct name from user; #不显示重复的姓名
select count(*) from user where sex='女'; #统计女生有多少人
select max(age),min(age),avg(age),sum(age) from user where sex='男'; #查找男生年龄最大、最小、平均、总和
select *,COUNT(sex) from user GROUP BY sex having sex='女'; #按照性别分组,并显示女生有多少人
多表查询:
select * from user u,user_group g where u.id=g.id #查询两张表共有的数据
select * from user u inner join user_group g on u.id=g.id; #查询两张表共有的数据
select * from user u left join user_group g on u.id=g.id; #左边所有的数据都查出来,右边如果有匹配的则查出来
select * from user u right join user_group g on u.id=g.id; #右边所有的数据都查出来,左边如果有匹配的则查出来
select * from user u left join user_group g on u.id=g.id
union
select * from user u right join user_group g on u.id=g.id; #左边和右边匹配的数据全部查出来并去重(union all不会去重),相当于oracle的全连接
select * from (select id,name,sex from user where sex='女') user; #把查询结果作为一张表查询
select * from user where id in(select id from user_group where g_name='计算机'); #子查询,查询学计算机的用户信息
4、用户管理
添加用户:
insert into user (user,host,password) values('xiaoxitest','%',PASSWORD('123456')); #添加xiaoxitest用户并允许远程计算机登录,密码为:123456
更改用户:
update user set password=password("654321") where user='xiaoxitest'; #更改用户密码
update user set user='xiaoxi' where user='xiaoxitest'; #更改用户名xiaoxitest为xiaoxi
删除用户:
delete from user where user='xiaoxi'; #删除xiaoxi用户
5、权限管理
用户授权:
授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码" with grant option;
grant all on *.* to 'xiaoxi'@'%' IDENTIFIED BY '123456' with grant option; #表示为xiaoxi用户添加所有数据库所有权限,并可以给其他人授权。
grant all on test.* to 'xiaoxi'@'%' IDENTIFIED BY '123456' ; #表示为xiaoxi用户添加test数据库所有权限
grant select on *.* to 'xiaoxi'@'%' IDENTIFIED BY '123456' ; #表示为xiaoxi用户添加所有数据库查询权限
取消授权:
Revoke select on *.* from 'xiaoxi'@'%'; #表示为xiaoxi用户取消所有数据库查询权限
Revoke all on *.* from 'xiaoxi'@'%'; #表示为xiaoxi用户取消所有数据库所有权限
刷新权限:
flush privileges;