MySQL学习笔记——基础篇:SELECT语句、运算符、排序与分页

目录

一、SQL语句的基本规则

二、基本的SELECT语句与用法

1、基本的SELECT用法

2、列的别名

3、去除重复行

4、空值运算

5、着重号

6、显示表结构

 7、 使用 WHERE 过滤数据

三、运算符的使用

1.算术运算符

2.比较运算符

3.逻辑运算符

4、补充

四、数据的排序以及分页

1、排序规则

2、数据的分页


一、SQL语句的基本规则

 

       SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进

        每条命令以 ; 或 \g 或 \G 结束(可不写)

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

  • 关于标点符号(此为重点

    • 必须保证所有的()、单引号、双引号是成对结束的

    • 必须使用英文状态下的半角输入方式

    • 字符串型和日期时间类型的数据可以使用单引号(' ')表示

    • 列的别名,尽量使用双引号(" "),而且不建议省略as

二、基本的SELECT语句与用法

1、基本的SELECT用法

语法:

SELECT //识别列
FROM //选择表

识别全部列

SELECT * FROM DUAL //DUAL为伪表 具体可为要查询的表。 * 通配了所有列

2、列的别名

由于一个列名太长,我们可以使用列的别名来简化列名。

重命名的方式

1、直接在列名的后面空格后输入列的别名。例如

SELECT last_name ln
FROM employee; //此时 ln 即为列的别名

弊端 使用空格可能会让人看漏看花,个人不推荐用此方式。

2、在列名的后面使用关键词 AS.例如

SELECT last_name AS ln
FROM employee; //此时 ln 即为列的别名

使用AS可以让读者明确使用了列别名,此为正规方式,推荐使用

3、在列名后接空格后在双引号内写,例如

SELECT first_name, last_name "last name"
FROM employee; //此时 "last name" 即为列last_name的别名

优点:当遇到列名需要空格时可使用该方式,其余命名方式均不可实现空格命名。 但在实际操作中不推荐使用空格命名此行为将影响可读性及其后续代码使用。当需要空格时可用下划线代替。

3、去除重复行

在默认情况下,查询将返回所有行。

当需要去重时可在列前加上关键字 DISTINCT

SELECT DISTINCT person_age
FROM person;  //去除了重复年龄

这里有两点需要注意:

  1. DISTINCT 需要放到所有列名的前面

  2. DISTINCT 其实是对后面所有列名的组合进行去重

4、空值运算

所有运算符或列值遇到null值,运算的结果都为null

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

5、着重号

当你遇到关键字作为名字参与运算时 应使用 `order`的方式 例如

SELECT `order`
FROM all_order; // order与关键字ORDER重合 故需使用着重号

为什么?

在win 与macOS的 环境中大小写是不敏感的 所以即便你输入的是 order 在代码实际运行时会被解读为 ORDER ,但这并不代表我们可以随意更改大小写。我们应采用规范的书写方式。

如下:

数据库名、表名、表别名、字段名、字段别名等都小写

SQL 关键字、函数名、绑定变量等都大写

6、显示表结构

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

DESCRIBE employees;
或
DESC employees;

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

  • Field:表示字段名称。

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

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

  • Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。

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

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

 7、 使用 WHERE 过滤数据

 语法:

SELECT 字段
FROM 表
WHERE 条件;

注意 WHERE 语句紧随FROM语句,在任何情况下都是如此。

说明、在数据库进行查询时

1.访问from 后面的表,

2.根据where对表进行检索,此时检索出来的表依然是完全表,

3.运行SELECT语句对表筛选列,将列返回到用户页面中。

故将where放置其它位置将导致程序报错。

举例:

SELECT employee_id,  department_id
FROM   employees
WHERE  department_id >= 90 ;

三、运算符的使用

1.算术运算符

算术运算符用于数学运算 有基本的 加+  减-  乘*  除/  四则运算,外加 取模%运算 

额外: 除法可使用关键字 DIV 代替 ,取模可使用关键字 MOD 代替。

特点

1.在MySQL中+只表示数值相加。如果遇到非数值类型,先尝试转成数值,如果转失败,就按0计算。(补充:MySQL中字符串拼接要使用字符串函数CONCAT()实现)

2.在MySQL中,一个数除以0为NULL。

其余运算法则逻辑与正常逻辑基本一致。

2.比较运算符

由于是学习笔记,我只选择重点说明

1.安全等于运算符 <=>

由于在sql语言中 null会使任何计算值为null 即 123 = null 的返回值不是期望中的0 而是null;

这使得对null的判断不能用一般的 = 进行,故引出 <=>。

在两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL。

2.不等于运算符

不等于运算符(<>和!=)用于判断两边的数字、字符串或者表达式的值是否不相等,如果不相等则返回1,相等则返回0。不等于运算符不能判断NULL值。如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL

3.非符号比较符

除正常符号比较符外,sql还有非符号比较符,同样选择性笔记。

最小值运算符 语法格式为:LEAST(值1,值2,...,值n)。其中,“值n”表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。

最大值运算符 语法格式为:GREATEST(值1,值2,...,值n)。其中,n表示参数列表中有n个值。当有两个或多个参数时,返回值为最大值。假如任意一个自变量为NULL,则GREATEST()的返回值为NULL。

IN运算符 IN运算符用于判断给定的值是否是IN列表中的一个值,如果是则返回1,否则返回0。如果给定的值为NULL,或者IN列表中存在NULL,则结果为NULL。

举例

SELECT employee_id, last_name, salary, manager_id
FROM   employees
WHERE  manager_id IN (100, 101, 201);

3.逻辑运算符

逻辑非(NOT或!)、逻辑与(AND或&&)、逻辑或(OR或||)、逻辑异或(XOR)

逻辑异或运算符 逻辑异或(XOR)运算符是当给定的值中任意一个值为NULL时,则返回NULL;如果两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1。

注意:

OR可以和AND一起使用,但是在使用时要注意两者的优先级,由于AND的优先级高于OR,因此先对AND两边的操作数进行操作,再与OR中的操作数结合。

4、补充

其余还有位运算以及正则表达式,位运算与正则使用较少且理解不深、如有后续学习再进行补充。

四、数据的排序以及分页

1、排序规则

  • 使用 ORDER BY 子句排序

    • ASC(ascend): 升序

    • DESC(descend):降序

  • ORDER BY 子句在SELECT语句的结尾。

排序可分为单列排序和多列排序。

单列排序例子:

SELECT   last_name, job_id, department_id, hire_date
FROM     employees
ORDER BY hire_date DESC ;

多列排序例子:

SELECT last_name, department_id, salary
FROM   employees
ORDER BY department_id, salary DESC;

补充

  • 可以使用不在SELECT列表中的列排序。

  • 在对多列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。如果第一列数据中所有值都是唯一的,将不再对第二列进行排序。

2、数据的分页

    MySQL中使用 LIMIT 实现分页

LIMIT [位置偏移量,] 行数

第一个“位置偏移量”参数指示MySQL从哪一行开始显示,是一个可选参数,如果不指定“位置偏移量”,将会从表中的第一条记录开始(第一条记录的位置偏移量是0,第二条记录的位置偏移量是1,以此类推);第二个参数“行数”指示返回的记录条数。

例子:

--前10条记录:
SELECT * FROM 表名 LIMIT 0,10;
或者
SELECT * FROM 表名 LIMIT 10;

--第11至20条记录:
SELECT * FROM 表名 LIMIT 10,10;

--第21至30条记录: 
SELECT * FROM 表名 LIMIT 20,10;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值