MySQL(一) ---- 基本命令

DDL

针对数据库的操作

mysql -u root -p + 回车 + 输入密码   #连接MySQL
create database 数据库名;           #创建数据库(数据库一旦创建,不允许修改数据库名,只能删除)
show databases;                    #显示所有数据库
drop databasa 数据库名;             #删除数据库
use 数据库名;                       #使用数据库
exit\quit;                         #退出数据库
create database if not exists 数据库名 default character set 字符集 collate 排序规则;
alter database 数据库名 character set 字符集 collate 排序规则;

针对数据表的操作

VARCHAR(32):                                                #表示32个长度的字符串
INT(3):                                                     #表示3位整数
FLOAT(8,2):                                                 #表示8位数,其中两位是小数
primary key:                                                #设置为主键
auto_increment:                                             #设置自动增长
create table 数据表名(                                       #创建数据表
 name VARCHAR(32) primary key auto_increment,
 sex VARCHAR(32),
 age VARCHAR(3),
 salary FLOAT(8,2),
 course VARCHAR(32)
);
show tables;                                                #展示数据表
drop table 数据表名;                                         #删除数据表
alter table 数据表名 rename 新数据表名;                        #修改数据表名
desc 数据表名;                                               #查询字段信息
show create table 数据表名;                                  #查询创建表信息
create table 数据表名(字段) engine=数据表类型 charset=字符集编码;

针对字段的操作

alter table 数据表名 add 新字段名 新字段类型;                  #添加字段
alter table 数据表名 drop 字段名;                            #删除字段
alter table 数据表名 modify 字段名 新字段类型;                 #修改字段
alter table 数据表名 change 字段名 新字段名 新字段类型;         #修改字段名+类型
alter table 数据表名 rename as 新数据表名                     #重命名数据表名

DML

查询数据

select * from 数据表名;                                       #查询所有字段
select 字段名,字段名 from 数据表名;                             #查询指定字段
select distinct 字段名 from 数据表名;                          #去重
select * from 数据表名 where 字段名 like '%值%';            #模糊查询(%表示没有或多个字符)
select * from 数据表名 where 字段名 like '_值_';                #模糊查询(_表示一个字符)
select * from 数据表名 where 字段名 is null;                   #为空
select * from 数据表名 where 字段名 is not null;               #不为空
select * from 数据表名 where 字段名 in(值,值);                 #查询字段名等于值的数据
select * from 数据表名 order by 字段名 asc;                    #升序排序
select * from 数据表名 order by 字段名 desc;                   #降序排序
select * from 数据表名 order by 字段名 desc limit 数字;      #限制排序(只输出指定个数数据)
select SUM(字段名) from 数据表名;                              #聚合查询
select MAX(字段名) from 数据表名;                              #聚合查询
select MIN(字段名) from 数据表名;                              #聚合查询
select AVG(字段名) from 数据表名;                              #聚合查询
select COUNT(字段名) from 数据表名;                            #聚合查询
select * from where 字段名 = (select SUM(字段名) from 数据表名);#子查询
select 字段名,字段名 from group by 字段名;                      #分组查询
select 字段名 as '别名',字段名 as '别名' from group by 字段名;   #分组查询
select 字段名,字段名 from group by 字段名 having 字段名 > 值;    #分组查询 + 条件
select * from 数据表名 where 条件 limit 偏移量,查询条数          #分页查询
顺序:group by > having > order by > limit

添加数据

insert into 数据表名 values(数据,数据,'数据','数据');
insert into 数据表名(字段名,字段名,字段名) values(数据,'数据','数据');

修改数据

UPDATE 数据表名 SET 字段名=修改值;                                 #表内所有数据
UPDATE 数据表名 SET 字段名='修改值',字段名=修改值;                   #表内所有数据
UPDATE 数据表名 SET 字段名=修改值 where 字段名<值;                   #条件指定数据
UPDATE 数据表名 SET 字段名=修改值 where 字段名<值 AND 字段名='值';    #条件指定数据
UPDATE 数据表名 SET 字段名=修改值 where 字段名<值 OR 字段名='值';     #条件指定数据

删除数据

truncate 数据表名;                                  #再次添加数据时,主键重新排列
delete from 数据表名;                               #再次添加数据时,主键末尾下标开始
delete from 数据表名 where 字段名<值;                #条件指定数据

内连接

select s.name,t.name from student s, teacher t where s.t_id=t.id;
select s.name,t.name from student s inner join teacher t on s.t_id=t.id;

外连接

select s.name,t.name from student s left join teacher t on s.t_id=t.id;     #左连接
select s.name,t.name from student s right join teacher t on s.t_id=t.id;    #右连接

合并查询

select s.name,t.name from student s left join teacher t on s.t_id=t.id;
union all
select s.name,t.name from student s right join teacher t on s.t_id=t.id;

全连接 -> 合并查询+去重

select s.name,t.name from student s left join teacher t on s.t_id=t.id;
union
select s.name,t.name from student s right join teacher t on s.t_id=t.id;

测试

create table emp(
    no bigint(20) primary key not null auto_increment comment '编号',
 name varchar(20) not null comment '姓名',
 sex varchar(2) default '男' comment '性别',
 age int(3) not null comment '年龄',
 dept varchar(20) not null comment '所属部门',
 salary double(10,2) not null comment '薪资'
) charset=utf8;
​
insert into emp values (default,'张三','男',22,'研发部',13000),
(default,'李刚','男',24,'研发部',13000),
(default,'金凤','女',23,'研发部',13000),
(default,'肖青','女',26,'研发部',13000),
(default,'张华','男',28,'研发部',13000),
(default,'董钰','女',24,'研发部',13000),
(default,'吴梅','女',24,'研发部',13000),
(default,'王玲','女',26,'研发部',13000);
​
update emp set salary=11000 where name='吴梅';
delete from emp where name='金凤';
select dept from emp group by dept having avg(age)<25 desc;
select max(salary),min(salary),avg(salary),sum(salary) from emp where dept='研发部';
select dept,count(*) from emp group by dept;
select * from emp where salary>10000 order by salary desc;
select * from emp order by salary desc limit 0,5;
select * from emp order by salary desc limit 5,5;
select * from emp where name like '_三';
select * from emp where no in(1,4,7);
​
select dept,sum(case sex when '男' then 1 else 0 end) '男',sum(case sex when '女' then 1 else 0 end) '女' from emp group by dept;
select sex,sum(case dept when '研发部' then 1 else 0 end) '研发部',sum(case dept when '测试部' then 1 else 0 end) '测试部',sum(case dept when '财务部' then 1 else 0 end) '财务部' from emp group by sex;

DCL

含义:创建子账号,并开权限 创建子账号

create user 'buliyat'@'localhost' identified by '123123';

设置权限

grant select,insert on fy_2301.* to 'buliyat'@'localhost' identified by '123123';

设置临时编码格式

set charset gbk;

删除权限

revoke insert on fy_2301.* from 'buliyat'@'localhost' identified by '123123';

删除子账号

drop user 'buliyat'@'localhost';
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值