当前位置: 首页 > news >正文

【MySQL】第二章 基本的SELECT语句

一,SQL的概述

(1)SQL的背景知识

SQLStructured Query Language,结构化查询语言)是使用关系模型的数据库应用语言, 与数据直 接打交道 ,由 IBM 上世纪70年代开发出来。后由美国国家标准局(ANSI)开始着手制定SQL标准, 先后有 SQL-86 SQL-89 SQL-92 SQL-99 等标准
在不同的软件上编写SQL是不一样的,比如Oracle和MySQL里面一些语句是一样的,因为所有的语言都是要按照SQL规范的去制定的,但是除此之外,它们还有自己的特殊的语言

二,SQL的分类

SQL的语言分类主要分为以下3个大类
(1)  DDL:数据定义语言
CREATE \ ALTER \ DROP \ RENAME \ TRUNCATE

(2)  DML:数据操作语言
INSERT \ DELETE \ UPDATE \ SELECT (重中之重)

(3)  DCL:数据控制语言
COMMIT \ ROLLBACK \ SAVEPOINT \ GRANT \ REVOKE

查询语句使用的非常的频繁,所以很多人把查询语句单拎出来一类:DQL(数据查询语言)。
还有单独将 COMMIT ROLLBACK 取出来称为TCL Transaction Control Language,事务控制语言)。

三,SQL语言的规则和规范

(1)  SQL的符号和指令书写

1.  SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
        每条命令行以 ;
\g \G 结束(这个是在cmd上可以,在SQLyog不可以)
        关键字不能被缩写也不能分行

2.  关于标点符号(超级简单不需要记忆)
        必须保证所有的()、单引号、双引号是成对结束的
        必须使用英文状态下的半角输入方式
        字符串型和日期时间类型的数据可以使用单引号(' ')表示
        列的别名,尽量使用双引号(" "),而且不建议省略as

(2)  SQL的大小写书写

MySQL的书写在Window环境下大小写是不敏感的
MySQL的书写在Linux环境下大小写是敏感的
        数据库名、表名、表的别名、变量名是严格区分大小写的
        关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的。
推荐采用统一的书写规范:
        数据库名、表名、表别名、字段名、字段别名等都小写
        SQL 关键字、函数名、绑定变量等都大写

(3)  注释

单行注释:#注释文字(MySQL特有的方式)
单行注释:-- 注释文字(--后面必须包含一个空格。)
多行注释:/* 注释文字 */

这里的命名规则后面会进行讲解,因为这里也用不到

(4)  数据的导入

数据导入分为两种方法
方法1:在命令行cmd上运用source指令
方法2:在可视化软件上面利用对应的功能

方法1演示:
source指令:source + 文件的完整路径

在命令行下输入对应的指令,就比如这里的source E:\atguigudb.sql,然后后面就会将数据库导入进去

方法2演示:

这里以SQLyog为例子,就是点击执行SQL脚本,然后输入你的文件的位置就可以,然后就可以导入了

导入成功不妨可以查询一下是否导入成功

不难看到这个数据库导入成功了

四,基本的SELECT语句

(1)  SELECT...

示例代码

SELECT 1, 1*9

看到运行结果,可以看到就是得出一行常数

(2)  SLECET...FROM...

语法:
SELECT 标识选择哪些列
FROM 标识从哪个表中选择

示例代码:选择全部列

SELECT *
FROM departments;
一般情况下,除非需要使用表中所有的字段数据,最好不要使用通配符‘*’。使用通配符虽然可以节
省输入查询语句的时间,但是获取不需要的列数据通常会降低查询和所使用的应用程序的效率。通
配符的优势是,当不知道所需要的列的名称时,可以通过它获取它们。
在生产环境下,不推荐你直接使用 SELECT * 进行查询
推荐使用选取特定行
SELECT first_name, email FROM employees;


(3)  列的别名

三种起列的别名的方法

#6. 列的别名
# 1. 直接空格
# 2. as:全称:alias(别名),可以省略
# 3. 列的别名可以使用一对""引起来,不要使用''。
SELECT employee_id emp_id,last_name AS lname,department_id "部门id",salary * 12 AS "annual sal"
FROM employees;


双引号一般用到如果别名有空格的时候使用
AS是增加可读性质的
虽然这里的" " 写成 ' ' 在MySQL不会报错,但是根据ANSI规定,是' ' 用来表示字符串的," " 是用来起别名的,在Oracle中弄混会报错,MySQL不严谨,所以为此养成好的习惯

(4)  去除重复行

示例代码:

SELECT department_id
FROM employees;

不难看到这里出现了很多重复的10或者20,这个时候需求是看这个id是由哪几种的话,那么就需要进行筛选,要用DISTINCT

SELECT语句中使用关键字DISTINCT去除重复行
SELECT DISTINCT department_id
FROM employees;

这样就可以去除重复行了

坑区:当写了两个在字符串内会发生什么

SELECT DISTINCT department_id,salary
FROM employees;

这个时候,会将两者结合起来,找到不同的,就是组合找到所有不同的数据展示出来

(5)  空值进行计算

#8. 空值参与运算
# 1. 空值:null
# 2. null不等同于0,'','null'
SELECT * FROM employees;#3. 空值参与运算:结果一定也为空。
SELECT employee_id,salary "月工资",salary * (1 + commission_pct) * 12 "年工资",commission_pct
FROM employees;
#实际问题的解决方案:引入IFNULL
SELECT employee_id,salary "月工资",salary * (1 + IFNULL(commission_pct,0)) * 12 "年工资",commission_pct
FROM `employees`;

直接运用空值进行运算的话,那么就会导致全NULL的情况

这个时候就要引入IFNULL了

(6)  着重号

如果当窝们的数据库的表的名字与关键冲突了,虽然不推荐命名与关键字冲突,但是如果坚决要用,就要使用着重号``

SELECT * FROM ORDER;
SELECT * FROM `ORDER`;

五,显示表的结构

使用DESCRIBE DESC 命令,表示表结构

运用此关键字可以看到表结构

过滤
语法:

SELECT 字段1,字段2
FROM 表名
WHERE 过滤条件

示例代码:

SELECT first_name, email
FROM employees
WHERE first_name = 'Steven';

不难看到这里的数据被过滤了

六,总结

http://www.dtcms.com/a/495307.html

相关文章:

  • Linux中软中断tasklet任务队列初始化
  • 网站制作的重要流程世界优秀摄影作品网站
  • 技术剖析:智能体工作流与RPA流程自动化的架构差异与融合实现
  • 深圳比斯特自动化|圆柱电池测试设备核心功能与技术发展解析
  • 【软考备考】系统架构设计需要考虑的因素 性能 、安全、成本、可维护性详解知识点五
  • 面试反馈 Spring Cloud 的25连环炮
  • 第八篇: `lsmod`, `modinfo`, `modprobe` - 深入内核模块
  • aspx网站服务器失去响应天工网工程新希望官网
  • 网站服务器要多少钱【邯郸网络推广公司|邯郸网络营销公司】
  • 做网站用什么域名比较好找公司开发网站
  • 【Python】求解GPS未知及高斯噪声
  • Linux 教程:如何查找服务器中的大文件
  • 计算机网络基础篇——应用层
  • 2025年主流外贸管理软件深度测评和选型策略咨询报告
  • 玩Android Harmony next版,通过项目了解harmony项目快速搭建开发
  • 公司免费网站域名申请免费网址
  • 华为鲲鹏 Aarch64 环境下多 Oracle 数据库汇聚操作指南 CMP(类 Cloudera CDP 7.3)
  • Chromedriver放项目里就行!Selenium 3 和 4 指定路径方法对比 + 兼容写法
  • Spring Boot 项目, idea 控制台日志设置彩色
  • wap网站建设好不好百度小程序官方收费标准
  • Go语言数据竞争Data Race 问题怎么检测?怎么解决?
  • 作为项目经理,如何做好项目复盘?
  • 网站建设百度不通过杭州建站模板系统
  • A函数里调用B函数 ,且往B函数里传了个二级指针,并在B返回后,释放该指针
  • 茶社网站开发与设计的开题报告自适应网站好建们
  • 做拍福利爱福利视频网站网站建设与维护实训
  • LangGraph学习笔记(一):langgraph安装
  • DFS算法原理及其模板
  • 【小程序】微信小程序点击效果(view、button、navigator)
  • 快速上手 Scrapy:5 分钟创建一个可扩展的爬虫项目