MySQL筑基篇之增删改查

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL筑基篇之增删改查

一、增加表中数据

1、无自增列时


指定字段添加数据

给表中的部分列添加数据:值的顺序必须跟指定列的顺序保持一致

语法:insert into 表名(列1,列2,...) values(值1,值2,...)

默认添加数据

向表中的所有列添加数据:值的顺序必须跟字段顺序保持一致

语法:insert into 表名 values(值1,值2,...)


2、有自增列时


对于指定字段的添加

不用指定自增列,语法同无自增列一致

对于默认情况的添加

必须手动为自增列赋值或者填上null

例如:insert into t_person VALUES(null,'wangwu',32,'男',150.9')

自增列设置方法:


create table if not exists t_person(
  p_id int primary key auto_increment,-- 主键 自增
  ...
)


关键字:auto_increment


二、删除表中数据


1、使用delete


语法:delete from 表名 [where条件]


删除所有数据,例如:delete from t_person

删除指定数据,例如:delete from t_person where p_id=8

2、使用truncate


语法:truncate table 表名

通过表截断(truncate)的方式删除数据要优于使用delete,原因:


delete是一条一条删除,效率低,而truncate是直接在物理空间中将存放该表数据的空间截断舍弃,效率更快

delete主键会继续删除之前的自增,而truncate会重新开始自增


三、修改表中数据


语法:update 表名 set 列名1=新值,列名2=新值,... [where 条件]


操作整张表,例如:update t_person set age=18

操作部分数据,例如:update t_person set age=28 where p_id=1

第一个例子的含义是把t_person表中所有的age属性改为18,第二个含义是只把p_id为1对应的age改为28


四、*查询操作


查询是数据库基础的重点,拿小本本记上


1、简单查询


查询所有列

select * from 表名

查询部分列

select 列名1,列名2,... from 表名

可以通过列出所有字段名的方式查询所有列

弊端:书写繁琐

优势:可维护性更高、更灵活、执行效率更快

别名

select 列名1 as 别名1,列名2 as 别名2,... from 表名

as关键字可省

select 列名1 别名1,列名2 别名2,... from 表名

表名也可以起别名

别名使用示例:


SELECT employee_id as 员工编号,salary as 工资 from employees

SELECT employee_id 员工编号,salary 工资,first_name,last_name from employees e


数学运算

select 列名+数字,列名-数字,列名*数字,列名/数字,列名%数字 from 表名

去重

select distinct 列名 from 表名

去重规则可以为多个列,只有当规则中的所有列的信息完全一致时才会去重 :

select distinct 列名1,列名2,... from 表名


case when
select 列名1,列名2,
  case
  when 条件1 then 结果2
  when 条件2 then 结果2
  ...
  else 其他结果
  end
from 表名


when从上至下判断


每行数据只会执行一个when

类似java中的多重if分支:case开启分支,end结束分支

使用示例:


查询员工id及其工资,并对工资进行评级:工资>10000 高薪,工资>8000 中级,工资>5000 低级,其他 底层


select employee_id,salary,
      case
      when salary>10000 then '高薪'
      when salary>8000 then '中级'
      when salary>5000 then '低级'
      else '底层'
      end as '薪资等级'
    from employees


查询表详情

describe 表名

describe可以简写成desc:

desc 表名


2、条件查询


语法:

select 列名 from 表名 where 条件


单条件查询

查询工资>10000的员工信息:

SELECT * from employees where salary>10000


比较的类型为字符串时,对比数据需要加上单引号

mysql默认不区分大小写,如有需求,则在对应位置添加binary关键字

查询first_name为Steven的所有员工信息:

select * from employees where first_name='STEVEN'

区分大小写:

select * from employees where binary first_name='STEVEN'

多条件查询


多个条件之间须通过and或者or进行拼接:

and:代表并且,多个条件同时满足,相当于java中的&&

or:代表或者,满足任意一个即可,相当于java中的||


区间查询


在区间内

between 最小值 and 最大值

不在范围内

not between 最小值 and 最大值

枚举查询


在列举范围内

列名 in(值1,值2,值3,...)

查询员工id为100、105、110的员工信息

select * from employees where employee_id=100 or employee_id=105 or employee_id=110

等价于:

select * from employees where employee_id in(100,105,110)

不在列举范围内

列名 not in(值1,值2,值3,...)

查询员工id不是100、105、110的员工信息

select * from employees where employee_id not in(100,105,110)

空值查询


为空时

列名 is null

不为空时

列名 is not null

查询commission_pct为null的员工信息

select * from employees where commission_pct is null

查询commission_pct不为null的员工信息

select * from employees where commission_pct is not null

模糊查询

语法:

where 列名 like '值'

%:代表不固定长度,可以为0-n个字符

_:代表一个长度


示例:


查询first_name中包含s的员工信息
select * from employees where first_name like '%s%'
查询firstname中以s开头的员工信息
select * from employees where first_name like 's%'
查询firstname中以s结尾的员工信息
select * from employees where first_name like '%s'
查询firstname中第二个字母为s的员工信息
select * from employees where first_name like '_s%'


3、排序


对查询结果进行指定规则的排序显示


1、单列排序

select 列名 from 表名 order by 列名 asc(升序)|desc(降序)

示例:

根据工资从高到低显示员工信息

select * from employees order by salary desc


根据工资从低到高

select * from employees order by salary asc

select * from employees order by salary


tips: 默认为升序排列


2、多列排序

order by 列名1 asc|desc , 列名2 asc|desc,...

示例:

根据工资从低到高显示员工信息,如果工资相同,根据员工id从高到低显示

select * from employees order by salary asc,employee_id desc


3、where+order by


select 列名 from 表名
 where 筛选条件
 order by 排序条件


示例:


查询工资>10000的员工信息,从高到低显示

select * from employees where salary>10000 order by salary desc

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6天前
|
关系型数据库 MySQL
mysql连表查询基本增删改查
mysql连表查询基本增删改查
24 2
|
6天前
|
存储 关系型数据库 MySQL
【mysql】—— 表的增删改查
【mysql】—— 表的增删改查
|
6天前
|
存储 关系型数据库 MySQL
MySQL表的操作『增删改查』
MySQL表的操作『增删改查』
41 0
MySQL表的操作『增删改查』
|
6天前
|
存储 关系型数据库 MySQL
MySQL库的操作『增删改查 ‖ 编码问题 ‖ 备份与恢复』
MySQL库的操作『增删改查 ‖ 编码问题 ‖ 备份与恢复』
55 0
|
6天前
|
关系型数据库 MySQL 数据库
|
6天前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(一)
MySQL | 数据库的管理和操作【表的增删改查】
|
6天前
|
SQL 关系型数据库 MySQL
MySQL | 数据库的管理和操作【表的增删改查】(二)
MySQL | 数据库的管理和操作【表的增删改查】(二)
|
6天前
|
SQL 关系型数据库 MySQL
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
MySQL 基本概念 基础用法 增删改查(特殊查询)语法 详细篇
|
6天前
|
存储 SQL 关系型数据库
MySQL表的增删改查---多表查询和联合查询
MySQL表的增删改查---多表查询和联合查询
|
6天前
|
JavaScript 前端开发 API
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查
node+vue3+mysql前后分离开发范式——实现对数据库表的增删改查
38 1