前言
4.11-4.25两周时间看了尚硅谷MySQL基础视频,5.17开始断断续续看《MySQL必知必会》这本书,发现好多知识点都很模糊,决定之后边看书复习边记录一下自己觉得重要并且容易忘掉的内容。
第1章 了解SQL
数据库(database):保存有组织的数据的容器
平时我们并不是直接访问数据库,而是使用的DBMS(database manger system 数据库管理系统),替我们访问数据库,如:MySQL、Oracle
主键(primary key):一列(或一组列),其值能够唯一区分表中的每一行。(唯一标识表中每行的这个列或这组列成为主键)
表中的任何列都可以作为主键,只要它满足以下条件:
- 任意两行都不具有相同的主键值
- 每个行都必须具有一个主键值(主键列不允许NULL值)
主键通常定义在表的一列上,但这并不是必需的,也可以一起使用多个列作为主键。
第2章 MySQL简介
第3章 使用MySQL
必须先使用USE打开数据库,才能读取其中的数据。
第4章 检索数据
SELECT语句
SELECT prod_name,
FROM products;
- 如果使用的是MySQL命令行,必须加上分号来结束SQL语句。
- SQL语句不区分大小写。
检索多个列
SELECT prod_name, prod_name,prod_price
FROM products;
检索所有列
给定一个通配符(*),则返回表中所有的列
SELECT *
FROM products;
使用DISTINCT关键字,使MySQL返回不同的值。
限制结果
可以使用LIMIT子句
SELECT prod_name
FROM products
LIMIT 5;
LIMIT 5指示MySQL返回不多于5行
SELECT prod_name
FROM products
LIMIT 5,5;
LIMIT 5,5 指示MySQL返回从行5开始的5行。第一个数为开始位置,第二个数为要检索的行数。
行0:检索出来的第一行为行0而不是行1。因此,LIMIT 1,1将检索出来第二行而不是第一行。
第5章 排序检索数据
为了明确地排序用SELECT语句检索出的数据,可以使用 ORDER BY子句。ORDER BY子句取一个或多个列的名字,据此对输出进行排序。
SELECT prod_name
FROM products
ORDER BY pro_name;
按多个列排序
SELECT prod_id,prod_price,prod_name
FROM products
ORDER BY prod_price,pro_name;
重点理解:在按多个列进行排序时,排序完全按所规定的的顺序进行。那上面这个例子来说,尽在多行具有相同的prod_price的值时才对产品按prod_name进行排序。如果prod_price列中的所有值是唯一的,则不会按prod_name排序。
排序方向
默认是按照升序,为了进行降序必须指定DESC关键字。
第6章 过滤数据
使用WHERE子句
数据根据WHERE子句中的搜索条件进行过滤。WHERE子句在表名(FROM)之后给出。
在同时使用ORDER BY 和 WHERE子句时,应该让ORDER BY 在 WHERE子句之后。
BETWEEN匹配范围中所有的值,包括指定的开始值和结束值。
SELECT子句有一个特殊的WHERE子句,可以用来检查具有NULL值的列,这个WHERE子句就是 IS NULL子句
第7章 数据过滤
组合WHERE子句
操作符:用来联结或改变WHERE子句中的子句的关键字。也成为了逻辑操作符。
AND:用在WHERE子句的关键字,用来指示检索满足所有给定条件的行。
OR:告诉DBMS匹配任一条件而不是同时匹配两个条件。
SQL在处理OR操作符前,优先处理AND操作符,AND在计算次序中优先级更高。
圆括号具有较AND或OR操作符高的计算次序。
IN操作符:用来指定条件范围,范围中的每个条件都可以进行匹配。
优点:
- 在使用长的合法选项清单时,IN操作符的语法更清楚且更直观
- 在使用IN时,计算的次序更容易管理
- IN操作符一般比OR操作符清单执行更快
- 最大的优点是可以包含其他SELECT语句,使得能够更动态的建立WHERE子句。
NOT操作符:有且只有一个功能,就是否定后所跟的任何条件。