MySQL 学习笔记第一、二章-SELECT语句

文章说明:作者之前跟着Mosh老师学习了MySQL,在这个过程中记了一些笔记,供大家参考。
第一章到第五章的内容,是作者一开始用word记的,其序号表示视频里的小节,但可能在缩进方面有些不准确,欢迎读者批评指正。在这部分内容学习之后的一段时间作者了解到了Markdown语法,大大便利了学习编程甚至课堂笔记的效率,在此给大家安利一下Markdown语法。

第一章 介绍

1. SQL or SQUEL

Structured English Query Language

2. MySQL

只是DBMS -- database management systems的一种,其他还有SQL Server等。

第二章 SELECT语句

3. select a database 选择数据库

USE sql_store 使用这一数据库

SELECT 后面加列,可用*代表所有的列

如果有很多语句,要用;终结每一行语句

From where order by 子句 clauses 加注释的话—语句的顺序不能改变

    换行符 大间隔 和TAB 全都没有用 可以用到一行里 但东西多了就还是分到每一行里好

Select 后面对列可以用加减乘除操作,顺序和数学一样,还可以加小括号

AS 改为别名 别名中的间隔如果不用_而用空格需要用单引号引起来

SELECT DISTINCT 可以在选择列的时候去除掉列里的重复项

4. WHERE Clause WHERE子句

筛选数据 > >= < <= = != <>后两个都是不等于

日期可以用大小 WHERE birth_date > ‘1990-01-01’但是要加引号

左边的导航栏可以看到表格的每列标题,是一个结构图

5. AND, OR 和NOT运算符

SELECT *
FROM Customers
WHERE birth_date >'1990-01-01' OR (points > 1000 AND
        state = 'VA')
-- AND 的运算优先级高于OR 这条命令加括号不加括号结果一样
SELECT *
FROM Customers
WHERE NOT  (birth_date >'1990-01-01' OR points > 1000) 
-- 这里的逻辑和数学里一样 非的概念

6. IN operator IN运算符

-- OR合并多个条件必须标明state = 'va' OR state ='ga' OR -- state= 'fa' 不能省略第二个state
-- WHERE state IN('VA', 'GA', 'FL')
-- 和以上效果一样,顺序不受限制

执行的快捷键为ctrl +shift+enter

执行单句的快捷键为ctrl+enter

7. BETWEEN operator BETWEEN运算符

SELECT *
FROM Customers
WHERE points >= 1000 AND points <= 3000
-- 可以换成 WHERE points BETWEEN 1000 AND 3000 是闭区间
-- BETWEEN不仅限于对数字的使用 也可以用日期

8. LIKE operator LIKE运算符

SELECT *
FROM Customers
WHERE last_name LIKE 'b%'
-- 获取B开头的last_name,%表示任意长度的字符,b是大小写无所谓,%可以放在开头结尾中间任何位置
-- _下划线代表单个字符,LIKE算是古早的运算符了,现在有了更强大的

SELECT *
FROM Customers
-- WHERE address LIKE '%TRAIL%' OR address LIKE 'AVENUE'
WHERE phone LIKE '%9'
-- 获取B开头的last_name,%表示任意长度的字符,b是大小写无所谓
-- 否定的时候是NOT LIKE

9. REGEXP operator 正则表达式

Short for regular expression 正则表达式

SELECT *
FROM Customers
WHERE last_name LIKE ‘%field%’
WHERE last_name REGEXP ‘field’ -- 这两行的意思一样
-- ^field  表示开头 即必须以field 开头
-- $表示结尾 field$
-- ‘field|mac’表示查找两个 相当于或

SELECT *
FROM Customers
-- WHERE last_name LIKE ‘%field%’
WHERE last_name REGEXP 'field|mac|rose' 
WHERE last_name REGEXP 'field$|mac|rose' 

WHERE last_name REGEXP '[gim]e' 
-- 查找姓氏中带有ge ie 或me 的顾客 []代替单个字符
-- 方括号也可以放到后面e[ab] 
-- [a-h]e 表示从a到h的任意字母 都包括在内 是闭区间

-- Exercises 练习
-- Get the customers whose
--  first names are ELKA or AMBUR
SELECT * FROM customers
-- WHERE first_name IN('ELKA', 'AMBUR')
--  last names end with EY or ON
-- WHERE last_name REGEXP 'EY$|ON$'
--  last names start with MY or contains SE
-- WHERE last_name REGEXP '^MY|SE'
--  last names contain B followed by R or U
WHERE last_name REGEXP 'B[RU]' – or ‘br|bu’

10. NULL operator 空运算符

SELECT * 
FROM customers
WHERE phone IS NULL
-- WHERE phone IS NOT NULL

-- Exercises

-- get the orders that are not shipped 

SELECT *
FROM orders
WHERE shipper_id IS NULL

11. ORDER BY clause 排序子句

为什么customer_id 是默认的排序依据
打开扳手小图标,进入设计模式 可以更改列,可以添加新列,删除现在有列 改名 改顺序

截图1.jpg

customer_id 前面有个黄色标志 意思是这是这张表的主键列

在关系型数据库中,每个表格都有一个主键列,这一列中的值要能够唯一识别表里的记录

SELECT *
FROM customers
ORDER BY first_name # 默认是升序,如果要降序就
ORDER BY first_name DESC # 为降序的缩写

# 给多列数据排序
ORDER BY state, first_name
# 如果你没选择这一列 
SELECT first_name, last_name, 10 AS points
# 也可以
ORDER BY points
# 还可以
ORDER BY 1, 2 # 表示列的顺序 即第一列第二列

--- 
# Exercises
# 给了一张结果图让写代码
# 我的代码
SELECT *, quantity*unit_price AS total_price
FROM order_items
WHERE order_id = 2
ORDER BY total_price DESC

# Mosh 代码
SELECT *, 
FROM order_items
WHERE order_id = 2
ORDER BY quantity*unit_price DESC
# 但他最后的代码跟我的一样

# 所以ORDER BY 后面加的不一定是列的名称,还可以是运算表达式

12. LIMIT clause 限制子句

SELECT *
FROM customers
LIMIT 3
# 得到前三行的数据,如果是300,即超过了总行数,则会显示所有数据

SELECT *
FROM customers
LIMIT 6, 3 -- 6被称为偏移量(offset),即跳过前六条记录获取三条记录 查询第三页的7-9
-- page 1 : 1-3
-- page 2 : 4-6
-- page 3 : 7-9

# 练习exercise
-- Get the top three loyal customers
-- 即拥有积分最多的顾客

SELECT * 
FROM customers
ORDER BY points DESC
LIMIT 3 -- LIMIT clause永远放在最后,顺序错了会报错

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容