一、DML

目的:

在MySQL管理软件中,DDL已经定义了数据库结构。

那么如何对其中的数据进行管理呢?

可以通过SQL语句中的DML语言来实现数据的操作,包括使用

INSERT 实现数据的 插入

DELETE 实现数据的 删除

UPDATE 实现数据的 更新。

1、插入数据INSERT

完整插入

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

操作

db2怎样update_db2怎样update

db2怎样update_mysql_02


部分插入

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

操作

db2怎样update_表名_03


db2怎样update_db2怎样update_04


2、更新数据UPDATE

语法 : UPDATE 表名 SET 列名=值 WHERE CONDITION;

准备一张表
 mysql> create table t6(id int, name varchar(20));
 mysql> insert into t6 values (1,‘aa’);
 mysql> insert into t6 values (2,‘bb’);
 更新数据
 需求:把bb改成cc
 mysql> update t6 set name=‘cc’ where id=2;
 查询结果
 mysql> select * from t6;
 3、删除数据DELETE
 语法:DELETE FROM 表名 WHERE CONDITION;
 示例:
 需求:删除id为2 的用户记录。
 mysql> delete from t6 where id=2;

二、DQL

目的:在MySQL管理软件中,可以通过SQL语句中的DQL语言来实现数据的

SELECT 查询操作

互联网用户查询余额,查询装备,查询商品的操作。

MySQL查询

准备环境

素材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

表结构

请将该页置于桌面

company 公司
		department 部门
		employee 员工
结构语句
	mysql> create database company;
	mysql> 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;

请将该页内容置于桌面。

插入数据
	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);
 简单查询:
 简单查询
 查看所有列
 前提是需要进入数据库。
 不进入数据库,就请输入库名。
 SELECT * FROM 表名;
 查部分列
 SELECT 列1,列2,列3 FROM 表名;
 通过四则运算查询
 看一看年薪
 SELECT name, salary, salary14 FROM employee5;
 二、条件查询
 单条件查询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
 OR
 AND
 关键字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;
 BETWEEN 5000 AND 15000
 关键字IN集合查询
 工资可能是4000,也可能是5000,还有可能是9000,怎么查
 OR可以组合多条件,效率如何?
 SELECT name, salary FROM employee5
 WHERE salary=4000 OR salary=5000 OR salary=6000 OR salary=9000 ;
 优化
 是什么什么
 SELECT name, salary FROM employee5
 WHERE salary IN (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 ‘al%’;
 通配符’%’代表多个任意字符
 注意不是shell的"“星号。mysql使用”%"
 好像有个员工姓阿
 SELECT * FROM employee5
 WHERE name LIKE ‘al___’;
 注意不是shell的“?”问号。mysql使用""下划线
 通配符’’代表1个任意字符
 3、查询排序
 例如以工资升序排列
 SELECT * FROM 表名 ORDER BY 工资的列名 ASC;
 例如以工资降序排列
 SELECT * FROM 表名 ORDER BY 工资的列名 DESC;
 工资最高的前五名
 SELECT * FROM employee5 ORDER BY salary DESC
 LIMIT 5; 
 //默认初始位置为0