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

目录

一 DML

目的:

1.插入数据INSERT

2.更新数据UPDATE ​

DQL    数据库查询语句

目的:

MySQL查询

==准备环境==

==简单查询==

==条件查询==

==查询排序==


一 DML

目的:

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

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

可以通过SQL语句中的DML语言来实现数据的操作,包括使用
    INSERTinsert)    实现数据的    插入
    DELETEdelete)    实现数据的    删除
    UPDATEupdate)    实现数据的    更新。

1.插入数据INSERT

==完整插入==

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

==部分插入==

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

2.更新数据UPDATE

  更改里面的信息

语法:update   表名   set   列名=值   where  condition;

==例1==

 1.准备一张表  s6

mysql> create   table   s6(id int , name varchar(20));

 

  插入数据

mysql> insert into t6 values (1,'aa');

mysql> insert into t6 values (2,'bb');

  开源数据库MySQL DBA 运维实战—第3章—SQL2_第1张图片

 2.更改数据

 需求:把bb改成c

mysql> update   t6   set   name='c' where id=2;

 mysql> select * from t6;

开源数据库MySQL DBA 运维实战—第3章—SQL2_第2张图片

==示例2==

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

mysql> update  mysql.user  set authentication_string=password("QianFeng@123456") where user="root";

DQL    数据库查询语句

目的:

在MySQL管理软件中,可以通过SQL语句中的DQL语言来实现数据的
    SELECT(select) 查询操作
    互联网用户查询余额,查询装备,查询商品的操作。

MySQL查询

==准备环境==

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

  开源数据库MySQL DBA 运维实战—第3章—SQL2_第3张图片

2.素材2

 表结构

 开源数据库MySQL DBA 运维实战—第3章—SQL2_第4张图片

结构语句:

mysql> create database company;        //创建库

mysql> CREATE TABLE company.employee5(            //在库里创建表
    id int primary key AUTO_INCREMENT not null,          //添加列 :序号,整数型 ,主键,递增,不能为空值
    name varchar(30) not null,            //添加列 :名字,字符长度30 ,不能为空  
    sex enum('male','female') default 'male' not null,         //添加列:性别,单选(‘男’,‘女’),默认‘男’  ,不能为空
    hire_date date not null,      //添加列:雇用时期,日期,不能为空
    post varchar(50) not null,       //添加列:职务,字符长(50),不能为空
    job_description varchar(100),      //添加列:职位描述,字符长(100)
    salary double(15,2) not null,       //添加列:小数类型(15位数,两位小数),
    office int,       //添加列: 办公室  整数类型
    dep_id int      //添加类:部门编号,类型整数
    );

查看表结构

mysql> desc employee5;    

  开源数据库MySQL DBA 运维实战—第3章—SQL2_第5张图片

插入数据:

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

开源数据库MySQL DBA 运维实战—第3章—SQL2_第6张图片

==简单查询==

1.查看所有列:

前提是需要进入数据库。
不进入数据库,就请输入库名。eg: a1.b1   //库名.表名

SELECT    *    FROM   表名;

2.查看部分

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

3.通过四则运算查询

 看一看年薪

SELECT name, salary, salary*14 FROM employee5;

==条件查询==

  开源数据库MySQL DBA 运维实战—第3章—SQL2_第7张图片

1.单条件查询where
  查询hr部门的员工姓名

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

 开源数据库MySQL DBA 运维实战—第3章—SQL2_第8张图片

2.多条件查询AND/OR==
    查询hr部门的员工姓名,并且工资大于1000   // 两者都满足

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

开源数据库MySQL DBA 运维实战—第3章—SQL2_第9张图片
    查询所有部门的员工姓名,并且工资是6000或者8000的员工

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

开源数据库MySQL DBA 运维实战—第3章—SQL2_第10张图片

3.关键字BETWEEN AND 在什么之间==
    需求:查一查薪资在5000到15000

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

开源数据库MySQL DBA 运维实战—第3章—SQL2_第11张图片
    需求:不在5000~15000呢?请使用NOT

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

    开源数据库MySQL DBA 运维实战—第3章—SQL2_第12张图片

4.关键字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) ;

开源数据库MySQL DBA 运维实战—第3章—SQL2_第13张图片
 不是什么什么

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

5.关键字IS NULL==
    没有岗位描述的
        空

SELECT name,job_description FROM employee5  WHERE job_description IS NULL;

开源数据库MySQL DBA 运维实战—第3章—SQL2_第14张图片
    非空

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

    错误示范,空格''
SELECT name,job_description FROM employee5 
    WHERE job_description='';

6.关键字LIKE模糊查询==
  好像有个员工姓阿

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

   开源数据库MySQL DBA 运维实战—第3章—SQL2_第15张图片

      通配符’%’代表多个任意字符
      注意不是shell的"*"星号。mysql使用"%"
 好像有个员工姓阿

SELECT * FROM employee5   WHERE name LIKE 'al___';

  
            注意不是shell的“?”问号。mysql使用"_"下划线
            通配符一个’_’ 代表1个任意字符

==查询排序==

1.例如以工资升序排列   ASC(默认)

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

  开源数据库MySQL DBA 运维实战—第3章—SQL2_第16张图片

2.例如以工资降序排列

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

开源数据库MySQL DBA 运维实战—第3章—SQL2_第17张图片

3.工资最高的前五名  disc limit

SELECT * FROM employee5 ORDER BY salary DESC LIMIT  5;    

 开源数据库MySQL DBA 运维实战—第3章—SQL2_第18张图片
        //默认初始位置为0 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(linux,mysql)