开源数据库MySQL 运维实战 第3章 SQL2

目录

 

DML

一、插入数据INSERT

二、更新数据UPDATE

三、删除数据DELETE

DQL

MySQL查询

准备环境

素材2


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');

开源数据库MySQL 运维实战 第3章 SQL2

更新数据:需求:把bb改成cc

mysql> update t2 set name='cc' where id=2;
查询结果:mysql> select * from t2;

开源数据库MySQL 运维实战 第3章 SQL2

示例2

修改mysql数据库管理员root账户的密码。

mysql> update mysql.user set authentication_string=password("[email protected]") where user="root";

三、删除数据DELETE

语法:DELETE   FROM    表名   WHERE   CONDITION;

示例:需求:删除id为2 的用户记录。

mysql> delete from t2 where id=2;
查询结果:mysql> select * from t2;

开源数据库MySQL 运维实战 第3章 SQL2

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);

开源数据库MySQL 运维实战 第3章 SQL2

素材2

部署出如图所示的数据库

开源数据库MySQL 运维实战 第3章 SQL2

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 运维实战 第3章 SQL2

插入信息: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;

开源数据库MySQL 运维实战 第3章 SQL2

 

查部分列:SELECT   列1,列2,列3    FROM     表名;

开源数据库MySQL 运维实战 第3章 SQL2

只查看名字和工资。通过四则运算查询看一看年薪:   

SELECT name, salary, salary*14 FROM employee5;

开源数据库MySQL 运维实战 第3章 SQL2

二、条件查询

单条件查询where 

查询hr部门的员工姓名

mysql> select name, post  from employee5 where post='hr';
开源数据库MySQL 运维实战 第3章 SQL2

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

mysql> select name, salary  from employee5 where post='hr' and salary>1000;

开源数据库MySQL 运维实战 第3章 SQL2

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

mysql> select name, salary  from employee5 where salary=6000 or salary=8000;

开源数据库MySQL 运维实战 第3章 SQL2

关键字BETWEEN AND 在什么之间

需求:查一查薪资在5000到15000

mysql> select name, salary  from employee5 where salary  between 5000 and 15000;
开源数据库MySQL 运维实战 第3章 SQL2
 

需求:不在5000~15000呢?请使用NOT

mysql> select name, salary  from employee5 where salary not  between 5000 and 15000

开源数据库MySQL 运维实战 第3章 SQL2

关键字IN集合查询

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

mysql> select name, salary from employee5 where salary in(4000,5000,6000);
开源数据库MySQL 运维实战 第3章 SQL2

关键字IS NULL

查看有空(null)的信息:SELECT name,job_description FROM employee5 
    WHERE job_description IS NULL;

开源数据库MySQL 运维实战 第3章 SQL2

非空:mysql> select name, job_description from employee5 where job_description  is not null;

开源数据库MySQL 运维实战 第3章 SQL2

关键字LIKE模糊查询

好像有个员工姓阿a

SELECT * FROM employee5 
    WHERE name LIKE 'a%';

开源数据库MySQL 运维实战 第3章 SQL2

通配符’%’代表多个任意字符

SELECT * FROM employee5   WHERE name LIKE 'al___';
  通配符’_’代表1个任意字符

三、查询排序

例如以工资升序排列:SELECT    *     FROM     表名   ORDER       BY     工资的列名     ASC;

mysql> select  name, salary from employee5 order by salary asc;
开源数据库MySQL 运维实战 第3章 SQL2

 

例如以工资降序排列 :SELECT    *     FROM     表名   ORDER BY    工资的列名     DESC;
   mysql> select  name, salary from employee5 order by salary desc;
开源数据库MySQL 运维实战 第3章 SQL2

工资最高的前五名:SELECT * FROM employee5 ORDER BY salary DESC 
LIMIT  5;      

开源数据库MySQL 运维实战 第3章 SQL2