Day69(MySQl语法规范,SQL的语言分类,查询,条件查询,排序查询)

2024-02-25 14:18

本文主要是介绍Day69(MySQl语法规范,SQL的语言分类,查询,条件查询,排序查询),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MySQL语法规范

  • 不区分大小写(但建议关键字大写,表名、列名小写)
  • 每句话用;或\g结尾
  • 各子句一般分行写
  • 关键字不能缩写也不能分行
  • 用缩进提高语句的可读性
  • 注释
    单行注释:#注释文字
    单行注释:-- 注释文字
    多行注释:/* 注释文字 */

SQL的语言分类

DQL(Data Query Language):数据查询语言
select
DML(Data Manipulate Language):数据操作语言
insert 、update、delete
DDL(Data Define Languge):数据定义语言
create、drop、alter
TCL(Transaction Control Language):事务控制语言
commit、rollback

数据处理之查询

基本SELECT 语句

  • SELECT 标识选择哪些列。

  • FROM 标识从哪个表中选择。

注意

  • SQL 语言大小写不敏感。

  • SQL 可以写在一行或者多行

  • 关键字不能被缩写也不能分行

  • 各子句一般要分行写。

  • 使用缩进提高语句的可读性。

列的别名

  • 重命名一个列。

  • 便于计算。

  • 紧跟列名,也可以在列名和别名之间加入关键字‘AS’,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。

字符串

  • 字符串可以是SELECT 列表中的一个字符,数字,日期。

  • 日期和字符只能在单引号中出现。

  • 每当返回一行时,字符串被输出一次。

显示表结构

  • 使用DESCRIBE 命令,表示表结构
#进阶1:基础查询/*语法:
SELECT 要查询的东西
【FROM 表名】;
特点:
①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
②要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数
*/
USE myemployees;#1.查询表中的单个字段SELECTlast_name
FROMemployees;#2.查询表中的多个字段SELECTlast_name,salary,email
FROMemployees;#3.查询表中所有的字段
#方式一:SELECT`first_name`,`last_name`,`email`,`phone_number`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`,`hiredate`
FROMemployees;#方式二:SELECT*
FROMemployees;#4.查询常量值SELECT100;SELECT'john';#5.查询表达式SELECT100 % 98;#6.查询函数SELECTVERSION ();#7.起别名/*
①便于理解
②如果要查询的字段有重名的情况,使用别名可以区分开来
*/
#方式一 使用as:SELECT100 % 98 AS 结果;SELECTlast_name AS 姓,first_name AS 名
FROMemployees;#方式二 使用空格:SELECTlast_name 姓,first_name 名
FROMemployees;#案例:查询salary,显示结果为out putSELECTsalary "out put"
FROMemployees;#8.去重
#案例:查询员工表中涉及到的所有的部门编号SELECT DISTINCTdepartment_id
FROMemployees;#9.+的作用/*
仅仅只有一个功能:运算符
*/
#案例:查询员工名和姓连接成一个字段,并显示为 姓名SELECTCONCAT ('a', 'b', 'c') AS 结果;SELECTCONCAT (last_name, ' ', first_name) AS 姓名
FROMemployees;/*
测 试
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的结构,并查询其中的全部数据
5. 显示出表employees中的全部job_id(不能重复)
6. 显示出表employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT
*/
#3.SELECTemployee_id,last_name,salary * 12 "ANNUAL SALARY"
FROMemployees;#4.显示表departments的结构,并查询其中的全部数据DESC departments;SELECT*
FROMdepartments;#5.显示出表employees中的全部job_id(不能重复)SELECT DISTINCTjob_id
FROMemployees;#6.显示出表employees的全部列,各个列之间用逗号连接,列头显示成OUT_PUT
SELECTCONCAT (`first_name`,`last_name`,`job_id`,IFNULL (`commission_pct`, 0)) AS OUT_PUT
FROMemployees;

条件查询

过滤

  • 使用WHERE 子句,将不满足条件的行过滤掉。

  • WHERE 子句紧随FROM 子句。

BETWEEN

  • BETWEEN 运算来显示在一个区间内的值

IN
使用IN运算显示列表中的值。

LIKE

  • 使用LIKE 运算选择类似的值

  • 选择条件可以包含字符或数字:

  • % 代表零个或多个字符(任意个字符)。

  • _ 代表一个字符。

  • ‘%’和‘-’可以同时使用。

NULL

  • 使用IS (NOT) NULL 判断空值。

AND

  • AND要求并的关系为真。

OR

  • OR 要求或关系为真。
#条件查询:根据条件过滤原始表的数据,查询到想要的数据/*语法:select 要查询的字段|表达式|常量值|函数from 表where 条件 ;分类:一、条件表达式示例:salary>10000条件运算符:> < >= <= = != <>二、逻辑表达式示例:salary>10000 && salary<20000逻辑运算符:and(&&):两个条件如果同时成立,结果为true,否则为falseor(||):两个条件只要有一个成立,结果为true,否则为falsenot(!):如果条件成立,则not后为false,否则为true三、模糊查询示例:last_name like 'a%'likebetweeninis null	
*/
#一,按条件表达式筛选
#案例1:查询工资大于12000的员工信息SELECT*
FROMemployees
WHERE salary > 12000;#案例2:查询部门编号不等于90号的员工名和部门编号SELECTlast_name,department_id
FROMemployees
WHERE department_id <> 90;#二,按逻辑表达式筛选
#案例1:查询工资在10000-20000之间的员工名,工资以及奖金SELECTlast_name,salary,commission_pct
FROMemployees
WHERE salary >= 10000AND salary <= 20000;#案例2:查询部门编号不是在90-110之间,或者工资高于15000的员工信息SELECT*
FROMemployees
WHERE department_id < 90OR department_id > 110OR salary > 15000;#三,模糊查询/*
like
特点:
①一般和通配符搭配使用
通配符:
% 任意多个字符,包含0个字符
_ 任意单个字符
between
in
is null	
*/
#1.like
#案例1:查询员工名中包含字符a的员工信息SELECT*
FROMemployees
WHERE last_name LIKE '%a%';#案例2:查询员工名中第三个字符为e,第五个字符为a的员工名和工资SELECTlast_name,salary
FROMemployees
WHERE last_name LIKE '__n_l%';#案例3:查询员工名中第二个字符为_的员工名SELECTlast_name
FROMemployees #where last_name like '_\_%';WHERE last_name LIKE '_$_%' ESCAPE '$';# ESCAPE 指定'$' 为转义字符#2.between and/*
①使用between and 可以提高语言的简洁度
②包含临界值
③两个临界值不要调换顺序*/
#案例一:查询员工编号在110-120之间的员工信息SELECT*
FROMemployees
WHERE employee_id BETWEEN 110AND 120;#3.in/*
含义:判断某字段中的值是否属于in列表中的某一项
①使用in提高语句简洁句
②in列表的值类型必须统一或者兼容
③in列表中的值不支持通配符
*/
#案例一:查询员工的工种编号是IT_PROG,AD_VP,AD_PRES中的一个的员工名和工种编号SELECTlast_name,job_id
FROMemployees
WHERE job_id = 'IT_PROG'OR job_id = 'AD_VP'OR job_id = 'AD_PRES';SELECTlast_name,job_id
FROMemployees
WHERE job_id IN ('IT_PROG', 'AD_VP', 'AD_PRES');#4.is null/*
=或者<>不能用于判断null值
is null 或者 is not null 可以用于判断null值
*/
#案例一:查询没有奖金的员工名和奖金率SELECTlast_name,commission_pct
FROMemployees
WHERE commission_pct IS NULL;#案例二:查询有奖金的员工名和奖金率SELECTlast_name,commission_pct
FROMemployees
WHERE commission_pct IS NOT NULL;#安全等于: <=>
#案例一:查询没有奖金的员工名和奖金率SELECTlast_name,commission_pct
FROMemployees
WHERE commission_pct <=> NULL;#案例二:查询工资为12000的员工信息SELECT*
FROMemployees
WHERE salary <=> 12000;/*
is null: 仅仅可以判断null值,可读性较高,建议使用
<=>:既可以判断null,又可以判断普通的数值,可读性较低
*/

排序查询

ORDER BY子句

  • 使用ORDER BY 子句排序
    • ASC(ascend): 升序
    • DESC(descend): 降序
  • ORDER BY 子句在SELECT语句的结尾。
#排序查询/*
语法:select 查询列表from 表【where 筛选条件】order by 排序列表【asc|desc】
特点:1、asc代表的是升序,可以省略desc代表的是降序2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段3、order by子句在查询语句的最后面,除了limit子句*/
#案例1:查询员工信息,要求工资从高到低排序SELECT*
FROMemployees
ORDER BY salary DESC;#从低到高SELECT*
FROMemployees
ORDER BY salary ASC;#asc可以省略#案例2:查询部门编号>=90的员工信息,按入职时间的先后进行排序SELECT*
FROMemployees
WHERE department_id >= 90
ORDER BY hiredate ASC;#3、按表达式排序
#案例3:查询员工信息 按年薪降序SELECT*,salary * 12 * (1+ IFNULL (commission_pct, 0)) AS 年薪
FROMemployees
ORDER BY salary * 12 * (1+ IFNULL (commission_pct, 0)) DESC;#4、按别名排序
#案例4:查询员工信息 按年薪升序SELECT*,salary * 12 * (1+ IFNULL (commission_pct, 0)) AS 年薪
FROMemployees
ORDER BY 年薪 ASC;#5、按函数排序
#案例5:按姓名的长度显示员工的姓名和工资SELECTLENGTH (last_name) 姓名长度,last_name,salary
FROMemployees
ORDER BY LENGTH (last_name) DESC;#6、按多个字段排序
#案例:查询员工信息,要求先按工资升序,再按员工编号降序SELECT*
FROMemployees
ORDER BY salary ASC,employee_id DESC;

这篇关于Day69(MySQl语法规范,SQL的语言分类,查询,条件查询,排序查询)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/745735

相关文章

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

如何去写一手好SQL

MySQL性能 最大数据量 抛开数据量和并发数,谈性能都是耍流氓。MySQL没有限制单表最大记录数,它取决于操作系统对文件大小的限制。 《阿里巴巴Java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐分库分表。性能由综合因素决定,抛开业务复杂度,影响程度依次是硬件配置、MySQL配置、数据表设计、索引优化。500万这个值仅供参考,并非铁律。 博主曾经操作过超过4亿行数据

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

MySQL数据库宕机,启动不起来,教你一招搞定!

作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG、Mongodb数据库运维(如安装迁移,性能优化、故障应急处理等)公众号:老苏畅谈运维欢迎关注本人公众号,更多精彩与您分享。 MySQL数据库宕机,数据页损坏问题,启动不起来,该如何排查和解决,本文将为你说明具体的排查过程。 查看MySQL error日志 查看 MySQL error日志,排查哪个表(表空间

【数据结构】——原来排序算法搞懂这些就行,轻松拿捏

前言:快速排序的实现最重要的是找基准值,下面让我们来了解如何实现找基准值 基准值的注释:在快排的过程中,每一次我们要取一个元素作为枢纽值,以这个数字来将序列划分为两部分。 在此我们采用三数取中法,也就是取左端、中间、右端三个数,然后进行排序,将中间数作为枢纽值。 快速排序实现主框架: //快速排序 void QuickSort(int* arr, int left, int rig

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c