五 - - 1、进阶1:DQL查询+测试题

 

       DQL(Data Query Language)查询 -- 语言的学习:

       DML:(Data Manipulation Language)涉及增、删、改、查

       DDL:数据定义语言(Data Define Language)(库和表的定义--定义表,删除表,定义库,删除库 ......)

       TCL:事务控制语言(Transaction Control Language)。 

 

在SQLyog中导入sql表:

在root@localhost上右击--执行sql脚本--选择目标sql--执行--完成。

 

 

 

五 —— 一:

 

进阶壹、基础查询:

 

1、查询表中的字段:

select  查询列表  from  表名;   类似于    System.out.println(  打印的东西 );

特点:查询的结果是一个虚拟的表格。

操作小demo:

 

2、查询常量值、表达式、函数:

 

3、起别名:

#7-1、起别名
SELECT 100%98 AS 结果;
SELECT `last_name` AS 姓,`first_name` AS 名 FROM employees;
#7-2、起别名方式二(省略AS)
SELECT `last_name` 姓,`first_name` 名 FROM employees;

 

(1)、如果别名有特殊标记、空格或符号等等,需要把别名加双引号(" ")或者单引号,建议最好加双引号:

SELECT salary AS "out put" FROM employees;

 

4、去重:DISTINCT

 

5、” + “号的作用:

MySQL中的“ + ”号仅仅只有一个作用:运算符。

两个操作数都为数值型,则作加法运算。 其中一方为数值型,试图将字符型数值转化成数值型, 如果转换成功,则继续做加法运算;如果转换失败,则将字符型数值变成0。 只要其中一方为null,则结果肯定为null。
 

MySQL中的“ + ”号仅仅只有一个作用:运算符

select 100+90;     两个操作数都为数值型,则作加法运算。

select '123'+90;   其中一方为数值型,试图将字符型数值转化成数值型
		           如果转换成功,则继续做加法运算
select 'join'+90;  如果转换失败,则将字符型数值变成0

select null+90;    只要其中一方为null,则结果肯定为null

 

6、concat函数:

案例要求:查询员工名与姓连接成一个字段,并显示为 姓名

SELECT CONCAT(last_name,first_name) AS 姓名 
FROM employees;

 

7、测 试 


1. 下面的语句是否可以执行成功  

select last_name , job_id ,

salary as sal from employees;  

 

2. 下面的语句是否可以执行成功  

select  *  from employees;

 

3. 找出下面语句中的错误  

select employee_id , last_name, salary * 12  “ANNUAL  SALARY” from employees;

 

4. 显示表 departments 的结构,并查询其中的全部数据

DESC departments;

select * from departments;

 

5. 显示出表 employees 中的全部 job_id(不能重复用distinct关键字

select  DISTINCT  job_id  from  employees ;

 

6. 显示出表 employees 的全部列,各个列之间用逗号连接,列头显示成 OUT_PUT (用到IFNULL函数--如果第一个数是null,则把它的值算为第二个数)。

 

 

进阶贰、条件查询: 

语法:

select
    查询列表    第三步
from
    表名        第一步
where
    筛选条件;    第二步

分类:

    一、按条件表达式筛选:
    条件运算符:> < = != <> >= <=

    二、按逻辑表达式筛选:
    逻辑运算符:
            && || !
            and or not

    三、模糊查询:
            like
            between and
            in
            is null

 

1、条件表达式筛选:


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


#案例2:查询部门编号不等于90号的员工名和部门编号
SELECT 
    `last_name`,`department_id`
FROM 
    `employees`
WHERE 
    `department_id` != 90;

 

2、逻辑表达式筛选:

#案例1:查询工资在10000和20000之间的员工名、工资以及奖金
SELECT
	last_name,salary,commission_pct
FROM 
	employees
WHERE 
	salary>=10000 AND salary<=20000;

	
#案例2:查询部门编号不是在90到110之间,或者工资高于15000的员工的信息
SELECT
	*
FROM
	employees
WHERE
	#department_id<90 or department_id>110 or salary>15000;
	NOT(department_id>=90 AND department_id<=110) OR salary>15000;

 

3、模糊查询:

like
between and
in
is null  ;  is not null

(1)、like
特点:
①、一般和通配符搭配使用
    通配符:
      % 任意多个字符,包含0个字符
      _ 任意单个字符,就一个

#案例1:查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';

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

可以使用任何字符(a,b,c,d......)对后边的字符进行转义操作,但必须用ESCAPE关键字对自己写的转义字符进行说明。

#案例3:查询员工名中第二个字符为_的员工名(需要加转义字符)
SELECT last_name FROM employees WHERE last_name LIKE '_\_%';
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
#可以使用任何字符对后边的字符进行转义操作,但必须用ESCAPE关键字对自己写的转义字符进行说明。

 

(2)、between and
①、使用between and可以提高语句的简洁度
②、包含临界值
?、两个临界值不要调换顺序


#案例1:查询员工编号在100到200之间的员工的信息

SELECT
    *
FROM
    employees
WHERE
    `employee_id` BETWEEN 100 AND 200;

 

(3)、in关键字:

 

(4)、is null关键字: 
案例1、查询没有奖金的员工名和奖金率

SELECT last_name,commission_pct
FROM `employees`
WHERE commission_pct IS NULL;

 

(5)、安全等于(判断的是等于):<=>

案例1:查询没有奖金的员工名和奖金率

SELECT `last_name`,`commission_pct`
FROM `employees`
WHERE `commission_pct` <=> NULL;

 

案例2:查询工资为12000的员工信息

SELECT `last_name`,`commission_pct`
FROM `employees`
WHERE `salary` <=> 12000;

 

 4、测 试 (自主完成)


(1). 查询工资大于 12000 的员工姓名和工资

(2). 查询员工号为 176 的员工的姓名和部门号和年薪

(3). 选择工资不在 5000 到 12000 的员工的姓名和工资

(4). 选择在 20 或 50 号部门工作的员工姓名和部门号

(5). 选择公司中没有管理者的员工姓名及 job_id

(6). 选择公司中有奖金的员工姓名,工资和奖金级别

(7).选择员工姓名的第三个字母是 a 的员工姓名

(8). 选择姓名中有字母 a 和 e 的员工姓名

(9). 显示出表 employees 表中 first_name 以 'e'结尾的员工信息

(10). 显示出表 employees 部门编号在 80-100 之间 的姓名、职位

(11).显示出表 employees 的 manager_id 是 100,101,110 的员工姓名、职位 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值