系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 Python 机器学习入门之pandas的使用
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
最近一直在看code with mosh 的 mysql 视频,大二的时候学校开的数据库课程上接触过sql,但是那时候对很多概念理解的都不是很深刻,sql语句缺少练习,因此一直想找个机会补一下,看到这个课程感觉不错,记录一些学习内容和心得。
提示:以下是本篇文章正文内容,下面案例可供参考
一、学习计划
全部课程一共有十二个单元,计划每周学习两个单元,学习形式为看视频课程,并进行练习,完成每个课后的 exercise。
二、第一单元
1. 数据库基本认识
第一部分主要是简单的认识数据库,分为关系型,非关系型,本课程主要学习的是关系型数据库,即能够识别sql语言的数据库,MySQL是典型的关系型数据库。
关于 sql 读音
其中讲到了一个很有趣的地方,sql 和 sque 的区别,在网上有这样一段介绍:
The first version/draft of SQL was in fact called Structured English Query Language and the acronym was SEQUEL. Due to trademark violations on the acronym, the name was changed to Structured Query Language and abbreviated as SQL.
简单来说就是一开似乎 SQL 是 Structured English Query Language ( SEQUEL ) 的意思,这个时候读音是SEQUEL,但是由于首字母缩写词商标侵权,就把English去掉了,读作S-Q-L. 所以英国人会选择读作SEQUEL
关于这个读音,有很多有趣的讨论,网站放在下面了
关系型数据库(更新中)
2.MySQL在windows上的安装(更新中)
3.简单的sql语句
SELECT 语句
SELECT 语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。
基本的语句为
SELECT *
FROM customers
WHERE customer_id = 1
ORDER BY first_name
运行结果
选择 last_name first_name points 三列,其中(points+10)*100作为新的一列展示
SELECT
last_name,
first_name,
points,
(points+10)*100 AS 'discount factor'
FROM customers
如果 state 相同,则只选择一个
SELECT DISTINCT state
FROM customers
WHERE 语句用于提取那些满足指定条件的记录。
SELECT *
FROM customers
WHERE state = 'VA'
WHERE 子语句中的运算符
以下是一些代码练习
SELECT *
FROM order_items
WHERE order_id = 6 AND quantity * unit_price > 30
SELECT *
FROM customers
WHERE state NOT IN ('VA', 'FL', 'GA')
SELECT *
FROM products
WHERE quantity_in_stock IN (49,38,72)
SELECT *
FROM customers
WHERE birth_date BETWEEN '1990-1-1' AND '2000-1-1'
LIKE 模糊匹配
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。下面是关于LIKE的例子
--address中包括 TRAIL 或 AVENUE
SELECT *
FROM customers
WHERE address LIKE '%TRAIL%' OR
address LIKE '%AVENUE%'
-- %表示任意字符 可以为空,'%9'表示以9结尾的
SELECT *
FROM customers
WHERE phone LIKE '%9'
-- 一个'-'代表一个字符 'B____Y'表示B和Y中间有四个字符
SELECT *
FROM customers
WHERE last_name NOT LIKE 'B____Y'
REGEXP 操作符
MySQL中使用 REGEXP 操作符来进行正则表达式匹配。
模式 | 描述 |
---|---|
^ | 匹配输入字符串的开始位置。。 |
$ | 匹配输入字符串的结束位置。 |
[…] | 字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。 |
p1|p2|p3 | 匹配 p1 或 p2 或 p3。 |
--REGEXP TEST
--选择ge or ie or me
SELECT *
FROM customers
WHERE last_name REGEXP '[gim]e'
--REGEXP '^field' must begin with field
--REGEXP 'field$' must end with field
--REGEXP 'field' equal to LIKE '%field%'
--REGEXP 'field|mac|rose'
--REGEXP '[gim]e' select ge|ie|me
--REGEXP '[a-z]e'
--test1 选择first_name 中含有ELKA或 AMBUR的
SELECT *
FROM customers
WHERE first_name REGEXP 'ELKA|AMBUR'
--test2 选择以EY 或 ON 结尾的
SELECT *
FROM customers
WHERE last_name REGEXP '(EY|ON)$'
--test3 选择以my开头或含有se的
SELECT *
FROM customers
WHERE last_name REGEXP '^my|se'
--test4 选择含有 br 或 bu 的
SELECT *
FROM customers
WHERE last_name REGEXP 'b[r|u]'
IS NULL
可以用于选出值为空的内容
SELECT *
FROM customers
WHERE phone IS NOT NULL
运行结果
这里有张图片
还可以用 IS NOT NULL 判断非空的数据
SELECT *
FROM orders
WHERE shipped_date IS NOT NULL
ORDER BY 语句
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字。
SELECT *
FROM customers
ORDER BY state DESC, first_name DESC
SELECT first_name, last_name, 10 AS points
FROM customers
ORDER BY birth_date
SELECT
*,
quantity * unit_price AS total_price
FROM order_items
WHERE order_id = 2
ORDER BY total_price DESC
LIMIT 语句
下面的 SQL 语句从 “customers” 表中选取前三条记录:
SELECT *
FROM customers
LIMIT 3
假设将数据分为三页,分别为 page 1: 1-3 行,page 2: 4-6行,page 3: 7-9 行,则下面的语句可以直接选择出page3的内容。
SELECT *
FROM customers
LIMIT 6,3
选出积分最高的三名顾客
SELECT *
FROM customers
ORDER BY points DESC
LIMIT 3
总结
以上就是前一阶段的学习笔记,本文仅仅简单介绍了MySQL学习的一些基础知识,有很多地方理解不够到位,希望各位指正,在后面的学习我会不断完善自己的知识,通过查阅资料,看视频,实际操作练习等方式进一步提高技能。