Mysql学习笔记1

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
  • 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
  1. 在SELECT语句中使用算术运算符对子列进行操作

  2. 对子列重命名(起别名):AS

    points * 10 + 10 AS discount_factor

    如果别名中想加入空格,需要对变量名加引号

  3. 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子句要放在最后

上一篇:Redis OM .NET Redis对象映射框架


下一篇:OCP 063中文考试题库(cuug内部资料)第31题