MySQL

一、数据库的好处

  1. 可以持久话数据到本地
  2. 结构化查询(SQL)

二、数据库的常见概念 *

  1. DB:数据库 存储有组织的数据的容器
  2. DBMS:数据库管理系统,又称为数据库软件或者数据库产品(eg. MySQL),用于创建和管理数据库
  3. SQL:结构化查询语言:与数据库通信,实现数据库操作,几乎所有的主流的数据库软件通用的语言

 

三、数据库存储的特点

  1. 数据存到中,表再放到库中
  2. 一个库中可以有多张表,每张表具有唯一的表名来标识自己
  3. 表中有一个或多个列,列又称为“字段”(相当于Java类中的属性)
  4. 表中的每一行数据,相当于Java中的“对象”

 

四、MySQL的安装

  属于c/s架构的软件,一般来讲,安装的是服务端

 

五、MySQL的启动、停止、登陆和退出

net start 服务名
net stop 服务名
mysql [-h 主机名 -P 端口号] -u 用户名 -p密码
exit

 

六、DQL(数据查询)语言

#进阶1:基础查询
/*
语法:select 查询列表 from 表名;(MySql 不区分大小写)
特点:
    1、查询列表为:表中的字段、常量值、表达式和函数
    2、查询结果是一个虚拟的表格
*/

#启动制定的库(安全)
USE  myemployees;

#查询表中的单个字段

SELECT last_name FROM employees;

#查询表中的多个字段
SELECT last_name, salary, email FROM employees;


#查询表中的所有字段, *代表所有的字段(字段的顺序与原始表相同)
SELECT * FROM employees;

#查询常量
SELECT 100;
SELECT 'a';

#查询表达式
select 100%98;

#查询函数
select version();


#更该字段的名称(1、便于理解;2、使用别名能区分重名的字段)
#方法一:使用as
select 100%98 as 结果;
select last_name as 姓, first_name as 名 from employees;

#方法二:使用空格
select 100%98 结果;

#特例:查询salary,显示结果为out put(这里有空格)
select salary as "out put" from employees;

#去重 DISTINCT
#select department_id from employees;
select distinct department_id from employees;


# +号的作用

/*
mysql中的+号仅表示运算符
eg. select 100 + 9;
select 'john' + 90; #试图将字符(串)123转换为数值。
如果成功,则将字符型转换为数值,继续做加法运算;
如果不成功,则将字符型转换为0;
select null + 90;   null 加任何值均为null
                        
*/


#案例:连接姓和名,组合成姓名,使用函数 CONCAT()
select concat(last_name, first_name) as 姓名
from employees;


#显示表的结构
desc employees;
#进阶2:条件查询
/*
语法: 
    select 
        查询列表 #查询
    from 
        表名     #第一步
    where        
        筛选条件 #筛选
        
分类:
    1、按条件表达式筛选
        条件运算符:>,<,=,<>,>=,<=
    2、按照逻辑表达式筛选
        逻辑运算符:and or not(&& || !)
        作用:用于连接条件表达式
    3、模糊查询:like、between and、in、is null
*/

#按条件表达式筛选

#案例1、查询工资>12000的员工信息
SELECT * FROM employees WHERE salary > 12000;

#案例1、查询部门编号不等于90的员工名和部门编号
SELECT last_name, department_id
FROM employees
WHERE department_id <> 90;

#按照逻辑表达式筛选
#案例1、查询工资在10000-20000的员工信息
SELECT * FROM employees WHERE salary >= 10000 AND salary <= 20000;


SELECT * FROM employees 
WHERE  NOT(department_id >= 90 AND department_id <= 110) OR salary >15000;

#进阶3:模糊查询
/*
like、between and、in、is null、is not null
特点:1、一般和通配符搭配使用
    通配符:
        % 任意多个字符(包含0个字符)
        _ 任意单个字符
        \ 表示转义字符; ESCAPE '*' 指定一个字符为转义字符
*/

#案例1、查询员工名中包含字符a的员工信息,%表示通配符
SELECT * FROM employees WHERE first_name LIKE '%a%' OR last_name LIKE '%a%';


#案例2、查询员工名中第三个字符为e,第五个字符为a的员工名和工资
SELECT last_name, salary FROM employees 
WHERE last_name LIKE '__n_l%';

#案例3、查询员工名中第2个字符为下划线的员工名和工资(转义字符\)
SELECT last_name, salary FROM employees
#where last_name like '_\_%';
WHERE last_name LIKE '_*_%' ESCAPE '*';

/*
between and 
1、可以提高语句的简洁度;
2、左右都是闭区间
3、两个临界值不能颠倒
*/


#案例4、查询员工编号在100到200之间的员工信息
SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 200;

/* in
含义:用于判断某字段的值是否属于列表中的某一项
特点:1、使用in做筛选,能提高语句的简洁度
      2、in列表中的值类型必须统一,或者兼容
      3、IN等价于是否等于,列表中的每一项不支持通配符(通配符表示某一范围)

*/

#案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
SELECT last_name, job_id FROM employees 
WHERE job_id IN ('IT_PROG', 'AD_VP', 'AD_PRES');


/*is null
1、 =或者<> NULL 这种写法是不对的
2、is null 或者 is not null 可以判断null
*/

#案例:查询奖金率不为null的员工名和奖金率
SELECT 
    last_name,
    commission_pct
FROM 
    employees
WHERE
    commission_pct IS NOT NULL;

/*
安全等于   <=>
既可以判断null值,又可以判断普通的数值
可读性较is null低
*/
SELECT
    last_name,
    salary
FROM 
    employees
#WHERE commission_pct <=> NULL;
WHERE salary <=> 12000;

#查询员工号为176的员工的姓名、部门号和年薪
SELECT 
    last_name,
    department_id,
    salary*12*(1+IFNULL(commission_pct,0)) AS 年薪
FROM
    employees
WHERE    department_id = 100;

#案例
SELECT * 
FROM employees
WHERE job_id <> 'IT' OR salary = 12000;

#查询表的结构信息
DESC departments;

#查询部门departments中涉及到哪些位置编号
SELECT DISTINCT location_id FROM departments;

#面试题:语句1和语句2的结果是否相同
#语句1
SELECT * FROM employees;

#语句2
SELECT * FROM employees WHERE last_name LIKE '%';

#答案:不相同,因为通配符 % 不能匹配null的情况

 注意:比较一下 is null 和<=>

             普通类型的数值    null值    可读性
is null        no             yes       yes
<=>            yes            yes       no

 

上一篇:安装mysql Employees 演示数据库


下一篇:sql索引优化实战