原文:SQL | SQL 必知必会笔记 (一 )
作者: PyStaData

基本概念

一些规则

  1. 多条 SQL 语句必须以分号分隔。
  2. SQL 不区分大小写,但一般习惯关键字用大写,列名和表名使用小写。
  3. 处理 SQL 语句时,所有空格都会被忽略。一般认为写成多行更容易维护。
  4. 选择多个列时,一定要在列名之间加上逗号,但最后一个列名不加。如果在最后一个列名加了逗号,会出现错误。
  5. SQL 一般返回原始的、无格式的数据。
  6. 第一个检索的行是第 0 行,而不是第 1 行。
  7. 并非所有 SQL 实现方式 都一样。虽然基本的语句容易移植,但是较复杂的语句会有区别。
  8. 检索出来的数据默认是不排序,会以其在底层表中出现的顺序显示。

检索数据

SQL 语句是由简单的英语单词构成的。这些单词称为 关键字,每个 SQL 语句都是由一个或多个关键字构成的。使用 SELECT 关键字检索表数据,必须给出想选择什么(SELECT)和从什么地方选择两条信息(FROM)。

选择单个列

SELECT prod_name
FROM Products;

处理 SQL 语句时,所有空格都会被忽略。下面三个例子可以实现同样的效果,一般认为写成多行更容易维护。

# 语法1
SELECT prod_name
FROM Products;# 语法2
SELECT prod_name FROM Products;# 语法3
SELECT
prod_name
FROM
Products;

检索多个列

SELECT prod_id, prod_name, prod_price
FROM Products;

检索所有列

SELECT *
FROM Products;

实际列名的位置使用星号(*)通配符可以选择所有列。除非实际需要检索所有的列,不然检索不需要的列或降低检索和应用程序的性能。

检索不同的值

SELECT vend_id
FROM Products;

使用 DISTINCT 关键字只返回不同的(唯一的)值。

SELECT DISTINCT vend_id
FROM Products;

DISTINCT 关键字作用于所有列,不仅仅是跟在其后那一列。比如 SELECT DISTINCT vend_id, prod_id, prod_price 因为指定的两列不完全相同,所以所有的行都会被检索出来。

限制结果

默认显示所有满足条件的行,可以只显示指定的行吗?**可以,但是在不同数据库实现方式不同。

在 SQL Server 和 Access 中使用 SELECT 时,可以使用 TOP 关键字来限制最多返回的行。

SELECT TOP 5 prod_name
FROM Products;

如果使用 DB2 :

SELECT prod_name
FROM Products
FETCH FIRST 5 ROWS ONLY;

如果使用 Oracle ,需要基于 ROWNUM(行计数器)来计算行:

SELECT prod_name
FROM Products
WHERE ROWNUM > 5;

如果使用 MySQL,MariaDB,PostgreSQL或者 SQLite,则需要使用 LIMIT 子句:

SELECT prod_name
FROM Products
LIMIT 5;

返回第 5 行起的第 5 行数据。第一个数字是检索的行数,第二个数字是指从哪儿开始。

SELECT prod_name
FROM Products
LIMIT 5 OFFSET 5;

MySQL、MariaDB 和 SQLite 支持简化版的 LIMIT 4 OFFSET 3 语句,即 LIMIT 3,4

使用注释

行注释 1:注释使用 --(两个连字符)嵌在行内。

SELECT prod_name --这是一条注释
FROM Products;

行注释 2:使用 #

# 这是一条注释
SELECT prod_name
FROM Products;

块注释:使用 /**/

/* SELECT prod_name, vend_id
FROM Products; */
SELECT prod_name
FROM Products; 

排序检索数据

本节讲授如何使用 SELECTORDER BY 子句,根据需要排序检索数据。

排序数据

SELECT prod_name
FROM Products
ORDER BY prod_name;/* ORDER BY prod_id;
也可以是非检索行排序*/

在指定一条 ORDER BY 子句时,应该保证它是 SELECT 语句中的最后一条子句。

按多列排序

SELECT prod_id, prod_name, prod_price
FROM Products;
ORDER BY prod_price, prod_name;

上面的语句,首先按照价格,然后按名称排序。

按列位置排序

除了能用列名排序顺序外,ORDER BY 还支持按相对列位置进行排序。

SELECT prod_id, prod_name, prod_name
FROM Products
ORDER BY 2,3; --,2,3表示清单中的列;表示先按prod_price,再按prod_name排序

指定排序方向

默认使用升序排序(从 A 到 Z),通过指定 DESC (DESCENDING) 关键字实现降序排序。可以通过 AESC (AESCENDING)升序排序,但实际没有多大用处,因为默认就是使用升序排序。

SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY prod_price DESC;

DESC 只应用到直接位于其前面的列名。如果想在多个列上降序排序,必须对每一列指定 DESC 关键字。

SELECT prod_id, prod_name, prod_price
FROM Products
ORDER BY prod_price DESC, prod_name;

区分大小写和排序数据?在对文本数据排序的时候,A 和 a 是一样的吗?这不是理论问题,取决于数据库的设置。

过滤数据

本节讲授使用 WHERE 关键字指定搜索条件。

使用 WHERE 句子

只检索所需数据指定搜索条件(search criteria),搜索条件也被称为过滤条件(fliter condition)。

SELECT prod_name, prod_price
FROM Products
#检索 prod_price 为 3.49 的行
WHRER prod_price = 3.49;

注意:在同时使用 ORDER BYWHERE 子句时,应该让 ORDER BY 位于 WHERE 之后。

WHERE 子句操作符

注意:<>!=通常可以互换。但是并非所有 DBMS 都支持这两种不等于操作符。比如,Microsoft Access 支持 <> 而不支持 !=

检查单个值与不匹配检查

SELECT prod_name, prod_price
FROM Products
WHERE prod_price <= 10;
# WHERE vend_id != 'DLL01';

范围值检查

SELECT prod_name, prod_price
FROM Products;
WHERE prod_price BEtween 5 AND 10;

空值检查

NULL 表示空值,确定是否空值,不能简单的 = NULLSELECT 语句有一个特殊的 WHERE 子句 IS NULL ,可用来检查具有 NULL 值的列。

SELECT prod_name
FROM Products
WHERE prod_price IS NULL;

sql 数据库前两列值乘_SQL | SQL 必知必会笔记 (一 )相关推荐

  1. sql 数据库前两列值乘_Sql语句常用关键字

    最近接触sql比较多,发现自己已经遗忘的也差不多,要用到的时候迟迟拿不出来,今天开始会在知乎上纪录一些sql语句学习的内容,内容重在说明查询语句的用法. 一.sql查询语句的初始介绍 1.查询语句的一 ...

  2. sql 数据库前两列值乘_SQL注入原理和方法汇总

    本文首发于先知社区 前言: SQL注入是web安全中最常见的攻击方式,SQL注入有很多方法,但如果只知道payload,不知道原理,感觉也很难掌握,这次就总结一下我所遇到的SQL注入方法,原理分析+题 ...

  3. sql 数据库前两列值乘_懂EXCEL就会SQL,从此查数不求人

    小白如何学习SQL语言? 大部分的文章都是先从意义原理开始讲,再讲环境搭建.还没看到怎么操作就放弃了. 大部分人学习SQL的需求是什么? 而且,大多数人的使用场景是数据库是现成的,这就不涉及数据库的安 ...

  4. sql 数据库前两列值乘_与开发battle有点虚?小白都能看懂的数据库知识来了

    文末领取[SQL面试题及答案] 随着近几年AI智能,大数据的发展,"产品经理是是否需要懂技术?""产品经理应该对技术理解到什么程度?"诸如此类的问题又再次出现在 ...

  5. sql 数据库前两列值乘_数据库的基本概念:

    数据库的相关概念: 数据-data: 1.描述事物的符号 2.多种表现形式:文本,图形,音频,视频. 数据库-Database,DB 1.粮库,车库 2.存放数据的仓库在计算机中,按照一定的格式存放, ...

  6. pandas计算dataframe两列数据值相等的行号、取出DataFrame中两列值相等的行号

    pandas计算dataframe两列数据值相等的行号.取出DataFrame中两列值相等的行号 目录 pandas计算dataframe两列数据值相等的行号.取出DataFrame中两列值相等的行号

  7. bootstrap table 怎么实现前两列固定冻结?

    $("#Table").bootstrapTable('destroy').bootstrapTable({pagination: true,//分页minimumCountCol ...

  8. excel冻结前两行或者冻结前两列

    1.冻结前两行 1)单元格选择第三行的第一个单元格. 2)选择冻结拆分窗格 2.冻结前两列 1)选择第3列的第一个单元格 2)选择冻结拆分窗格 3.冻结前两行和前两列 1)选择第3行和第3列的交叉的单 ...

  9. asp sql ip地址排序_SQL必知必会读书笔记,30分钟入门SQL!

    点击上方SQL数据库开发,关注获取SQL视频教程 SQL专栏 SQL数据库基础知识汇总 SQL数据库高级知识汇总 来源:https://segmentfault.com/p/1210000011760 ...

最新文章

  1. LeetCode简单题之分发饼干
  2. 中文NLP的分词真有必要吗?李纪为团队四项任务评测一探究竟 | ACL 2019
  3. ResNeSt之语义分割,ADE20K全新SoTA 47.6%
  4. 《科学美国人》:美国应保持太空、网络、生物领域的科技优势
  5. 话里话外:信息整合之障
  6. ups计算软件_ups不间断电源系统分类及作用
  7. 苹果手机怎么编辑word文档_可以一键导入word图文的微信编辑软件有什么?编辑器怎么使用?...
  8. 华为、苹果、谷歌高调宣布要造车!瞄准19万亿美元的智能汽车市场!
  9. 在MAC上安装mysql
  10. 拿来就能跑,1200多套微信小程序源码-史上最全的不同行业的源码集合
  11. Silverlight载入动画(简易)
  12. python判断邮箱格式是否正确_python:校验邮箱格式
  13. 邮件群发平台_群发开发信不进垃圾箱的技巧
  14. 中国居民身份证号码验证
  15. 对校招生培养工作的建议_贵单位对我校学生培养工作有何建议
  16. windowsMobile 注册表136个操作
  17. 开源免费录屏和直播软件OBS Studio教程(01)
  18. Unity3D说明文档翻译-Preferences
  19. A - Multiplication Dilemma (思维)( 2018 ACM ICPC Arabella Collegiate Programming Contest)
  20. 文件流,gzip解压,压缩

热门文章

  1. centos虚拟机调皮了
  2. javascript ClientId用法
  3. 分布式分布式框架相关解析
  4. VarianceDeviation Tradeoff(方差、偏差权衡)
  5. 如何找回mysql密码
  6. jq实现多开关效果互不影响
  7. 【Java】基础知识-JAXP解析XML(一)
  8. C++ 多个指针指向同一个对象
  9. python速度比较_列表与元组的速度比较
  10. 人工智能,大数据,深度学习,机器学习(百度云581G学习资料免费分享)