0
点赞
收藏
分享

微信扫一扫

MySQL学习笔记——更新中(第一周学习目标及基础)

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:第一章 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

运行结果
选择表customers的所有内容

选择 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学习的一些基础知识,有很多地方理解不够到位,希望各位指正,在后面的学习我会不断完善自己的知识,通过查阅资料,看视频,实际操作练习等方式进一步提高技能。

举报

相关推荐

JS基础学习--第一周

第一周学习

Java第一周学习笔记

Linux学习笔记(第一周)

Java学习(第一周)

Java学习第一周总结笔记

CSS学习第一周

nodeJs学习(第一周)

Linux学习第一周

0 条评论