初识DQL语言

目录

### MySQL的语法规范

注释

什么是DQL语句?

1.简单查询

#打开库名USE myemployees;

#1.查询表中的单个字段

#2.查询表中的多个字段

#3.查询表中的所有字段

#4.查询常量值

注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要

#5.查询表达式

#6.查询函数

SELECT 函数名(实参列表);

#7.起别名   AS 或 空格

#8.去重  distinct

select distinct 字段名 from 表名;

 #9.+号的作用     CONCAT

10.【补充】concat函数   拼接字符

select  concat(字符1.字符2,字符3,……);

11.【补充】ifnull函数   判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值

select ifnull(字符1,字符2);

进阶2:条件查询

/*语法:select        查询列表from        表名where        筛选条件;

一、按条件表达式筛选

#二、按逻辑表达式筛选

#三、模糊查询

#1.like #一般搭配通配符来使用,可以判断字符型或数值型/*like特点:   一般和通配符搭配使用通配符:% 任意多个字符,包含0个字符

#案例3:查询员工名中第二个字符为_的员工名(此时'_'不是一个通配符,而是一个具体的字符,需要转译'\_'或'$_'[需要标注$是转译符])

 2.between   and 

/*①使用between and可以提高语句的简洁度②包含临界值③两个临界值不要调换顺序(从小到大)

*/

#3.in/*含义:判断某字段的值是否属于in列表中的某一项特点:①使用in提高语句简洁度②in列表的值类型必须—致或兼容*/

#4、is null/*=或<>不能用于判断null值is null或is not null可以判断null值*/

#安全等于<=>

#is null 与 <=>IS NULL:仅仅可以判断NUL工值,<=>:既可以判断NUL工值,又可以判断普通的数值

三、数据库存储数据的特点

1、数据存放到表中,然后表再放到库中2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己

3、表中有一个或多个列,列又称为“字段”,相当于java中“属性”

4、表中的每一行数据,相当于java中“对象”



### MySQL的语法规范

  • 不区分大小写,但建议关键字大写,表名、列名小写
  • 使用“;”结尾
  • 各子句一般分行写
  • 关键字不能缩写也不能分行
  • 合理使用缩进

注释

单行注释:#注释文字
单行注释:-- 注释文字(要有空格)
多行注释:/* 注释文字  */

什么是DQL语句?

Data QueryLanguage 数据查询语言,关键字:SELECT ... FROM ... WHERE

1.简单查询

#打开库名
USE myemployees;

#1.查询表中的单个字段

SELECT 字段名 FROM 表名;

SELECT last_name FROM employees;

#2.查询表中的多个字段

SELECT 字段名,字段名,…  FROM 表名;

SELECT last_name , salary, email FROM employees;

#3.查询表中的所有字段

SELECT * FROM 表名;

SELECT * FROM employees ;

#4.查询常量值

SELECT 常量值;

SELECT 100;
SELECT 'john';

注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要

#5.查询表达式

SELECT 100%98;

#6.查询函数

SELECT 函数名(实参列表);

SELECT VERSION();


#7.起别名   AS 或 空格

/*
1便于理解
②如果要查询的字段有重名的情况,使用别名可以区分开来
*/
#方式一:使用as
SELECT 100%98 as 结果;
SELECT last_name As 姓,first_name AS 名 FROM employees;

#方式二:使用空格
SELECT last_name 姓,first_name 名 FROM employees;

#案例:查询salary,显示结果为out put
SELECT salary As "out put" FROM employees;     #建议是加双引号,避免和关键字重复

#8.去重  distinct

select distinct 字段名 from 表名;

#案例:查询员工表中涉及到的所有的部门编号
SELECT DISTINCT department_id FROM employees;


 #9.+号的作用     CONCAT

/*
java中的+号:
1.运算符,两个操作数都为数值型
2.连接符,只要有一个操作数为字符串

mysql中的+号:
仅仅只有一个功能:运算符

select 100+90;   两个操作数都为数值型,则做加法运算,输出190
select '123'+90;   其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功,则继续做加法运算,结果为213
select 'john'+90;   如果转换失败,则将字符型数值转换成0,结果为90
select null+10;   只要其中一方为null,则结果肯定为null

*/

SELECT CONCAT('a','b','c') AS 结果;

10.【补充】concat函数   拼接字符

select  concat(字符1.字符2,字符3,……);

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

11.【补充】ifnull函数   判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值

select ifnull(字符1,字符2);

select ifnull(commission_pct,0);

12

进阶2:条件查询

/*语法:
select
        查询列表
from
        表名
where
        筛选条件;

分类:
一、按条件表达式筛选

简单条件运算符:>    <     =       !=    < >    >=    <=

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


三、模糊查询
like
between and

in
is null
*/

一、按条件表达式筛选

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

写成分行不行,写成一行成了, 可恶啊,什么情况?

SELECT * FROM employees WHERE salary>12000;


#案例2:查询部门编号不等于90号的员工名和部门编号

#案例2:查询部门编号不等于90号的员工名和部门编号
SELECT
                last_name,
                department_id
FROM
                employees
WHERE 
                department_id !=90;   或  department_id <>90;(推荐)

#二、按逻辑表达式筛选

#案例1:查询工资在10000到20000之间的员工名、工资以及奖金

SELECT
        last_name,salary,
        commission_pct
FROM
        employees
WHERE
        salary>=10000 AND salary<=20000;

SELECT last_name,salary,commission_pct FROM employees WHERE
salary>=10000 AND salary<=20000;

 #案例2:查询部门编号不是在90到1i0之间,或者工资高于15000的员工信息

SELECT
*
FROM
employees
WHERE
department_id<90 OR department_id>110 OR salary>15000;


#三、模糊查询

#1.like #一般搭配通配符来使用,可以判断字符型或数值型
/*
like特点:   
一般和通配符搭配使用
通配符:
% 任意多个字符,包含0个字符

_ 任意单个字符
between and
in
is nul1 | is not null

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

 SELECT * FROM employees WHERE last_name LIKE '%a%';

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

#案例3:查询员工名中第二个字符为_的员工名(此时'_'不是一个通配符,而是一个具体的字符,需要转译'\_'或'$_'[需要标注$是转译符])


SELECT last_name
FROM employees
WHERE last_name LIKE '_\_%';

-- 或
SELECT last_name
FROM employees
WHERE last_name LIKE '_$_%' ESCAPE '$';

 2.between   and 

/*
①使用between and可以提高语句的简洁度
②包含临界值
③两个临界值不要调换顺序(从小到大)

*/

#案例1:查询员工编号在100到120之间的员工信息
SELECT *
FROM employees
WHERE employee_id >= 100 AND employee_id<=120;

#-------
SELECT * FROM employees
WHERE employee_id BETWEEN 100 AND 120;

#3.in
/*
含义:
判断某字段的值是否属于in列表中的某一项
特点:
①使用in提高语句简洁度
②in列表的值类型必须—致或兼容
*/

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

SELECT last_name, job_id FROM employees
WHERE job_id IN('IT_PROT','AD_VP','AD_PRES');

 

#4、is null
/*
=或<>不能用于判断null值
is null或is not null可以判断null值
*/

#案例1:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees
WHERE commission_pct IS NULL;  #奖金率为空

#案例2:查询有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees
WHERE commission_pct IS NOT NULL;   #奖金率非空

#安全等于<=>

#案例1:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct FROM employees
WHERE commission_pct <=>NULL;

#案例2:查询工资为12000的员工信息
SELECT
last_name,salary
FROM
employees
wHERE
salary <=>12000;

#is null 与 <=>
IS NULL:仅仅可以判断NUL工值,
<=>:既可以判断NUL工值,又可以判断普通的数值

 

三、数据库存储数据的特点


1、数据存放到表中,然后表再放到库中
2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己

3、表中有一个或多个列,列又称为“字段”,相当于java中“属性”

4、表中的每一行数据,相当于java中“对象”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值