Mysql基础之sql语句

前言

讲一下MySQL的一些基本操作

1. DDL


#库操作
show databases;#展示所有数据库
select database();#查询当前数据库,看当前是哪个数据库
#drop database ck;#删除数据库,如果不存在就报错
drop database if exists ck;#如果存在就删,不存在的话就不报错,不做处理
#create database ck;#创建数据库,已经存在就报错
#create database if not exists ck;#创建数据库,不存在才创建
#create database ck default charset utf8mb4;#编码使用utf8mb4就是系统默认的编码规则
use test;#使用数据库,就会切换到这个数据库

#表操作
show tables;#这个会展示当前数据库里面的所有表,只展示表名
#desc 表名;就是打印出这个表
#show create table 表名;查寻这个表的建表语句
create table user2(
    id int comment '编号',
    name varchar(50) comment '姓名',
    age int comment '年龄',
    gender varchar(1) comment '性别'
)comment '用户表';#这就是一个建表操作
#添加字段,就是添加一行
alter table user2 add nickname varchar(20) comment '昵称';
#修改字段,就是修改一行
alter table user2 change nickname username varchar(20) comment '昵称';#注释可以不写
#删除字段,就是删除一行
alter table user2 drop username;
#修改表名
alter table user2 rename to user1;
#删除表
drop table if exists user1;
#删除表,并重新创建该表,意思就是相当于清空了原来的数据,全部数据都没了
truncate table user2;

2. DML

在这里插入图片描述
有些时候会出现Connection refused: connect这种错误,这个的原因就是
mysql没有启动的原因
在这里插入图片描述
win+r输入services.msc去启动就可以了

2.1 插入操作

insert into user (id, name, age) values ('1','ck',19);

左边是这个(id, name, age),右边就要对应才行,顺序可以交换

双击user就可以查表了
在这里插入图片描述

select * from user;

或者这样也可以查表

insert into user (id, name) values ('1','ck');

也可以这样写,没写的就是默认为null

insert into user  values ('3','hh',30);

不写左边括号的属性值的话,这个属性就是字段,,就会默认用的(id, name, age)属性,挨着挨着来的

insert into user  values ('4','hh',30),('5','hh',30);

这样写就是插入多排
在这里插入图片描述

2.2 修改数据

update user set name = 'aaaaaaa' where age =19;

在这里插入图片描述
这个的意思就是将age=19的那一行的name改成aaaaaaa

update user set name = 'aaaaaaa',age=100 where age =19;

在这里插入图片描述
当然也可以改多个

**update user set age = 20;**

这个是把每一行的age都改为20
在这里插入图片描述
有危险提示,继续执行就是了
在这里插入图片描述

2.3 删除

delete from user where name = 'ck';

这个就是删除name=ck的行
在这里插入图片描述

delete from user ;

这个就是删除所有行

3. DQL

3.1 基本查询

select age from user;

在这里插入图片描述
打印所有age数据

select age,name from user;

在这里插入图片描述
也可以打印多行

select age,name,id from user;

查询所有
或者这样

select * from user;

在这里插入图片描述

select age as '年龄' from user;

在这里插入图片描述
查询本来是age,但是这个取别名,打印出来就是别名年龄了

select age '年龄' from user;

也可以去掉as
as就是取别名

select distinct age '年龄' from user;

在这里插入图片描述
加上distinct就是去掉重复的

3.2 条件查询

在这里插入图片描述

在这里插入图片描述

select * from form where age = 12;

在这里插入图片描述

打印*也就是name,age,id但是查询的只是age = 12的时候

select * from form where age > 12;

在这里插入图片描述

select * from form where age >= 13;

在这里插入图片描述

select * from form where id is null;

在这里插入图片描述
这个查询的是null

select * from form where id is not null;

在这里插入图片描述

select * from form where id != 1;

在这里插入图片描述
查询的时候不会管null,除非专门针对null

select * from form where id <> 1;

在这里插入图片描述
<>与!=是一样的

select * from form where age>=30&&age<=90;

在这里插入图片描述

select * from form where age>=30 and age<=90;

在这里插入图片描述
and与&&是一样的作用

select * from form where age between 30 and 90;

在这里插入图片描述
这个是查询30到90的age,包括30和90,,betweed对应的是最小值,and对应的是最大值,不能倒过来,倒过来就不行了

select * from form where age = 30 && id  = 3;

在这里插入图片描述

select * from form where age = 30 or age =90 or age =12;

在这里插入图片描述

select * from form where age in(30,90,12);

在这里插入图片描述
这个in和上面的or是一样的效果

select * from form where age like '__';

在这里插入图片描述
like是对位数进行限制,这个就是打印两位数,两个字符的age
一个下划线就是一位数

select * from form where age like '_';

在这里插入图片描述

select * from form where name like '%d';

在这里插入图片描述
这个%指的是任意位数,这个意思就是打印name最后一个为d的

等价于

select * from form where name like '____d';

3.3 聚合函数

select count(*) from form;

在这里插入图片描述
count是用来计数的,count(*)就是计算有多少行

select count(id) from form;

在这里插入图片描述
这个count(id)就是算id的数据有多少个,null不纳入计算

select avg(age) from form;

在这里插入图片描述

这个是算所有age数据的平均数

select min(age) from form;

在这里插入图片描述

这个是算age的最小值

select max(age) from form;

在这里插入图片描述

select sum(age) from form where age<90;

在这里插入图片描述
这个是对所有小于90的age求和

3.4 分组查询

在这里插入图片描述

select count(*) from form group by name;

在这里插入图片描述

这个的意思就是按照名字的不同来分组,打印每组的个数

还可以打印名字出来,然后打印每个名字类型有多少个

select name,count(*) from form group by name;

在这里插入图片描述

select name,avg(age) from form group by name;

在这里插入图片描述
这个就是先根据名字来分组,然后计算每组的平均年龄

select name,count(*) from form where age<30 group by name;

在这里插入图片描述
这个的意思就是把年龄小于30的按照名字分组,并打印出每组人数

select name,count(*) from form where age<30 group by name having count(*)>=2;

在这里插入图片描述
这个的意思就是打印出分组之后,数量大于2的

select name,count(*) 数量 from form where age<30 group by name having count(*)>=2;

在这里插入图片描述
这个就是取个别名

where先执行,然后是聚合函数,然后是having

查询的字段一般是你分组的字段,其他字段没有意义

3.5 排序查询

select * from form order by age asc;

在这里插入图片描述
这个是打印所有字段,然后打印的顺序就是按照年龄从小到大的顺序

select * from form order by age desc;

在这里插入图片描述
desc就是降序

select * from form order by age ;

在这里插入图片描述
默认不写就是升序

select * from form order by age asc,id asc;

在这里插入图片描述
这个就是按照年龄排序,年龄相同就比id

3.6 分页查询

select * from form limit 0,10;

在这里插入图片描述
这个就是将表中的默认顺序,从索引0往后打印10个

select * from form limit 10;

不写第一个参数就是默认从索引0开始往后10个

select * from form limit 10,10;

在这里插入图片描述
如果后面没有10个,那么该打印多少个就打印多少个

这个就是从索引为10的往后打印10个
为什么叫做分页查询呢,因为每页数量固定,那么就可以查询每页数量了

3.7 编写顺序

select +字段列表+from +表名列表+where+条件列表+group by+分组字段列表+having+分组后条件列表+order by+排序字段列表 +limit +分页参数

3.8 执行顺序

先from
再where
group by
having
select
order by
limit

4. DCL

这个就是用来管理数据库的用户和用户的权限的,管理用户的对库和表的权限,一般这里的语言只对数据库管理人员有要求,普通的开发人员了解一下就可以了

4.1 管理用户

在这里插入图片描述
在这里插入图片描述
点击数据库mysql,里面找到表user,就可以看到我们的用户了
在这里插入图片描述

其中那个Host是主机地址,我们创建用户的时候就要用到

create user 'aaaaa'@'localhost' identified by '123456';

这个就是创建用户,用户名为aaaaa,然后主机地址为localhost,密码是123456,这个主机地址就是我们这个计算机

在这里插入图片描述

create user 'aaaaa'@'%' identified by '123456';

这个就表示我们创建的用户可以任意主机访问数据库

可以看出,我们现在创建的用户没什么权限,只能登录,不能真正的访问数据库

alter user 'aaaaa'@'%' identified with mysql_native_password by '1122';

这个就是把我们刚刚创建的用户的密码修改成1122

drop user 'aaaaa'@'%' ;

这个就是删除用户

4.2 权限控制

show grants for 'aaaaa'@'localhost';

在这里插入图片描述

这个就是展示这个用户的所有权限

可以看出这个用户什么权限都没有

grant all on test.* to 'aaaaa'@'localhost';
show grants for 'aaaaa'@'localhost';

在这里插入图片描述
这个是赋予权限意思,赋予aaaaa这个用户test这个库的所有表的所有权限

revoke all on test.* from 'aaaaa'@'localhost';

这个就是撤销权限的意思,,撤销aaaaa这个用户test这个库的所有表的所有权限

show grants for 'aaaaa'@'localhost';

在这里插入图片描述

总结

这一篇博客主要是mysql的sql语句的语法,下一次讲函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值