最近在b站学习sql,在这里做笔记。感兴趣的同学可以一起学习呀~

1. 基本介绍

sql_store是一个数据库,而customers是数据库中的一个表格

1.1 如何选择一个数据库

最简单的操作就是双击图中的数据库,另一种方式是输入命令:

use sql_store;

注:显示为粗体的数据库为当前选定的数据库;输入命令调用数据库需要用“;”结束命令。

1.2 如何选择一个表格

在选定数据库后,需要选择特定的表格:

(1)选择表格所有的列

selcet *
from customers

(2)选择表格特定的列

例如,选择客户的id以及姓氏的两列:

select customer_id, first_name
from customers

1.3 如何选定特定条件的行

在选定表格之后,选择客户id为1的行:

where customer_id = 1

1.4 如何排序

例如,选定表格后,按照姓氏排序

order by first_name

1.5 如何写注释

只需要"-- "

-- where customer_id = 1

1.6 语法顺序

select *
from customers
where customer_id = 1
order by first_name

最好的逻辑顺序是select-from-where-order by

注:上述四行命令可以写成一行,只需要用空格隔开,但分成四行更清晰直观


2. select语句

select语句是用于调用所选表格的特定的列,因为数据库的数据可能成千上万,如果我们调用无关的列,将会浪费运行的时间和空间。

2.1 命令行排序决定输出的排序

例如:

select first_name, last_name, points
from customers

返回结果如下

若将姓氏与名字调换顺序,则

select last_name, first_name, points
from customers

返回结果如下

2.2 对列进行算术运算

例如我们需要得到“用户积分×10+100”的列

select last_name, first_name, points,points * 10 + 100
from customers

结果如下

注:选择的四列也可写成一行

(1)加减乘除基本运算

select last_name, first_name, points,points + 10,points - 10,points * 10,points / 10,points % 10
from customers

(2)运算顺序

对列进行算术运算,优先进行乘除,再进行加减。但我们可以用括号改变运算顺序

select points,(points + 10) * 100
from customers

2.3 为新的列命名

上述产生的新的列的列名没有表达明确的意义,我们可以为新列重新命名

select last_name,first_name,points,(points + 10) * 100 as discount_factor
from customers

“as”语法可以为新的列命名,结果如下

如果我们希望列名中包含空格,我们可以用如下的命令

select last_name,first_name,points,(points + 10) * 100 as 'discount factor'
from customers

结果如下

2.4 显示一列中不同值

例如客户来自不同的州,我们想要知道哪些州有我们的客户,即不查看重复值。

我们发现有重复的州

select state
from customers

我们想要查看非重复的,只需要加入“distinct”语法

select distinct state
from customers

2.5 小结

在select语句中, 我们可以:

(1)用 * 来选择所有的列,

(2)输入列名选择特定的列,

(3)运用算术运算获得新的列,

(4)用 as 给列重新命名,

(5)用distinct获得无重复值的结果。

【小练习】

选择products表格中的产品的名字单位价格以及新的价格,新的价格需要自己创建,它是单位价格的1.1倍。

答案可以在评论区查看噢~


3. where语句

where语句是用于调用满足特定条件的行,在这一节的例子中我们仍旧采用sql_store的数据库中customers表格的数据。

以下是常用的符号

如果所需要筛选的条件是字符串,需要用引号括起来。

例如,我们需要调取生活在弗吉尼亚州的客户的所有数据:

select *
from customers
where state = 'VA'

注:使用小写的va也是可以的

如果所需要筛选的条件是日期,也是只需要用引号括起来。

例如,我们需要调取1990年及以后出生的客户的所有数据:

select *
from customers
where birth_date > '1990-01-01'

3.1. and,or以及not语句

如果我们调用满足多种条件的数据,我们需要使用逻辑运算符号and,or和not。

select *
from customers
where birth_date > '1990-01-01' or points > 1000 and state = 'VA'

请问最后一行代码是筛选出生于1990年及以后或积分大于1000的客户,且在满足前面两种情况的同时,必须满足顾客生活在弗吉尼亚州;还是筛选出生于1990年及以后的顾客或积分大于1000且生活在弗吉尼亚州的顾客呢?

答案是后者,因为and运算符号具有更高的优先级。虽然如此,但加上括号可以使得命令更清晰明。

3.2 in语句

如果我们需要找生活中特定几个州的顾客,运用上一节的知识,我们可以这样写:

select *
from customers
where state = 'VA' or state = 'GA' or state = 'FL'

但是我们不能写成如下形式:

select *
from customers
where state = 'VA' or 'GA' or  'FL'

or语句只能并列多个条件,而‘GA’和‘FL’只是字符串,state = ‘VA’则是一个布尔值,因此这行命令是错误的。

如果or语句并列的条件是对于同一列的值进行判断,则可以用in语句来简化命令:

select *
from customers
where state in ('VA','FL','GA')

我们可以对in语句使用not逻辑运算:

select *
from customers
where state not in ('VA','FL','GA')

3.3 between语句

当我们需要调用积分在1000到3000的顾客的信息,我们可以使用and逻辑运算符号:

select *
from customers
where points >= 1000 and points <= 3000

当我们需要选取一定范围内的数值时,我们可以用between来简化命令:

select *
from customers
where points between 1000 and 3000

【小练习】

我们需要调用出生日期在1990年至2000年之间的顾客的信息。

3.4 like语句

当我们想要调用具有特定字符串的顾客的信息时,我们可以用like语句。

例如,我们需要调用姓氏以b开头的客户:

select *
from customers
where last_name like 'b%'

注:b可以用多个字符串代替,如abc;数字也可以使用,当然是对于电话号码之类的

%-代表多个字符串

_-代表一个字符串

3.5 regexp语句

like的使用范围有限,类似于python中的正则表达式,在mysql中也有类似的正则表达式。

like语句 Regexp语句
'b%' '^b'
'%b' 'b$'
'%b%' 'b'

正则表达式对于满足多种条件的查询非常方便。

例如:

select *
from customers
where last_name regexp 'field|mac|rose'

虽然这并不是正则表达的所有内容,但是以上语法足够适用于日常生活。

【小练习】

  • 选择用户的名字含有ELKA或者AMBUR的
  • 选择用户的姓氏以EY或者ON结尾的
  • 选择用户的姓氏以MY开始或者包含SE的
  • 选择用户的姓氏包含BR或者BU的

3.6 is null语句

查询某列值为空值的行

select *
from customers
-- 查询电话信息为空的行
where phone is null
-- 不为空值则使用
where phone is not null
-- 注:这两行命令只能执行其中一个,否则报错

3.7 小结

注:日期和字符串一样,引用时需要用括号括起来,但是在筛选日期区间时,与数字区间一样使用between语句。


4. order by语句

4.1 查看排序的依据

目前顾客表格customers是根据customer_id排序的

怎么知道是按照customer_id排序的呢?

我们可以点击左栏中小工具图标后,出现以下内容

列名中有黄色标志的列为默认排序所依据的列,一般此类列具有可识别性,例如你的学号,在学校不会有人与你的学号重复,那么我们就可以用学号来代替每一个人并且不会一个学号对应两个人的情况。

如果我们希望表格按名字字母排序:

select *
from customers
order by first_name
-- 注:一定要选择数据库,类似于use sql_store

4.2 倒序

如果我们希望按名字字母倒序排序(若数字,则变成从大到小)

order by first_name desc

4.3 多重排序

若要进行多重排序,则按照顺序依次写在order by后面:

order by state desc, first_name desc

该命令指:先根据state的倒叙排序,在state相同的情况下再根据first_name的倒叙排序

4.4 所选择的列与排序所依据的列的关系

即使我们所选择的列中并不包含排序依据的列,但也是行得通的

-- 按照州的名称排序后选择city的信息
select city
from customers
order by state

我们也可以根据新建的列进行排序

-- 根据新建的列排序,再根据first_name
select first_name, 10 as points
from customers
order by points, first_name

一种简便的排序方式

select birth_date, first_name, last_name, 10 as points
from customers
order by 1, 2

该命令会根据所选的第一列和第二列依次进行排序,但这种排序的缺点是如果所选的列的先后顺序改变,则排序规则也会改变

注:select *也可以使用这种简便的方法噢。

4.5 根据运算结果排序

我们可以根据列表进行运算后的结果排序

对于order_items表格,如果我们需要对order_id为2的订单根据总价格(列表中没有)从低到高排序。

select *
from order_items
where order_id = 2
order by quantity * unit_price desc

4.6 小结


5. limit语句

之前我们学习的都是根据列的信息进行筛选,如果我们需要选择特定行,例如我们选择列表前三行的数据,可以执行这样的命令:

select *
from customers
limit 3

如果我们需要第六行开始的三行数据,则

select *
from customers
limit 6, 3

学习了这些基本语法后,就是最基础的sql入门啦~

语法结构必须按照以下顺序:select, from, where, order by, limit

sql的加减乘除运算_小白学sql(一)相关推荐

  1. sql的加减乘除运算_sql查询,sql加减乘除运算,sql函数

    好记性不如写成博客 公司要做个台帐报表,用到sql加减乘除运算,sql判断及各种函数等,如下 create table temp( SELECT (@rowNO := @rowNo+1) AS '序号 ...

  2. sql的加减乘除运算_实现四则运算的一条sql语句

    感谢各位版主和坛友的鼓励,格式了一下代码 算法就是 将       '12+556-543*152/2423+23*2*435+34-234' 变成2部分  '12+556-              ...

  3. sql 倒数第二个_小白初探SQL(一)

    SQL(结构化查询语言)是目前使用最广泛的数据库语言,可以同各种数据库建立联系.进行沟通,应用十分的广泛. ◆ 结构化查询语言(Structured Query Language)简称SQL,是结构 ...

  4. 零基础学sql要多久_零基础小白如何迈出学习SQL的第一步?文科生学SQL的心得

    本文适用对象:从没接触过编程的零基础小白 首先,判断是否需要学习SQL 学习的第一步:了解SQL的用途. 比如你的目的是处理小量数据,那么excel就能满足需求,且excel简单易学,适用性广,这种情 ...

  5. sql的加减乘除运算_SQL简单查询语、运算符学习和练习

    本次主要学习了SQL语言的书写和运算,多为实操,一定要多写多思考,综合运用起来. 基本查询语句(select *全部 as替换 distinct删除重复) 指定查询条件(where 从哪里查询) 注释 ...

  6. mysql 字段集合运算_如何用SQL进行集合运算

    如何用SQL进行集合运算 发布时间:2020-07-15 14:31:43 来源:亿速云 阅读:117 作者:Leah 今天就跟大家聊聊有关如何用SQL进行集合运算 ,可能很多人都不太了解,为了让大家 ...

  7. python怎么做彩票概率_小白学数据小抄放送 Python,R,大数据,机器学习

    原标题:小白学数据小抄放送 Python,R,大数据,机器学习 大数据文摘作品,转载要求见文末 作者 | Elaine,田桂英,Aileen 导读:前段时间小白学数据专栏出了一期Python小抄表,后 ...

  8. pytorch默认初始化_小白学PyTorch | 9 tensor数据结构与存储结构

    [机器学习炼丹术]的学习笔记分享<> 小白学PyTorch | 8 实战之MNIST小试牛刀 小白学PyTorch | 7 最新版本torchvision.transforms常用API翻 ...

  9. matplotlib plot 分组_小白学 Python 数据分析(16):Matplotlib(一)坐标系

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

最新文章

  1. Log4Net日志分类和自动维护
  2. eclipse插件 --js
  3. 中国学霸本科生提出AI新算法:速度比肩Adam,性能媲美SGD,ICLR领域主席赞不绝口
  4. qq机器人自动回复带脚本可以实现吗_python一个神奇的第三方库:QQ自动聊天
  5. 引用:编写高性能Web应用程序的10个技巧(一)
  6. cassandra 环境搭建
  7. Flink之Watermark滑动窗口案例
  8. 自己写的_top、_parent以及对iframe和frameset的理解
  9. dup java_java web----TCP/DUP 通信
  10. )AIR程序打包/绿化,脱离air runtimes(AIR运行环境)的方法
  11. iOS-Core-Animation-Advanced-Techniques(二)
  12. 全国计算机二级java刷题软件_你知道的计算机二级刷题软件
  13. NOTEXPRESS 链接文件夹——让题录在文件夹中共享
  14. linux latex 英文字体,LaTeX 中的一些英文字体
  15. 市场调研-全球与中国汽车零部件涂层市场现状及未来发展趋势
  16. 传智博客JAVA基础第二十三天
  17. lise什么意思中文翻译_list中文是什么意思?
  18. Hive 优化之 推测执行
  19. 【3153万】巴菲特午餐再创天价!细数曾与股神共进午餐的中国大佬丨湾区人工智能...
  20. org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException

热门文章

  1. [网络安全自学篇] 八.Web漏洞及端口扫描之Nmap、ThreatScan和DirBuster原理详解
  2. 【数据结构与算法】之深入解析“恢复二叉搜索树”的求解思路与算法示例
  3. Git内部原理之深入解析传输协议
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1098:质因数分解
  5. 信息学奥赛一本通(C++)在线评测系统——基础(三)数据结构 —— 1363:小球(drop)
  6. 【机器视觉】 dev_map_prog算子
  7. 【机器视觉】 HDevelop语言基础(一)-基本类型和常量
  8. 【Qt】2D绘图之图形视图框架(一)
  9. 【Qt教程】Qt常用部件介绍
  10. Lisp尺寸标注增加前后缀_汽车雨刷器也是有尺寸的,那具体的尺寸该如何分辨呢?...