目录
DML
目的
在MySQL管理软件中,DDL已经定义了数据库结构。
那么如何对其中的数据进行管理呢?
INSERT 实现数据的 插入
可以通过SQL语句中的DML语言来实现数据的操作,包括使用:DELETE 实现数据的 删除
UPDATE 实现数据的 更新。
一、插入数据INSERT
完整插入
语法:INSERT INTO 表名 VALUES (值1,值2,值3…值n);
部分插入
语法:INSERT INTO 表名(列名,列名) VALUES (值1,值2);
二、更新数据UPDATE
语法: UPDATE 表名 SET 列名=值 WHERE CONDITION;
示例1
准备一张表:mysql> create table t2(id int, name varchar(20));
插入信息:
mysql> insert into t2 values(1.'aa');
mysql> insert into t2 values(2,'bb');
更新数据:需求:把bb改成cc
mysql> update t2 set name='cc' where id=2;
查询结果:mysql> select * from t2;
示例2
修改mysql数据库管理员root账户的密码。
mysql> update mysql.user set authentication_string=password("QianFeng@123456") where user="root";
三、删除数据DELETE
语法:DELETE FROM 表名 WHERE CONDITION;
示例:需求:删除id为2 的用户记录。
mysql> delete from t2 where id=2;
查询结果:mysql> select * from t2;
DQL
目的
在MySQL管理软件中,可以通过SQL语句中的DQL语言来实现数据的
MySQL查询
准备环境
素材1
准备一张表,包含三列信息
id int 序号 name varchar 姓名 age int 年龄
示例 :mysql> create table t5(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 employee5;
查部分列:SELECT 列1,列2,列3 FROM 表名;
只查看名字和工资。通过四则运算查询看一看年薪:
SELECT name, salary, salary*14 FROM employee5;
二、条件查询
单条件查询where
查询hr部门的员工姓名
mysql> select name, post from employee5 where post='hr';
查询hr部门的员工姓名,并且工资大于1000
mysql> select name, salary from employee5 where post='hr' and salary>1000;
查询所有部门的员工姓名,并且工资是6000或者8000的员工
mysql> select name, salary from employee5 where salary=6000 or salary=8000;
关键字BETWEEN AND 在什么之间
需求:查一查薪资在5000到15000
mysql> select name, salary from employee5 where salary between 5000 and 15000;
需求:不在5000~15000呢?请使用NOT
mysql> select name, salary from employee5 where salary not between 5000 and 15000
关键字IN集合查询
工资可能是4000,也可能是5000,还有可能是6000,怎么查
mysql> select name, salary from employee5 where salary in(4000,5000,6000);
关键字IS NULL
查看有空(null)的信息:SELECT name,job_description FROM employee5
WHERE job_description IS NULL;
非空:mysql> select name, job_description from employee5 where job_description is not null;
关键字LIKE模糊查询
好像有个员工姓阿a
SELECT * FROM employee5
WHERE name LIKE 'a%';
通配符’%’代表多个任意字符
SELECT * FROM employee5 WHERE name LIKE 'al___';
通配符’_’代表1个任意字符
三、查询排序
例如以工资升序排列:SELECT * FROM 表名 ORDER BY 工资的列名 ASC;
mysql> select name, salary from employee5 order by salary asc;
例如以工资降序排列 :SELECT * FROM 表名 ORDER BY 工资的列名 DESC;
mysql> select name, salary from employee5 order by salary desc;
工资最高的前五名:SELECT * FROM employee5 ORDER BY salary DESC
LIMIT 5;