MYSQL的增删改查操作

目录

表操作

1.查看表

2.创建表

3.修改表结构

4.删除表

1.全列查询

2.指定列查询

3.查询带有表达式

4.查询带有别名

5.针对查询结果去重

6.条件查询

7.排序查询

8.分页查询

其他

1.插入查询

2.聚合函数

3.分组查询

4.having子句

5.内置函数


表操作

在进行对表的增删改查操作前,要通过

use database 数据库名;

来选中数据库

1.查看表
show tables;

可以查看所有的表;

desc 表名;

可以查看选中的表;

2.创建表

create table 表名 (列名 类型,列名 类型......);

create table student (name varchar(20),age int,score decimal(12,1));

接下来介绍一下常见数据类型:

tinyint:1个字节
smallint:2个字节
mediumint:3个字节
int(integer):4个字节
bigint:8个字节

float:4个字节,单精度
double:8个字节,双精度

decimal(m,d):定点数类型。m位数字,d位小数,底层实际上采用字符串的形式存储数字

varchar(x):可变长度的字符串,长度为x

datetime:8个字节,存储年月日+时分秒,格式:YYYY-MM-DD HH:MM:SS(从公元1000年~公元9999年)

3.修改表结构

alter table 表名 动作 列名 (类型)

alter table student add class_id int after gender;
#在student表中添加class_id列
alter table student modify class_id bigint;
#将class_id的数据类型更改为bigint
alter table student rename column class_id to classId;
#将列改名从class_id到classId
alter table student drop classId;
#删除列classId

4.删除表

drop table 表名;

drop table student;

语法格式:

insert into 表名(列1,列2,列3,...) values(值1,值2,值3,...);

表名后面的小括号当中的列名如果省略掉,表示自动将所有列都列出来了,并且列的顺序和建表时的顺序一致。
一般为了可读性强,建议把列名写上。

insert into 表名 values(值1,值2,值3,...);

一次可以插入多条记录:

insert into 表名 values(),()...;

1.全列查询
select * from 表名;

*为通配符,此处代表所有列

2.指定列查询
select 列名,列名 from 表名;
3.查询带有表达式

例如一个学生有语文和数学成绩

select name,chinese + math from student;

表示同时查学生的名字以及语文数学成绩的总和,表达式不会影响数据库内的数据

select name,chinese + 10 from student;

虽然查看到的学生语文成绩增加了10,但是数据库服务器硬盘中的语文成绩不会改变

4.查询带有别名
select name,chinese + math as total from student;

5.针对查询结果去重
select distinct 列名 from 表名;

若此处有多个列名,要求多个列都是相同的值才会去重

6.条件查询

比较运算符

>, >=, <, <= 
⼤于,⼤于等于,⼩于,⼩于等于
= 
等于,对于NULL的⽐较不安全,⽐如NULL = NULL结果还是NULL(FALSE)
<=> 
等于,对于NULL的⽐较是安全的,⽐如NULL <=> NULL结果是TRUE(1)
!=, <> 
不等于
value BETWEEN a0 AND a1
范围匹配,[a0, a1],如果a0 <= value <= a1,返回TRUE或1,NOT BETWEEN则取反
value IN (option, ...) 
如果value 在optoin列表中,则返回TRUE(1),NOT IN则取反
IS NULL 
是NULL
IS NOT NULL 
不是NULL
LIKE 
模糊匹配,% 表⽰任意多个(包括0个)字符;_ 表⽰任意⼀个字符,NOT LIKE则取反

逻辑运算符

AND 
多个条件必须都为 TRUE(1),结果才是 TRUE(1)
OR 
任意⼀个条件为 TRUE(1), 结果为 TRUE(1)
NOT 
条件为 TRUE(1),结果为 FALSE(0)

无条件查询时

我们可以控制条件得到自己想要的数据

别名不能在条件中使用

会报找不到total的错误

并且where后面不能定义别名

模糊查询

like搭配通配符

select * from exam where name like '小%';

这里是查询名字为小开头的所有学生

select * from exam where name like '%小%';

则为名字包含小的所有学生

% 表⽰任意多个(包括0个)字符;_ 表⽰任意⼀个字符,例如小天才不能用小_查找到,只能用小__;

7.排序查询
#升序排序
select 列名,列名 from 表名 order by 列名,列名;
#降序排序
select 列名,列名 from 表名 order by 列名 desc,列名 desc;

在排序中,null默认为最小值。

按照order by 后面的列名排序,默认为升序(也可添加asc),列名后加desc就为降序排序。

order by 可以使用别名作为排序规则

8.分页查询
select 列名 from 表名 limit m offset n;
select 列名 from 表名 limit n, m;

获取从n开始的前m条数据;

若limit后只有m,就是查前m条数据;

update 表名 set 列名 = 值, ... where ... ...;

这里的 = 是赋值(sql中的 = 有相等和赋值两个含义)

delete from 表名 (where 条件...order by 列名 limit n)

drop是删除表,delete是删除表里面的数据;

其他

对比

insert into 表名()

select ... from 表名

update 表名

delete from 表名

1.插入查询
insert into 表名(列名) select 列名 form 表名;

将后面的列插入到前面

2.聚合函数

聚合函数是为了聚合查询,聚合查询就是在进行“行和行之间的运算”;

count([dietinct] expr)返回行数,某个列查询会忽略空值,若count(*),则会包括空值;

sum([dietinct] expr)返回总和;

avg([dietinct] expr)返回平均值;

max([dietinct] expr)返回最大值;

min([dietinct] expr)返回最小值;

例:count(*)不能写作count (*),count后面的空格会导致count被识别为列名,(*)被识别为别名,引发歧义。

#例如,查询所有学生的总成绩的总和
select sum(chinese + math + english) from student;
3.分组查询

分组查询的关键词是group by

select  ... from emp group by ...;

select后面只能查询分组内容和聚合函数

4.having子句

使用group by 对结果进行分组处理后,对分组的内容进行过滤时,不能使用where,而要使用having

select ... from 表名 group by ... having ...
Having 用于对分组结果的条件过滤
Where 用于对表中真实数据的条件过滤
5.内置函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值