MySQL语言二-DML和DQL

本文介绍了MySQL中DML(数据操纵语言)的插入、更新和删除操作,以及DQL(数据查询语言)的简单和复杂查询,包括条件查询、排序和通配符使用。通过实例演示了如何在实际场景中运用这些SQL语句进行数据管理和查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、DML

在MySQL管理软件中,DDL已经定义了数据库结构,那么如何对其中的数据进行管理呢?可以通过SQL语句中的DML语言来实现数据的操作,包括使用INSERT实现数据的插入、DELETE实现数据的删除,UPDATE实现数据的更新等。

1.1 插入数据INSERT

1.1.1 完整插入

INSERT INTO 表名 VALUES (值1,值2,值3…值n);

1.1.2 部分插入

INSERT INTO 表名(列名,列名)  VALUES (值1,值2); 

insert into t2(name) values ("lisi");

1.2 更新数据UPDATE

UPDATE   表名   SET   列名=值   WHERE   CONDITION;

  •  准备一张表并插入一些数据。
create table t6(id int, name varchar(20));
insert into t6 values (1,'aa');
insert into t6 values (2,'bb');
  •  需求:把bb改成cc
update   t6   set   name='cc' where id=2;

  • 可以使用update修改管理员的root账户的密码
    update mysql.user set authentication_string=password("Aa.654321") where user="root";

1.3 删除数据DELETE

DELETE   FROM    表名   WHERE   CONDITION;

delete from t6 where id=2;    #删除id为2的用户数据
delete from t6;              #删除表6的全部数据

二、DQL

在MySQL管理软件中,可以通过SQL语句中的DQL语言来实现数据的SELECT查询操作

2.1 环境准备

  • 环境1

准备一张表,包含三列信息id  int  序号,name  varchar  姓名,age int  年龄,再插入测试数据。

create   table   t3   (id   int,name   varchar(20),age  int);
insert   into   t3   values  (1,"zhangsan",23);
insert   into   t3   values  (2,"lisi",24);
insert   into   t3   values  (3,"wangwu",18);
  •  环境2

create database company;
CREATE TABLE company.employee5(id int primary key AUTO_INCREMENT not null,name varchar(30) not null,sex enum('male','female') default 'male' not null,hire_date date not null,post varchar(50) not null,job_description varchar(100),salary double(15,2) not null,office int,     dep_id int);
desc employee5;
  •  employee5表结构如下:
  •  插入数据
mysql> insert into company.employee5(name,sex,hire_date,post,job_description,salary,office,dep_id) values 
('jack','male','20180202','instructor','teach',5000,501,100),
('tom','male','20180203','instructor','teach',5500,501,100),
('robin','male','20180202','instructor','teach',8000,501,100),
('alice','female','20180202','instructor','teach',7200,501,100),
('aofa','male','20180202','hr','hrcc',600,502,101),
('harry','male','20180202','hr',NULL,6000,502,101),
('emma','female','20180206','sale','salecc',20000,503,102),
('christine','female','20180205','sale','salecc',2200,503,102),
('zhuzhu','male','20180205','sale',NULL,2200,503,102),
('gougou','male','20180205','sale','',2200,503,102);

 图示如下

2.2 简单查询

查看所有列:

SELECT    *    FROM   表名;        #在目标库里面使用
SELECT    *    FROM   库名.表名;    #不在目标库里面使用

查部分列:

SELECT   列1,列2,列3    FROM     表名;

查询支持四则运算,加减乘除

例如查看年薪:    SELECT name, salary, salary*12 FROM employee5;

2.3 条件查询

  • 单条件查询where

查询hr部门的员工姓名

SELECT name,post  FROM employee5 WHERE post='hr';

  • 多条件查询AND/OR

查询hr部门的员工姓名,并且工资大于1000

SELECT name,salary 	FROM employee5	WHERE post='hr' AND salary>1000;

 

查询所有部门的员工姓名,并且工资是6000或者8000的员工 

SELECT name, salary FROM employee5 	WHERE salary=6000 OR salary=8000;

 

  •  关键字BETWEEN AND 在什么之间

薪资在5000到15000的员工

SELECT name,salary FROM employee5 WHERE salary BETWEEN 5000 AND 15000;

 

不在5000~15000呢?请使用NOT

SELECT name,salary FROM employee5 	WHERE salary NOT BETWEEN 5000 AND 15000;

 

  • 关键字IN集合查询

工资可能是4000,也可能是5000,还有可能是9000,怎么查?

SELECT name, salary FROM employee5 WHERE salary=4000 OR salary=5000 OR salary=6000 OR salary=9000 ;

工资是4000,5000,6000,9000:

SELECT name, salary FROM employee5  WHERE salary IN (4000,5000,6000,9000) ;

工资不是4000,5000,6000,9000:
SELECT name, salary FROM employee WHERE salary NOT IN (4000,5000,6000,9000) ;

  • 关键字IS NULL

没有岗位描述的

空:

SELECT name,job_description FROM employee5  WHERE job_description IS NULL;

非空:

SELECT name,job_description FROM employee5  WHERE job_description IS NOT NULL;

错误示范:

SELECT name,job_description FROM employee5  WHERE job_description='';

 报错信息:

  • 关键字LIKE模糊查询

好像有个员工姓阿

SELECT * FROM employee5 WHERE name LIKE 'a%';    #通配符’%’代表多个任意字符
SELECT * FROM employee5 WHERE name LIKE 'a___'; #通配符’_’代表1个任意字符

 四个“_”

 三个“_”

2.4查询排序

以工资升序排列

SELECT    *     FROM     表名   ORDER       BY     工资的列名     ASC;

以工资降序排列

SELECT    *     FROM     表名   ORDER BY    工资的列名     DESC;

工资最高的前五名

SELECT * FROM employee5 ORDER BY salary DESC LIMIT  5;      

写在最后,文章中的不足之处还请大神指出

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值