服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL筑基篇之增删改查操作详解

MySQL筑基篇之增删改查操作详解

2022-07-29 11:36微凉秋意 Mysql

这篇文章主要和大家讲解一下MySQL数据库的增删改查操作,这里的查询确切的说应该是初级的查询,不涉及函数、分组等模块,需要的可以参考一下

一、增加表中数据

1、无自增列时

1.指定字段添加数据

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

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

2.默认添加数据

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

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

2、有自增列时

1.对于指定字段的添加

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

2.对于默认情况的添加

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

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

自增列设置方法:

?
1
2
3
4
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、简单查询

1.查询所有列

select * from 表名

2.查询部分列

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

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

弊端:书写繁琐

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

3.别名

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

as关键字可省

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

表名也可以起别名

别名使用示例:

?
1
2
SELECT employee_id as 员工编号,salary as 工资 from employees
SELECT employee_id 员工编号,salary 工资,first_name,last_name from employees e

4.数学运算

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

5.去重

select distinct 列名 from 表名

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

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

6.case when

?
1
2
3
4
5
6
7
8
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 低级,其他 底层

?
1
2
3
4
5
6
7
8
select employee_id,salary,
       case
           when salary>10000 then '高薪'
           when salary>8000 then '中级'
           when salary>5000 then '低级'
           else '底层'
       end as '薪资等级'
   from employees

7.查询表详情

describe 表名

describe可以简写成desc:

desc 表名

2、条件查询

语法:

select 列名 from 表名 where 条件

1.单条件查询

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

?
1
SELECT * from employees where salary>10000

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

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

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

?
1
select * from employees where first_name='STEVEN'

区分大小写:

?
1
select * from employees where binary first_name='STEVEN'

2.多条件查询

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

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

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

3.区间查询

在区间内

between 最小值 and 最大值

不在范围内

not between 最小值 and 最大值

4.枚举查询

在列举范围内

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

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

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

等价于:

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

不在列举范围内

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

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

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

5.空值查询

为空时

列名 is null

不为空时

列名 is not null

查询commission_pct为null的员工信息

?
1
select * from employees where commission_pct is null

查询commission_pct不为null的员工信息

?
1
select * from employees where commission_pct is not null

6.模糊查询

语法:

where 列名 like '值'

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

_:代表一个长度

示例:

查询first_name中包含s的员工信息

?
1
select * from employees where first_name like '%s%'

查询firstname中以s开头的员工信息

?
1
select * from employees where first_name like 's%'

查询firstname中以s结尾的员工信息

?
1
select * from employees where first_name like '%s'

查询firstname中第二个字母为s的员工信息

?
1
select * from employees where first_name like '_s%'

3、排序

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

1、单列排序

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

示例:

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

?
1
select * from employees order by salary desc

根据工资从低到高

?
1
2
select * from employees order by salary asc
select * from employees order by salary

tips: 默认为升序排列

2、多列排序

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

示例:

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

?
1
select * from employees order by salary asc,employee_id desc

3、where+order by

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

示例:

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

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

到此这篇关于MySQL筑基篇之增删改查操作详解的文章就介绍到这了,更多相关MySQL增删改查内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_58618795/article/details/126011417

延伸 · 阅读

精彩推荐
  • MysqlMySQL数据库 JDBC 编程(Java 连接 MySQL)

    MySQL数据库 JDBC 编程(Java 连接 MySQL)

    这篇文章主要介绍了MySQL数据库 JDBC 编程Java 连接 MySQL,在 Java 中,这样的封装就是由 Java 标准库来完成的,封装出了一套统一的数据库 API 称为 JDBC,下面来看...

    吞吞吐吐大魔王7812022-01-22
  • MysqlMysql常用sql语句汇总

    Mysql常用sql语句汇总

    这篇文章主要介绍了Mysql常用sql语句汇总的相关资料,需要的朋友可以参考下...

    水灵儿3092020-08-14
  • Mysql解决seata不能使用mysql8版本的问题方法

    解决seata不能使用mysql8版本的问题方法

    这篇文章主要介绍了解决seata不能使用mysql8版本的问题方法,文中通过示例和图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    虚心低调的tom8702021-03-18
  • MysqlNavicat for MySQL 乱码问题解决方法

    Navicat for MySQL 乱码问题解决方法

    这篇文章主要介绍了Navicat for MySQL 乱码问题解决方法,Navcat是Windows常用的Mysql管理软件,本文讲解它出现乱码的解决方法,需要的朋友可以参考下...

    MYSQL教程网8632021-10-21
  • Mysqlredhat7通过yum安装mysql5.7.17教程

    redhat7通过yum安装mysql5.7.17教程

    这篇文章主要为大家详细介绍了redhat7通过yum安装mysql5.7.17教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 ...

    路飞_luffy2752020-07-12
  • MysqlMySQL数据库触发器从小白到精通

    MySQL数据库触发器从小白到精通

    触发器是SQLserver提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启...

    桃花键神4152022-03-09
  • Mysql关于case when语句的报错问题详解

    关于case when语句的报错问题详解

    SQL CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句,下面这篇文章主要给大家介绍了关于case when语句的报错问题的相关资料,文中通...

    一直是小学生6772019-06-29
  • MysqlMySQL控制流函数(-if ,elseif,else,case...when)

    MySQL控制流函数(-if ,elseif,else,case...when)

    这篇文章主要介绍了MySQL控制流函数(-if ,elseif,else,case...when),文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下...

    王小王_123​​​​​​​5702022-07-07