第03章 基本的SELECT语句

news/2025/3/17 22:42:15/文章来源:https://www.cnblogs.com/kokoa/p/18777927

第03章 基本的SELECT语句

1. SQL概述

1.1 SQL背景知识

  • SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言。
  • SQL有两个重要的标准:SQL92和SQL99。

1.2 SQL分类

  • DDL(Data Definition Languages):定义数据库对象,这些语句定义了不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
    • CREATEDROP、ALTER`。
  • DML(Data Manipulation Language):操作数据库记录,,用于添加、删除、更新和查询数据库记 录,并检查数据完整性。
    • INSERTDELETEUPDATESELECT
  • DCL(Data Control Language):定义访问权限和安全级别,用于定义数据库、表、字段、用户的访问权限和 安全级别。
    • 如``GRANTREVOKECOMMIT ROLLBACKSAVEPOINT` 。

2. SQL语言的规则与规范

2.1 SQL书写规范

  • SQL可以写在一行或多行,建议各子句分行写。
  • 每条命令以;结束或\g\G结束。
  • 关键字不能缩写或分行。
  • 关于标点符号
    • 必须保证所有的()、单引号、双引号是成对结束的
    • 必须使用英文状态下的半角输入方式
    • 字符串型和日期时间类型的数据可以使用单引号(' ')表示
    • 列的别名,尽量使用双引号(" "),而且不建议省略as

2.2 SQL大小写规范

  • MySQL在Windows环境下大小写不敏感,在Linux环境下大小写敏感。
  • 推荐规范:数据库名、表名、字段名等小写,SQL关键字、函数名等大写。

2.3 注释

  • 单行注释:# 注释文字-- 注释文字(--后必须有一个空格)。
  • 多行注释:/* 注释文字 */

2.4 命名规则

  • 数据库、表名不得超过30个字符,变量名限制为29个
  • 必须只能包含 A–Z, a–z, 0–9, _共63个字符
  • 数据库名、表名、字段名等对象名中间不要包含空格
  • 同一个MySQL软件中,数据库不能同名;同一个库中,表不能重名;同一个表中,字段不能重名
  • 必须保证你的字段没有和保留字、数据库系统或常用方法冲突。如果坚持使用,请在SQL语句中使 用`(着重号)引起来
  • 保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据 类型在一个表里是整数,那在另一个表里可就别变成字符型了

2.5 数据导入指令

  • 在命令行客户端登录mysql,使用source指令导入:

    mysql> source d:\mysqldb.sql;
    

3. 基本的SELECT语句

3.0 SELECT...

  • 最简单的SELECT语句:

    SELECT 1;
    SELECT 9/2;
    

3.1 SELECT ... FROM

  • 选择全部列:

    SELECT * FROM departments;
    
  • 选择特定列:

    SELECT department_id, location_id FROM departments;
    

3.2 列的别名

  • 重命名一个列

  • 便于计算

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

  • AS 可以省略

  • 建议别名简短,见名知意

  • 举例

    SELECT last_name AS name, commission_pct comm FROM employees;
    
  • 别名可以使用双引号,包含空格或特殊字符:

    SELECT last_name "Name", salary*12 "Annual Salary" FROM employees;
    

3.3 去除重复行

  • 使用DISTINCT去除重复行:

    SELECT DISTINCT department_id FROM employees;
    

3.4 空值参与运算

  • 空值参与运算结果为NULL:

    SELECT employee_id, salary, commission_pct, 12 * salary * (1 + commission_pct) "annual_sal" FROM employees;
    

这里你一定要注意,在 MySQL 里面, 空值不等于空字符串。一个空字符串的长度是 0,而一个空值的长 度是空。而且,在 MySQL 里面,空值是占用空间的。

3.5 着重号

  • 使用着重号避免与保留字冲突:

    SELECT * FROM `order`;
    

结论 我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,请在 SQL语句中使用一对``(着重号)引起来。

3.6 查询常数

  • 查询常数:

SELECT 查询还可以对常数进行查询。对的,就是在 SELECT 查询结果中增加一列固定的常数列。这列的 取值是我们指定的,而不是从数据表中动态取出的。 你可能会问为什么我们还要对常数进行查询呢? SQL 中的 SELECT 语法的确提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个 固定的常数列,但如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数。 比如说,我们想对 employees 数据表中的员工姓名进行查询,同时增加一列字段 corporation ,这个 字段固定值为“尚硅谷”,可以这样写:

SELECT '尚硅谷' as corporation, last_name FROM employees;

4. 显示表结构

  • 使用DESCRIBEDESC显示表结构:

    DESCRIBE employees;
    DESC employees;
    

其中,各个字段的含义分别解释如下:

Field:表示字段名称。

Type:表示字段类型,这里 barcode、goodsname 是文本型的,price 是整数类型的。

Null:表示该列是否可以存储NULL值。

Key:表示该列是否已编制索引。

PRI表示该列是表主键的一部分;

UNI表示该列是UNIQUE索引的一 部分;

MUL表示在列中某个给定值允许出现多次。

Default:表示该列是否有默认值,如果有,那么值是多少。

Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

5. 过滤数据

5.1 WHERE子句

  • 使用WHERE子句过滤数据:

    SELECT employee_id, last_name, job_id, department_id FROM employees WHERE department_id = 90;
    

注:学习MySQL时的笔记,笔记来源是尚硅谷的课件

  • 学习的视频:14-最基本的SELECT...FROM结构_哔哩哔哩_bilibili

  • 课件整理:deepseek

  • [MySQL基础课件笔记目录]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/900640.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer(自然语言处理)笔记

Transerformer架构(自然语言处理) 尝试学习和从零构建一个大语言模型就目前我的认知 Transformer架构主要分为编码器、解码器、词表、训练集、训练算法(T5) 编码器(Encoder) Encoder主要负责将输入转换为计算机能够理解的内容(也就是词表中的向量词元) 解码器(Decoder) 将词…

20241101 实验一《Python程序设计》实验报告”

20241101 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级:2411 姓名:苏萱 学号:20241101 实验教师:王志强 实验日期:2025.3.12 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能;(编写书中的程序,并进行…

Android 12 启用USAP

USAP是安卓10起携带的一个用来加快应用冷启动速度的功能。正常的情况下,你只需要设置属性persist.device_config.runtime_native.usap_pool_enabled为true即可启用该功能。 但是可能是因为这个功能默认是不开的,实际上Android 12有BUG导致功能不生效,谷歌也没人发现。 实际使…

高铁站智能监控预警系统

高铁站智能监控预警系统实时检测高铁出站口人员逆行预警,提示管理者及时阻止,可降低火车站安全事故。在出站口梯部署科缔欧AI智能分析识别预警摄像机,获取出站及附近的画面,摄像机集成算法,分析旅客逆行等各类事件,将原始数据和算法产生的分析数据传输至后台。当有旅客从…

第1个必会服务-定时任务

1.定时任务注意事项(箴言) 1.1.增加注释 书写定时任务的时候,尽量添加上一个注释. 用于说明这条定时任务作用. 1.2.尽量使用脚本 定时任务未来避免一些故障,推荐使用脚本.调试脚本的方法: sh -x 或bash -x ,显示脚本执行过程. 有+开头的表示脚本背后执行的过程. 如果开头没有+,…

攻防世界 level2 WriteUp

WriteUp 题目信息 来源:攻防世界 名称:level2 分类:Pwn 描述:菜鸡请教大神如何获得flag,大神告诉他‘使用面向返回的编程(ROP)就可以了’题目链接: https://adworld.xctf.org.cn/challenges/list解题思路 首先使用DIE对文件进行查壳,发现这是一个无壳的32位ELF文件。所以…

4、常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。 常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 常量可以直接在代码中使用,也可以通过…

【视频讲解】R语言逐步回归模型对电影票房、放映场数、观影人数预测可视化

全文链接:https://tecdat.cn/?p=34335 原文出处:拓端数据部落公众号 分析师:Junjie Tan讲解|R语言回归模型分析电影票房影响因素本文通过利用回归模型帮助客户对电影的票房数据(以及放映场数,观影人数)进行了研究,确定了决定电影的票房的重要因素。并讲述、论证了预测电…

实现使用vue3完成后台管理系统的基础页面搭建

<template><div><!-- 头部开始 --><div style="height: 60px; background-color: #8686e0; display: flex; align-items: center"><div style="width: 200px; display: flex; align-items: center; padding-left: 15px"><…

pytthon的基本运用(8)——模块

一、模块的介绍 (1)python模块,是一个python文件,以一个.py文件,包含了python对象定义和pyhton语句 (2)python对象定义和python语句 (3)模块让你能够有逻辑地组织你的python代码段。 (4)把相关的代码分配到一个模块里能让你的代码更好用,更易懂 (5)模块能定义函数…

服务器跑实验

项目名称——基于机器学习与深度学习的贷款批准预测 项目来源:和鲸社区https://www.heywhale.com/mw/project/670f61d10ebb9f7a69c5144c 项目数据集:有两个【上传不了博客】大概长这个样:数据说明:实验环境:tensorflow、shap 实验结果:实验过程以及遇到的问题和解决方案:…