SELECT 高级应用

这篇具有很好参考价值的文章主要介绍了SELECT 高级应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

REVIEW

YEAR + MONTH

SELECT 
    employee_id, 
    name, 
    MONTH(birth_date) AS birth_month, 
    YEAR(birth_date) AS birth_year 
FROM 
    tarena.employees 
WHERE 
    employee_id = 8;

SELECT 高级应用,R or DB or SQL,数据库

DESC

DESC tarena.salary;

SELECT 高级应用,R or DB or SQL,数据库

+ - () / %

SELECT 
    basic + bonus AS PAY 
FROM 
    tarena.salary 
WHERE 
    employee_id = 8 
AND 
    date=20190110;


SELECT 
    employee_id , name , 
    2022 - YEAR(birth_date) AS years_old 
FROM 
    employees 
WHERE 
    employee_id = 8 ;


SELECT 
    employee_id, (basic+bonus)/2 AS avg_pay 
FROM 
    tarena.salary 
WHERE 
    employee_id = 8 
AND 
    date=20190110;

SELECT 
    employee_id,name 
FROM 
    tarena.employees 
WHERE 
    employee_id BETWEEN 1 and 10 
AND
    employee_id % 2 = 0;

 SELECT 高级应用,R or DB or SQL,数据库

 SELECT 高级应用,R or DB or SQL,数据库

 IFNULL

SELECT IFNULL(NULL,"AAA");
SELECT IFNULL("nnn","AAA");


SELECT name, IFNULL(homedir, "NO home as HOME_DIR") FROM tarena.user ;

SELECT 高级应用,R or DB or SQL,数据库

SELECT 高级应用,R or DB or SQL,数据库

CREATE + DROP

创建 + 删除

CREATE DATABASE gamedb;
CREATE DATABASE IF NOT EXISTS gamedb;

DROP DATABASE gamedb ;
DROP DATABASE IF EXISTS gamedb;

SELECT 高级应用,R or DB or SQL,数据库

CREATE TABLE IF NOT EXISTS student_info (name char(10), class char(9));
CREATE TABLE student_info (name char(10), class char(9));

DROP TABLE  student_info ;
DROP TABLE IF EXISTS  student_info ;

SELECT 高级应用,R or DB or SQL,数据库

INSERT

CREATE TABLE wage_grade(id int primary key auto_increment, grade char(1), low int, high int);

INSERT INTO 
    wage_grade(grade,low,high) 
VALUES 
    ('A', 5000, 8000), 
    ('B', 8001, 10000), 
    ('C', 10001, 15000), 
    ('D', 15001, 20000), 
    ('E', 20001, 100000);

SELECT 高级应用,R or DB or SQL,数据库

内连接

SELECT  表头名列表 FROM  表1  INNER JOIN  表2 ;

SELECT  表头名列表 FROM  表1  INNER JOIN  表2  ON  连接条件; 

                                    
SELECT  

        表头名列表

FROM  

        表1  

INNER JOIN  

        表2  

ON  

        连接条件
[WHERE 筛选条件] | [GROUP BY 分组] | [HAVING 分组后筛选]|[ORDER BY 排序列表]

SELECT 
    name, dept_name  
FROM 
    tarena.employees  
INNER JOIN 
    tarena.departments  
ON
    tarena.employees.dept_id = tarena.departments.dept_id 
LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

SELECT 
    name,dept_name 
FROM 
    employees 
INNER JOIN 
    departments 
ON 
    employees.dept_id=departments.dept_id 
WHERE 
    employees.employee_id = 8;

SELECT 高级应用,R or DB or SQL,数据库

-- 表起别名
SELECT 
    d.dept_name, e.*  
FROM 
    employees AS e  
INNER JOIN 
    departments AS d 
ON 
    e.dept_id = d.dept_id LIMIT 3 ;

SELECT 高级应用,R or DB or SQL,数据库

-- 异表具有同名表头,表头前必须加表名
SELECT 
    name, e.dept_id, d.dept_id, dept_name 
FROM 
    employees AS e  
INNER JOIN 
    departments AS d 
ON 
    e.dept_id = d.dept_id 
LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

WHERE + AS

WHERE        添加筛选条件

AS                 别名

YEAR            时间函数取年份

SELECT 
    e.employee_id, name, date, basic, 
    bonus, basic+bonus AS sum 
FROM 
    employees AS e
INNER JOIN 
    salary AS s 
ON 
    e.employee_id = s.employee_id  
WHERE 
    year(s.date)=2018 AND e.employee_id = 11;

SELECT 高级应用,R or DB or SQL,数据库

GROUP BY

GROUP BY        分组

SELECT 
    s.employee_id, name, 
    SUM(basic+bonus) AS sum 
FROM 
    employees AS e  
INNER JOIN 
    salary AS s 
ON 
    e.employee_id = s.employee_id 
WHERE 
    YEAR(date)=2018 
GROUP BY 
    s.employee_id LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

ORDER BY

升序        ASC

降序        DESC

SELECT 
    s.employee_id, name, 
    SUM(basic+bonus) AS sum 
FROM 
    employees AS e  
INNER JOIN 
    salary AS s 
ON 
    e.employee_id = s.employee_id 
WHERE 
    YEAR(date)=2018 
GROUP BY 
    s.employee_id 
ORDER BY 
    sum ASC 
LIMIT 6 ;


SELECT 
    s.employee_id, name, 
    SUM(basic+bonus) AS sum 
FROM 
    employees AS e  
INNER JOIN 
    salary AS s 
ON 
    e.employee_id = s.employee_id 
WHERE 
    YEAR(date)=2018 
GROUP BY 
    s.employee_id 
ORDER BY 
    sum DESC 
LIMIT 6 ;

SELECT 高级应用,R or DB or SQL,数据库

非等值链接

SELECT 
    date, employee_id, basic, grade 
FROM 
    salary 
INNER JOIN 
    wage_grade 
ON 
    salary.basic 
BETWEEN 
    wage_grade.low AND wage_grade.high 
WHERE YEAR(date)=2018 AND MONTH(date)=12 LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

 实现分类分组的功能 

BETWEEN AND        确定范围

SELECT 
    name, date, basic, grade 
FROM 
    employees AS e  
INNER JOIN 
    salary AS s 
ON 
    e.employee_id=s.employee_id 
INNER JOIN 
    wage_grade AS g 
ON 
    s.basic 
BETWEEN g.low AND g.high 
WHERE 
    YEAR(date)=2018 AND MONTH(date)=12 LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

SELECT 
    name, date, basic, grade 
FROM 
    employees AS e 
INNER JOIN 
    salary AS s 
ON 
    e.employee_id=s.employee_id 
INNER JOIN 
    wage_grade AS g 
ON 
    s.basic BETWEEN g.low AND g.high 
WHERE 
    YEAR(date)=2018 AND MONTH(date)=12 
LIMIT 6;

SELECT 高级应用,R or DB or SQL,数据库

 自链接

SELECT 
    e.name, e.hire_date, em.birth_date 
FROM 
    employees AS e 
INNER JOIN 
    employees AS em 
ON 
    MONTH(e.hire_date)=MONTH(em.hire_date) 
AND 
    e.employee_id = em.employee_id LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

外链接

比较2个表格数据不同

左链接:以左表为标准

右链接:以右表为标准

LEFT JOIN

SELECT 
    dept_name, name 
FROM 
    departments 
LEFT JOIN 
    employees 
ON 
    departments.dept_id = employees.dept_id 
WHERE 
    name IS NOT NULL LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

RIGHT JOIN

SELECT 
    name,dept_name,employees.dept_id  
FROM 
    departments 
RIGHT JOIN 
    employees 
ON 
    departments.dept_id = employees.dept_id 
LIMIT 5;

SELECT 高级应用,R or DB or SQL,数据库

全外链接 UNION + UNION ALL

多个select查询结果输出

表头和数据类型一致

UNION 关键字默认去重

UNION ALL 包含重复项

(SELECT "ABC") UNION (SELECT "QWE");
(SELECT "ABC") UNION ALL (SELECT "QWE");

(SELECT "ABC") UNION ALL (SELECT "ABC");
(SELECT "ABC") UNION (SELECT "ABC");

SELECT 高级应用,R or DB or SQL,数据库

(SELECT name,birth_date FROM employees WHERE YEAR(birth_date)=1972)  
UNION 
(SELECT name,birth_date FROM employees WHERE YEAR(birth_date)=1973) 
LIMIT 4;

SELECT 
    name,birth_date 
FROM 
    employees 
WHERE 
    YEAR(birth_date)=1972 OR YEAR(birth_date)>2000;

SELECT 高级应用,R or DB or SQL,数据库

子查询(嵌套查询)

编写过程由内往外写

WHERE

SELECT * FROM employees 
WHERE 
    dept_id = (
    SELECT 
        dept_id 
    FROM 
        departments 
    WHERE 
        dept_name='运维部'
    ) 
LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

SELECT * FROM salary 
WHERE 
    YEAR(date)=2018 AND MONTH(date)=12 
AND 
    basic >  (
        SELECT basic FROM salary 
        WHERE YEAR(date)=2018 
        AND MONTH(date)=12 
        AND employee_id = 100) 
LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

SELECT 
    dept_id , name 
FROM 
    employees 
WHERE 
    dept_id IN (
        SELECT dept_id FROM departments 
        WHERE dept_name in ('人事部','财务部')
    ) 
LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

SELECT 
    employee_id, basic, bonus 
FROM 
    salary 
WHERE 
    employee_id IN (
        SELECT 
            employee_id 
        FROM 
            employees 
        WHERE 
            dept_id = (
                SELECT dept_id FROM departments 
                WHERE dept_name = '人事部'
            )
    ) 
LIMIT 3;

SELECT 高级应用,R or DB or SQL,数据库

FROM

SELECT 
    employee_id, basic, bonus 
FROM 
    salary 
WHERE
    YEAR(date)=2018 AND MONTH(date)=12 
AND 
    basic = (
        SELECT MAX(basic) 
        FROM salary WHERE YEAR(date)=2018
        AND MONTH(date)=12) 
AND
    bonus = (
        SELECT MAX(bonus) 
        FROM salary 
        WHERE YEAR(date)=2018 
        AND MONTH(date) = 12) ;

SELECT 高级应用,R or DB or SQL,数据库

SELECT 
    dept_id , dept_name, 
    employee_id , name , email 
FROM (
    SELECT 
        d.dept_name, e.* 
    FROM         
        departments AS d 
    INNER JOIN 
        employees AS e 
    ON 
        d.dept_id = e.dept_id 
    ) AS  tmp_table 
WHERE dept_id = 3;

 SELECT 高级应用,R or DB or SQL,数据库

SELECT

SELECT 
    d.*, (
    SELECT 
        COUNT(name) 
    FROM 
        employees AS e 
    WHERE 
        d.dept_id = e.dept_id
    ) AS sum 
FROM 
    departments AS d ;

SELECT 高级应用,R or DB or SQL,数据库 

HAVING

SELECT 
    dept_id ,COUNT(name) AS sum 
FROM 
    employees 
GROUP BY 
    dept_id 
HAVING 
    sum < (
        SELECT COUNT(name) FROM employees 
        WHERE dept_id = (
            SELECT dept_id FROM departments 
            WHERE dept_name='开发部'
        )
    );

SELECT 高级应用,R or DB or SQL,数据库文章来源地址https://www.toymoban.com/news/detail-516472.html

到了这里,关于SELECT 高级应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Azure SQL DB/Azure托管实例里快速查询各数据库大小以及每个数据库下表的大小

    目录 (一)前言 (二)正文 1. 环境: 2. 查看实例下每个数据库的空间大小 (1) SQL语法 (2)运行结果 3. 查看特定数据库下每张表的大小 (1)SQL语法 (2)运行结果 日常工作中对于各个数据库以及每一个数据库中下辖的表的大小,是我们日常监控以及分析问题的重要方向

    2024年02月11日
    浏览(69)
  • DB SQL 转 ES DSL(支持多种数据库常用查询、统计、平均值、最大值、最小值、求和语法)...

    1. 简介   日常开发中需要查询 Elasticsearch 中的数据时,一般会采用 RestHighLevelClient 高级客户端封装的API。项目中一般采用一种或多种关系型数据库(如: Mysql 、 PostgreSQL 、 Oracle 等) + NoSQL(如: Elasticsearch )存储方案;不同关系数据库可以采用 Mybatis-Plus 方案屏蔽数据库的方言

    2024年01月17日
    浏览(51)
  • 【数据库】MySQL 高级(进阶) SQL 语句

    location表格创建 store_info表格创建 显示表格中一个或数个字段的所有数据记录 不显示重复的数据记录 按照条件进行查询 在已知的字段数据取值范围内取值 另外还有not in命令,用法一致,表示显示不在指定范围内的字段的值。 在两个字段数据值之间取值,包含两边字段的数据

    2024年02月09日
    浏览(136)
  • Chat2DB-开源AI智能数据库客户端工具 能够将自然语言转换为SQL

    Chat2DB 是一款有 开源免费的多数据库客户端工具 ,支持windows、mac本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力,能够将自然语言转换为SQL,也可以将SQL转换为自然语言,可以给出研发人员SQL的优化建议,极

    2024年02月15日
    浏览(90)
  • SQL Server数据库 -- 表的高级查询

      一、子查询 嵌套子查询 相关子查询 二、查询运算 并运算union 交运算intersect 差运算except 三、函数的使用 if语句 while语句 case语句 四、总结 高级子查询是对查询更灵活的运用,学会了高级查询将对数据库使用有很大的帮助。       在SQL语言中,一个select-from-where语句称为一

    2024年02月13日
    浏览(58)
  • 【MySQL数据库】MySQL 高级SQL 语句一

    ) % :百分号表示零个、一个或多个字符 _ :下划线表示单个字符 ‘A_Z’:所有以 ‘A’ 起头,另一个任何值的字符,且以 ‘Z’ 为结尾的字符串。例如,‘ABZ’ 和 ‘A2Z’ 都符合这一个模式,而 ‘AKKZ’ 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。 ‘ABC%’

    2024年02月09日
    浏览(241)
  • 数据库 SQL高级查询语句:聚合查询,多表查询,连接查询

    创建Students和Courses表 直接查询 设置别名查询 设置条件查询 使用COUNT(*) 和 COUNT(StudentID)是一样的效果,因为StudentID是主键,每行记录的主键都不同。另外我们在聚合查询中还是能使用WHERE子句的,比如我们要 查找年龄大于20岁的学生数量 ,可使用以下SQL语句: 函数 说明 SUM

    2024年02月09日
    浏览(127)
  • 数据库应用:MySQL高级语句(一)

    目录 一、理论 1.常用查询 2.函数 3.进阶查询 二、实验 1.普通查询 2.函数 3.进阶查询 三、问题 1.MySQL || 运算符不生效 四、总结 常用查询包括:增、删、改、查; 对 MySQL 数据库的查询,除了基本的查询外,有时候需要对查询的结果集进行处理。 (1)selelct select,显示表格中

    2024年02月17日
    浏览(88)
  • DB-GPT:强强联合Langchain-Vicuna的应用实战开源项目,彻底改变与数据库的交互方式

    今天看到 蚂蚁科技 Magic 开源的DB-GPT项目,觉得创意很好,集成了当前LLM的主流技术,主要如下 Langchain: 构建在LLM之上的应用开发框架 HuggingFace: 模型标准,提供大模型管理功能 Vicuna: 一个令GPT-4惊艳的开源聊天机器人,基于LLaMA模型和ShareGPT数据集训练的,能够达到接近Cha

    2024年02月15日
    浏览(41)
  • 【SQL Server】数据库开发指南(八)高级数据处理技术 MS-SQL 事务、异常和游标的深入研究

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中。 本系列文章列表如下: 【SQL Server】 Linux 运维下对 SQL Server 进行安装、升级、回滚、卸载操作 【SQL Server】数据库开发指南(一)数据库设计的核心概念和基本步骤 【SQL Server】数据库开发指南(二)MSSQL数据库开发对

    2024年02月07日
    浏览(92)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包