跟着老杜学习MySQL--day1(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 跟着老杜学习MySQL--day1(上)

1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?


   数据库:

       英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。

       顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了

       具有特定格式的数据。

   数据库管理系统:

       DataBaseManagement,简称DBMS。

       数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以

       对数据库当中的数据进行增删改查。

       常见的数据库管理系统:

           MySQL、Oracle、MS SqlServer、DB2、sybase等....

   SQL:结构化查询语言

       程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL

       语句,最终来完成数据库中数据的增删改查操作。

       SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用,

       同时在Oracle中也可以使用,在DB2中也可以使用。

   三者之间的关系?

       DBMS--执行--> SQL --操作--> DB

 

   先安装数据库管理系统MySQL,然后学习SQL语句怎么写,编写SQL语句之后,DBMS

   对SQL语句进行执行,最终来完成数据库的数据管理。

2、安装MySQL数据库管理系统。

 第一步:先安装,选择“经典版”

   第二步:需要进行MySQL数据库实例配置。


   注意:一路下一步就行了!!!!!


   需要注意的事项?

       端口号:

           端口号port是任何一个软件/应用都会有的,端口号是应用的唯一代表。

           端口号通常和IP地址在一块,IP地址用来定位计算机的,端口号port

           是用来定位计算机上某个服务的/某个应用的!

           在同一台计算机上,端口号不能重复。具有唯一性。


           mysql数据库启动的时候,这个服务占有的默认端口号是3306

           这是大家都知道的事儿。记住。

     

       字符编码方式?

           设置mysql数据库的字符编码方式为 UTF8

           一定要注意:先选中第3个单选按钮,然后再选择utf8字符集。

     

       服务名称?

           默认是:MySQL

           不用改。

     

       选择配置环境变量path:

           如果没有选择怎么办?你可以手动配置

           path=其它路径;C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin

     

       mysql超级管理员用户名不能改,一定是:root

       你需要设置mysql数据库超级管理员的密码。

       我们设置为123456


       设置密码的同时,可以激活root账户远程访问。

       激活:表示root账号可以在外地登录。

       不激活:表示root账号只能在本机上使用。

       我这里选择激活了!


3、MySQL数据库的完美卸载!


   第一步:双击安装包进行卸载删除。

   第二步:删除目录:

       把C:\ProgramData下面的MySQL目录干掉。

       把C:\Program Files (x86)下面的MySQL目录干掉。


   这样就卸载结束了!

4、看一下计算机上的服务,找一找MySQL的服务在哪里?

   计算机-->右键-->管理-->服务和应用程序-->服务-->找mysql服务

   MySQL的服务,默认是“启动”的状态,只有启动了mysql才能用。

   默认情况下是“自动”启动,自动启动表示下一次重启操作系统的时候

   自动启动该服务。


   可以在服务上点击右键:

       启动

       重启服务

       停止服务

       ...

 

   还可以改变服务的默认配置:

       服务上点击右键,属性,然后可以选择启动方式:

           自动(延迟启动)

           自动

           手动

           禁用

5、在windows操作系统当中,怎么使用命令来启动和关闭mysql服务呢?

  语法:

       net stop 服务名称;

       net start 服务名称;

   其它服务的启停都可以采用以上的命令。

6、mysql安装了,服务启动了,怎么使用客户端登录mysql数据库呢?

   使用bin目录下的mysql.exe命令来连接mysql数据库服务器

 本地登录(显示编写密码的形式):

       C:\Users\Administrator>mysql -uroot -p123456

       Welcome to the MySQL monitor.  Commands end with ; or \g.

       Your MySQL connection id is 1

       Server version: 5.5.36 MySQL Community Server (GPL)


       Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.


       Oracle is a registered trademark of Oracle Corporation and/or its

       affiliates. Other names may be trademarks of their respective

       owners.


       Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


       mysql>

 

   本地登录(隐藏密码的形式):

       C:\Users\Administrator>mysql -uroot -p

       Enter password: ******

       Welcome to the MySQL monitor.  Commands end with ; or \g.

       Your MySQL connection id is 2

       Server version: 5.5.36 MySQL Community Server (GPL)


       Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.


       Oracle is a registered trademark of Oracle Corporation and/or its

       affiliates. Other names may be trademarks of their respective

       owners.


       Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


       mysql>

7、mysql常用命令:

退出mysql :exit


   查看mysql中有哪些数据库?

       show databases;

       注意:以分号结尾,分号是英文的分号。

 

   mysql> show databases;

   +--------------------+

   | Database           |

   +--------------------+

   | information_schema |

   | mysql              |

   | performance_schema |

   | test               |

   +--------------------+

   mysql默认自带了4个数据库。


   怎么选择使用某个数据库呢?

       mysql> use test;

       Database changed

       表示正在使用一个名字叫做test的数据库。

 

   怎么创建数据库呢?

       mysql> create database bjpowernode;

       Query OK, 1 row affected (0.00 sec)


       mysql> show databases;

       +--------------------+

       | Database           |

       +--------------------+

       | information_schema |

       | bjpowernode        |

       | mysql              |

       | performance_schema |

       | test               |

       +--------------------+

 

   查看某个数据库下有哪些表?

       mysql> show tables;

 

   注意:以上的命令不区分大小写,都行。


   查看mysql数据库的版本号:

   mysql> select version();

       +-----------+

       | version() |

       +-----------+

       | 5.5.36    |

       +-----------+

 

   查看当前使用的是哪个数据库?

   mysql> select database();

   +-------------+

   | database()  |

   +-------------+

   | bjpowernode |

   +-------------+

 

   mysql> show

   -> databases

   -> ;

   +--------------------+

   | Database           |

   +--------------------+

   | information_schema |

   | bjpowernode        |

   | mysql              |

   | performance_schema |

   | test               |

   +--------------------+


   注意:mysql是不见“;”不执行,“;”表示结束!


   mysql> show

   ->

   ->

   ->

   ->

   ->

   ->

   ->

   ->

   -> \c

   mysql>

   \c用来终止一条命令的输入。

8、数据库当中最基本的单元是表:table

什么是表table?为什么用表来存储数据呢?


       姓名    性别    年龄(列:字段)

       ---------------------------

       张三    男            20            ------->行(记录)

       李四    女            21            ------->行(记录)

       王五    男            22            ------->行(记录)

 

   数据库当中是以表格的形式表示数据的。

   因为表比较直观。


   任何一张表都有行和列:

       行(row):被称为数据/记录。

       列(column):被称为字段。

 

   姓名字段、性别字段、年龄字段。


   了解一下:

       每一个字段都有:字段名、数据类型、约束等属性。

       字段名可以理解,是一个普通的名字,见名知意就行。

       数据类型:字符串,数字,日期等,后期讲。


       约束:约束也有很多,其中一个叫做唯一性约束,

           这种约束添加之后,该字段中的数据不能重复。

9、关于SQL语句的分类?

  SQL语句有很多,最好进行分门别类,这样更容易记忆。

       分为:

           DQL:

               数据查询语言(凡是带有select关键字的都是查询语句)

               select...


           DML:

               数据操作语言(凡是对表当中的数据进行增删改的都是DML)

               insert delete update

               insert 增

               delete 删

               update 改


               这个主要是操作表中的数据data。


           DDL:

               数据定义语言

               凡是带有create、drop、alter的都是DDL。

               DDL主要操作的是表的结构。不是表中的数据。

               create:新建,等同于增

               drop:删除

               alter:修改

               这个增删改和DML不同,这个主要是对表结构进行操作。


           TCL:

               不是王牌电视。

               是事务控制语言

               包括:

                   事务提交:commit;

                   事务回滚:rollback;


           DCL:

               是数据控制语言。

               例如:授权grant、撤销权限revoke....

10、导入一下提前准备好的数据:

   bjpowernode.sql 这个文件中是我提前为大家练习准备的数据库表。

   怎么将sql文件中的数据导入呢?

       mysql> source D:\course\03-MySQL\document\bjpowernode.sql


       注意:路径中不要有中文!!!!

11、关于导入的这几张表?

  mysql> show tables;
    +-----------------------+
    | Tables_in_bjpowernode |
    +-----------------------+
    | dept                  |
    | emp                   |
    | salgrade              |
    +-----------------------+

   dept是部门表

   emp是员工表

   salgrade 是工资等级表

   怎么查看表中的数据呢?

       select * from 表名; //统一执行这个SQL语句。  

  mysql> select * from emp; // 从emp表查询所有数据。
    +-------+--------+-----------+------+------------+---------+---------+--------+
    | EMPNO | ENAME  | JOB       | MGR  | HIREDATE   | SAL     | COMM    | DEPTNO |
    +-------+--------+-----------+------+------------+---------+---------+--------+
    |  7369 | SMITH  | CLERK     | 7902 | 1980-12-17 |  800.00 |    NULL |     20 |
    |  7499 | ALLEN  | SALESMAN  | 7698 | 1981-02-20 | 1600.00 |  300.00 |     30 |
    |  7521 | WARD   | SALESMAN  | 7698 | 1981-02-22 | 1250.00 |  500.00 |     30 |
    |  7566 | JONES  | MANAGER   | 7839 | 1981-04-02 | 2975.00 |    NULL |     20 |
    |  7654 | MARTIN | SALESMAN  | 7698 | 1981-09-28 | 1250.00 | 1400.00 |     30 |
    |  7698 | BLAKE  | MANAGER   | 7839 | 1981-05-01 | 2850.00 |    NULL |     30 |
    |  7782 | CLARK  | MANAGER   | 7839 | 1981-06-09 | 2450.00 |    NULL |     10 |
    |  7788 | SCOTT  | ANALYST   | 7566 | 1987-04-19 | 3000.00 |    NULL |     20 |
    |  7839 | KING   | PRESIDENT | NULL | 1981-11-17 | 5000.00 |    NULL |     10 |
    |  7844 | TURNER | SALESMAN  | 7698 | 1981-09-08 | 1500.00 |    0.00 |     30 |
    |  7876 | ADAMS  | CLERK     | 7788 | 1987-05-23 | 1100.00 |    NULL |     20 |
    |  7900 | JAMES  | CLERK     | 7698 | 1981-12-03 |  950.00 |    NULL |     30 |
    |  7902 | FORD   | ANALYST   | 7566 | 1981-12-03 | 3000.00 |    NULL |     20 |
    |  7934 | MILLER | CLERK     | 7782 | 1982-01-23 | 1300.00 |    NULL |     10 |
    +-------+--------+-----------+------+------------+---------+---------+--------+
    mysql> select * from dept;
    +--------+------------+----------+
    | DEPTNO | DNAME      | LOC      |
    +--------+------------+----------+
    |     10 | ACCOUNTING | NEW YORK |
    |     20 | RESEARCH   | DALLAS   |
    |     30 | SALES      | CHICAGO  |
    |     40 | OPERATIONS | BOSTON   |
    +--------+------------+----------+
    mysql> select * from salgrade;
    +-------+-------+-------+
    | GRADE | LOSAL | HISAL |
    +-------+-------+-------+
    |     1 |   700 |  1200 |
    |     2 |  1201 |  1400 |
    |     3 |  1401 |  2000 |
    |     4 |  2001 |  3000 |
    |     5 |  3001 |  9999 |
    +-------+-------+-------+

12、不看表中的数据,只看表的结构,有一个命令:

  格式: desc 表名;

mysql> desc dept;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| DEPTNO | int(2)      | NO   | PRI | NULL    |       |部门编号
| DNAME  | varchar(14) | YES  |     | NULL    |       |部门名字
| LOC    | varchar(13) | YES  |     | NULL    |       |地理位置
+--------+-------------+------+-----+---------+-------+
mysql> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| EMPNO    | int(4)      | NO   | PRI | NULL    |       |员工编号
| ENAME    | varchar(10) | YES  |     | NULL    |       |员工姓名
| JOB      | varchar(9)  | YES  |     | NULL    |       |工作岗位
| MGR      | int(4)      | YES  |     | NULL    |       |上级编号
| HIREDATE | date        | YES  |     | NULL    |       |入职日期
| SAL      | double(7,2) | YES  |     | NULL    |       |工资
| COMM     | double(7,2) | YES  |     | NULL    |       |补助
| DEPTNO   | int(2)      | YES  |     | NULL    |       |部门编号
+----------+-------------+------+-----+---------+-------+
mysql> desc salgrade;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| GRADE | int(11) | YES  |     | NULL    |       |工资等级
| LOSAL | int(11) | YES  |     | NULL    |       |最低工资
| HISAL | int(11) | YES  |     | NULL    |       |最高工资
+-------+---------+------+-----+---------+-------+

describe缩写为:desc

mysql> describe dept;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| DEPTNO | int(2)      | NO   | PRI | NULL    |       |
| DNAME  | varchar(14) | YES  |     | NULL    |       |
| LOC    | varchar(13) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

13、简单查询

   13.1、查询一个字段?

       select 字段名 from 表名;

       其中要注意:

           select和from都是关键字。

           字段名和表名都是标识符。

     

       强调:

           对于SQL语句来说,是通用的,

           所有的SQL语句以“;”结尾。

           另外SQL语句不区分大小写,都行。

     

       查询部门名字?

   mysql> select dname from dept;
            +------------+
            | dname      |
            +------------+
            | ACCOUNTING |
            | RESEARCH   |
            | SALES      |
            | OPERATIONS |
            +------------+
            4 rows in set (0.00 sec)
            mysql> SELECT DNAME FROM DEPT;
            +------------+
            | DNAME      |
            +------------+
            | ACCOUNTING |
            | RESEARCH   |
            | SALES      |
            | OPERATIONS |
            +------------+
            4 rows in set (0.00 sec)

13.2、查询两个字段,或者多个字段怎么办?

  使用逗号隔开“,”

       查询部门编号和部门名?

           select deptno,dname from dept;

           +--------+------------+

           | deptno | dname      |

           +--------+------------+

           |     10 | ACCOUNTING |

           |     20 | RESEARCH   |

           |     30 | SALES      |

           |     40 | OPERATIONS |

           +--------+------------+

 

 13.3、查询所有字段怎么办?

第一种方式:可以把每个字段都写上

           select a,b,c,d,e,f... from tablename;

       第二种方式:可以使用*

           

select * from dept;
            +--------+------------+----------+
            | DEPTNO | DNAME      | LOC      |
            +--------+------------+----------+
            |     10 | ACCOUNTING | NEW YORK |
            |     20 | RESEARCH   | DALLAS   |
            |     30 | SALES      | CHICAGO  |
            |     40 | OPERATIONS | BOSTON   |
            +--------+------------+----------+

        这种方式的缺点:

               1、效率低

               2、可读性差。

           在实际开发中不建议,可以自己玩没问题。

           你可以在DOS命令窗口中想快速的看一看全表数据可以采用这种方式。

13.4、给查询的列起别名?

 mysql> select deptno,dname as deptname from dept;
        +--------+------------+
        | deptno | deptname   |
        +--------+------------+
        |     10 | ACCOUNTING |
        |     20 | RESEARCH   |
        |     30 | SALES      |
        |     40 | OPERATIONS |
        +--------+------------+

       使用as关键字起别名。

       注意:只是将显示的查询结果列名显示为deptname,原表列名还是叫:dname

       记住:select语句是永远都不会进行修改操作的。(因为只负责查询)


       as关键字可以省略吗?可以的

           mysql> select deptno,dname deptname from dept;

     

       假设起别名的时候,别名里面有空格,怎么办?

           mysql> select deptno,dname dept name from dept;

           DBMS看到这样的语句,进行SQL语句的编译,不符合语法,编译报错。

           怎么解决?

               select deptno,dname 'dept name' from dept; //加单引号

               select deptno,dname "dept name" from dept; //加双引号

               +--------+------------+

               | deptno | dept name  |

               +--------+------------+

               |     10 | ACCOUNTING |

               |     20 | RESEARCH   |

               |     30 | SALES      |

               |     40 | OPERATIONS |

               +--------+------------+

         

           注意:在所有的数据库当中,字符串统一使用单引号括起来,

           单引号是标准,双引号在oracle数据库中用不了。但是在mysql

           中可以使用。


           再次强调:数据库中的字符串都是采用单引号括起来。这是标准的。

           双引号不标准。

   13.5、计算员工年薪?sal * 12

    mysql> select ename,sal from emp;
        +--------+---------+
        | ename  | sal     |
        +--------+---------+
        | SMITH  |  800.00 |
        | ALLEN  | 1600.00 |
        | WARD   | 1250.00 |
        | JONES  | 2975.00 |
        | MARTIN | 1250.00 |
        | BLAKE  | 2850.00 |
        | CLARK  | 2450.00 |
        | SCOTT  | 3000.00 |
        | KING   | 5000.00 |
        | TURNER | 1500.00 |
        | ADAMS  | 1100.00 |
        | JAMES  |  950.00 |
        | FORD   | 3000.00 |
        | MILLER | 1300.00 |
        +--------+---------+
        mysql> select ename,sal*12 from emp; // 结论:字段可以使用数学表达式!
        +--------+----------+
        | ename  | sal*12   |
        +--------+----------+
        | SMITH  |  9600.00 |
        | ALLEN  | 19200.00 |
        | WARD   | 15000.00 |
        | JONES  | 35700.00 |
        | MARTIN | 15000.00 |
        | BLAKE  | 34200.00 |
        | CLARK  | 29400.00 |
        | SCOTT  | 36000.00 |
        | KING   | 60000.00 |
        | TURNER | 18000.00 |
        | ADAMS  | 13200.00 |
        | JAMES  | 11400.00 |
        | FORD   | 36000.00 |
        | MILLER | 15600.00 |
        +--------+----------+
        mysql> select ename,sal*12 as yearsal from emp; //起别名
        +--------+----------+
        | ename  | yearsal  |
        +--------+----------+
        | SMITH  |  9600.00 |
        | ALLEN  | 19200.00 |
        | WARD   | 15000.00 |
        | JONES  | 35700.00 |
        | MARTIN | 15000.00 |
        | BLAKE  | 34200.00 |
        | CLARK  | 29400.00 |
        | SCOTT  | 36000.00 |
        | KING   | 60000.00 |
        | TURNER | 18000.00 |
        | ADAMS  | 13200.00 |
        | JAMES  | 11400.00 |
        | FORD   | 36000.00 |
        | MILLER | 15600.00 |
        +--------+----------+
        mysql> select ename,sal*12 as '年薪' from emp; //别名是中文,用单引号括起来。
        +--------+----------+
        | ename  | 年薪        |
        +--------+----------+
        | SMITH  |  9600.00 |
        | ALLEN  | 19200.00 |
        | WARD   | 15000.00 |
        | JONES  | 35700.00 |
        | MARTIN | 15000.00 |
        | BLAKE  | 34200.00 |
        | CLARK  | 29400.00 |
        | SCOTT  | 36000.00 |
        | KING   | 60000.00 |
        | TURNER | 18000.00 |
        | ADAMS  | 13200.00 |
        | JAMES  | 11400.00 |
        | FORD   | 36000.00 |
        | MILLER | 15600.00 |
        +--------+----------+

14、条件查询

14.1、什么是条件查询?

不是将表中所有数据都查出来。是查询出来符合条件的。

   语法格式:

       select

           字段1,字段2,字段3....

       from

           表名

       where

           条件;

14.2、都有哪些条件?

= 等于

   查询薪资等于800的员工姓名和编号?

       select empno,ename from emp where sal = 800;

   查询SMITH的编号和薪资?

       select empno,sal from emp where ename = 'SMITH'; //字符串使用单引号


   <>或!= 不等于

   查询薪资不等于800的员工姓名和编号?

       select empno,ename from emp where sal != 800;

       select empno,ename from emp where sal <> 800; // 小于号和大于号组成的不等号


   < 小于

   查询薪资小于2000的员工姓名和编号?

     

  mysql> select empno,ename,sal from emp where sal < 2000;
        +-------+--------+---------+
        | empno | ename  | sal     |
        +-------+--------+---------+
        |  7369 | SMITH  |  800.00 |
        |  7499 | ALLEN  | 1600.00 |
        |  7521 | WARD   | 1250.00 |
        |  7654 | MARTIN | 1250.00 |
        |  7844 | TURNER | 1500.00 |
        |  7876 | ADAMS  | 1100.00 |
        |  7900 | JAMES  |  950.00 |
        |  7934 | MILLER | 1300.00 |
        +-------+--------+---------+

<= 小于等于

   查询薪资小于等于3000的员工姓名和编号?

       select empno,ename,sal from emp where sal <= 3000;



   > 大于

   查询薪资大于3000的员工姓名和编号?

       select empno,ename,sal from emp where sal > 3000;


   >= 大于等于

   查询薪资大于等于3000的员工姓名和编号?

       select empno,ename,sal from emp where sal >= 3000;


   between … and …. 两个值之间, 等同于 >= and <=

   查询薪资在2450和3000之间的员工信息?包括2450和3000

       第一种方式:>= and <= (and是并且的意思。)

         

 select empno,ename,sal from emp where sal >= 2450 and sal <= 3000;
            +-------+-------+---------+
            | empno | ename | sal     |
            +-------+-------+---------+
            |  7566 | JONES | 2975.00 |
            |  7698 | BLAKE | 2850.00 |
            |  7782 | CLARK | 2450.00 |
            |  7788 | SCOTT | 3000.00 |
            |  7902 | FORD  | 3000.00 |
            +-------+-------+---------+

第二种方式:between … and …

 select 
                empno,ename,sal 
            from 
                emp 
            where 
                sal between 2450 and 3000;

   注意:

               使用between and的时候,必须遵循左小右大。

               between and是闭区间,包括两端的值。


   is null 为 null(is not null 不为空)

   查询哪些员工的津贴/补助为null?

       mysql> select empno,ename,sal,comm from emp where comm = null;

       Empty set (0.00 sec)


       mysql> select empno,ename,sal,comm from emp where comm is null;

       +-------+--------+---------+------+

       | empno | ename  | sal     | comm |

       +-------+--------+---------+------+

       |  7369 | SMITH  |  800.00 | NULL |

       |  7566 | JONES  | 2975.00 | NULL |

       |  7698 | BLAKE  | 2850.00 | NULL |

       |  7782 | CLARK  | 2450.00 | NULL |

       |  7788 | SCOTT  | 3000.00 | NULL |

       |  7839 | KING   | 5000.00 | NULL |

       |  7876 | ADAMS  | 1100.00 | NULL |

       |  7900 | JAMES  |  950.00 | NULL |

       |  7902 | FORD   | 3000.00 | NULL |

       |  7934 | MILLER | 1300.00 | NULL |

       +-------+--------+---------+------+

       10 rows in set (0.00 sec)


       注意:在数据库当中null不能使用等号进行衡量。需要使用is null

       因为数据库中的null代表什么也没有,它不是一个值,所以不能使用

       等号衡量。


   查询哪些员工的津贴/补助不为null?

       select empno,ename,sal,comm from emp where comm is not null;

       +-------+--------+---------+---------+

       | empno | ename  | sal     | comm    |

       +-------+--------+---------+---------+

       |  7499 | ALLEN  | 1600.00 |  300.00 |

       |  7521 | WARD   | 1250.00 |  500.00 |

       |  7654 | MARTIN | 1250.00 | 1400.00 |

       |  7844 | TURNER | 1500.00 |    0.00 |

       +-------+--------+---------+---------+


   and 并且

   查询工作岗位是MANAGER并且工资大于2500的员工信息?

       select

           empno,ename,job,sal

       from

           emp

       where

           job = 'MANAGER' and sal > 2500;

     

       +-------+-------+---------+---------+

       | empno | ename | job     | sal     |

       +-------+-------+---------+---------+

       |  7566 | JONES | MANAGER | 2975.00 |

       |  7698 | BLAKE | MANAGER | 2850.00 |

       +-------+-------+---------+---------+


   or 或者

   查询工作岗位是MANAGER和SALESMAN的员工?

       select empno,ename,job from emp where job = 'MANAGER';

       select empno,ename,job from emp where job = 'SALESMAN';

 select 
            empno,ename,job
        from
            emp
        where 
            job = 'MANAGER' or job = 'SALESMAN';
        +-------+--------+----------+
        | empno | ename  | job      |
        +-------+--------+----------+
        |  7499 | ALLEN  | SALESMAN |
        |  7521 | WARD   | SALESMAN |
        |  7566 | JONES  | MANAGER  |
        |  7654 | MARTIN | SALESMAN |
        |  7698 | BLAKE  | MANAGER  |
        |  7782 | CLARK  | MANAGER  |
        |  7844 | TURNER | SALESMAN |
        +-------+--------+----------+

 

   and和or同时出现的话,有优先级问题吗?

   查询工资大于2500,并且部门编号为10或20部门的员工?

       select

           *

       from

           emp

       where

           sal > 2500 and deptno = 10 or deptno = 20;

       分析以上语句的问题?

           and优先级比or高。

           以上语句会先执行and,然后执行or。

           以上这个语句表示什么含义?

               找出工资大于2500并且部门编号为10的员工,或者20部门所有员工找出来。

     

       select

           *

       from

           emp

       where

           sal > 2500 and (deptno = 10 or deptno = 20);

     

       and和or同时出现,and优先级较高。如果想让or先执行,需要加“小括号”

       以后在开发中,如果不确定优先级,就加小括号就行了。


   in 包含,相当于多个 or (not in 不在这个范围中)

       查询工作岗位是MANAGER和SALESMAN的员工?

select empno,ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
            select empno,ename,job from emp where job in('MANAGER', 'SALESMAN');
            +-------+--------+----------+
            | empno | ename  | job      |
            +-------+--------+----------+
            |  7499 | ALLEN  | SALESMAN |
            |  7521 | WARD   | SALESMAN |
            |  7566 | JONES  | MANAGER  |
            |  7654 | MARTIN | SALESMAN |
            |  7698 | BLAKE  | MANAGER  |
            |  7782 | CLARK  | MANAGER  |
            |  7844 | TURNER | SALESMAN |
            +-------+--------+----------+

           注意:in不是一个区间。in后面跟的是具体的值。

       查询薪资是800和5000的员工信息?

 select ename,sal from emp where sal = 800 or sal = 5000;
select ename,sal from emp where sal in(800, 5000); //这个不是表示800到5000都找出来。
            +-------+---------+
            | ename | sal     |
            +-------+---------+
            | SMITH |  800.00 |
            | KING  | 5000.00 |
            +-------+---------+
            select ename,sal from emp where sal in(800, 5000, 3000);

    // not in 表示不在这几个值当中的数据。

  select ename,sal from emp where sal not in(800, 5000, 3000);
            +--------+---------+
            | ename  | sal     |
            +--------+---------+
            | ALLEN  | 1600.00 |
            | WARD   | 1250.00 |
            | JONES  | 2975.00 |
            | MARTIN | 1250.00 |
            | BLAKE  | 2850.00 |
            | CLARK  | 2450.00 |
            | TURNER | 1500.00 |
            | ADAMS  | 1100.00 |
            | JAMES  |  950.00 |
            | MILLER | 1300.00 |
            +--------+---------+

 not 可以取非,主要用在 is 或 in 中

       is null

       is not null

       in

       not in


   like

       称为模糊查询,支持%或下划线匹配

       %匹配任意多个字符

       下划线:任意一个字符。

       (%是一个特殊的符号,_ 也是一个特殊符号)


       找出名字中含有O的?

       mysql> select ename from emp where ename like '%O%';

       +-------+

       | ename |

       +-------+

       | JONES |

       | SCOTT |

       | FORD  |

       +-------+


       找出名字以T结尾的?

           select ename from emp where ename like '%T';

         

       找出名字以K开始的?

           select ename from emp where ename like 'K%';


       找出第二个字每是A的?

           select ename from emp where ename like '_A%';

     

       找出第三个字母是R的?

           select ename from emp where ename like '__R%';

     

       t_student学生表

       name字段

       ----------------------

       zhangsan

       lisi

       wangwu

       zhaoliu

       jack_son


       找出名字中有“_”的?

           select name from t_student where name like '%_%'; //这样不行。


           mysql> select name from t_student where name like '%\_%'; // \转义字符。

           +----------+

           | name     |

           +----------+

           | jack_son |

           +----------+


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
12天前
|
SQL 关系型数据库 MySQL
关于MySQL数据库的学习指南总结
【6月更文挑战第17天】MySQL是流行的关系型DBMS,适合各种应用。学习要点包括安装配置、数据类型、SQL(如SELECT、INSERT)、关系模型、表设计、SQL查询(如WHERE、ORDER BY)、事务处理、用户管理、性能优化和高级技术如存储过程、触发器。了解ACID特性,使用索引和内存优化提升性能,通过备份恢复确保数据安全。不断学习新技术以提升技能。
43 3
|
3天前
|
SQL 关系型数据库 MySQL
MySQL基础(二)----DML学习
MySQL基础(二)----DML学习
7 3
|
15天前
|
SQL 关系型数据库 MySQL
MySQL单表操作学习DDL_DML_DQL语句
MySQL单表操作学习DDL_DML_DQL语句
14 0
|
15天前
|
SQL 关系型数据库 MySQL
MySQL学习必备SQL_DDL_DML_DQL
MySQL学习必备SQL_DDL_DML_DQL
7 0
|
1月前
|
存储 SQL 关系型数据库
Mysql学习手册(第一部分)
【5月更文挑战第17天】Mysql学习手册(第一部分)
45 0
|
1月前
|
SQL 监控 关系型数据库
【MySQL学习】MySQL的慢查询日志和错误日志
【MySQL学习】MySQL的慢查询日志和错误日志
|
1月前
|
存储 关系型数据库 MySQL
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
学习MySQL(5.7)第二战:四大引擎、账号管理以及建库(干货满满)
|
1天前
|
存储 关系型数据库 MySQL
|
1天前
|
存储 SQL 关系型数据库
|
2天前
|
SQL 运维 关系型数据库