MySQL
教程:https://www.bilibili.com/video/BV1UE41147KC?p=1&spm_id_from=333.788.b_6d756c74695f70616765.1
一、为什么要学习数据库
- 数据库用于存储例如网页的数据:数据库→服务器→客户端
- 实现永久存储数据(数据持久化)
- 使用管理系统统一管理,方便查询
二、基本概念
- DB:数据库 database 存储数据的容器
- DBMS:数据库管理系统 Database Management System 又称数据库软件,实现增删查改,例如MySQL、Oracle、DB2、SqlServer等
- DBMS分为两类:
- 基于 共享文件系统 Access
- 基于 客户机——服务器 MySQL等
- 按照数据的组织形式:
- 关系型:MySQL、SQL Server、Oracle,使用SQL语言
- 非关系型:Redis
- DBMS分为两类:
- SQL:结构化查询语言 Structure Query Language 与数据库通信的语言
- 几乎所有的DBMS都支持SQL
- 简单易学
- 强有力
三、数据库的特点:
- 将数据放到表中,再放到库中
- 一个数据库可以有多个表
- 表具有一些特性,这些特性定义了数据在表中如何存储
- 表由列组成,也称为字段。所有表都是由一个或多个列组成的,类似于 属性
- 数据按行存储,每一行类似于 对象
四、数据库操作
注意:不区分大小写,即使是在变量值中
1.选择语句:
USE sql_store;
SELECT *
FROM customers
#WHERE customer_id = 1
#ORDER BY first_name
选中数据库:USE db_name;
选中某一列:SELECT
选中表名:FROM table_name;
筛选:WHERE (id=1);
排序:OERDER BY row_name;
1.选择子句:
SELECT
first_name,
last_name,
points,
points * 10 + 10 AS discount_factor
-
在SELECT语句中使用算术运算符对子列进行操作
-
对子列重命名(起别名):AS
points * 10 + 10 AS discount_factor
如果别名中想加入空格,需要对变量名加引号
-
list转set:DISTINCT (删去重复项)
SELECT DISTINCT state FROM customers
2.WHERE子句:
USE sql_store;
SELECT *
FROM customers
WHERE birth_date > '1990-01-01'
可以直接对日期进行比较。
关系运算符:
AND
OR
NOT
顺序:AND > OR
3.IN操作:
USE sql_store;
SELECT
*
FROM products
WHERE quantity_in_stock IN (49,38,72)
IN操作符用来创建选集
4.BETWEEN操作
范围比较:
SELECT
*
FROM customers
WHERE points BETWEEN 1000 AND 3000
SELECT
*
FROM customers
WHERE birth_date BETWEEN '1990-01-01' AND '2000-01-01'
*注意日期要加引号
5.LIKE操作:
匹配查询:
SELECT
*
FROM customers
WHERE last_name LIKE 'b%'
%b% 表示在任意位置含有b (%表示任意长度的字符串)
_y 表示第二个字符是y(_表示一个字符)
否定时用NOT LIKE
6.REGEXP操作:
(正则表达式)
SELECT
*
FROM customers
WHERE last_name REGEXP 'field'
表示搜索含有field的项
WHERE last_name REGEXP '^field'
表示以field开头
WHERE last_name REGEXP 'field$'
表示以field结尾
WHERE last_name REGEXP 'field|mac'
表示含有field或mac
WHERE last_name REGEXP '[gim]e'
表示含有ge、ie、me
WHERE last_name REGEXP '[a-h]e'
[a-h]表示从a到h
SELECT
*
FROM customers
WHERE phone IS NULL
phone缺失,否定是IS NOT NULL
7.OREDER BY子句:
主键列:唯一标识所有元素
SELECT
*
FROM customers
ORDER BY first_name DESC
DESC表示降序
SELECT
*
FROM customers
ORDER BY state,first_name
按多列排序
ORDERBY的列可以不在SELECT中
USE sql_store;
SELECT
*,
quantity*unit_price AS total_price
FROM order_items
WHERE order_id=2
ORDER BY total_price DESC
8.LIMIT子句:
限定查询返回:
USE sql_store;
SELECT
*
FROM customers
LIMIT 3
返回前3行
SELECT
*
FROM customers
LIMIT 6,3
表示跳过6行,显示3行
*LIMIT子句要放在最后