MySQL学习笔记[b站尚硅谷2022]

一、 数据库概述

1. 为什么使用数据库?

实现数据持久化

2. 数据库与数据库管理系统

2.1 数据库的相关概念

DB:数据库

存储数据的仓库,其本质为一个文件系统。保存了一系列有组织的数据。

DBMS:数据库管理系统

是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制。用户通过数据库管理系统访问数据库中表内的数据。

SQL:结构化查询语句

专门用来与数据库通信的语句。

2.2 数据库与数据库管理系统的关系

2.3 常见的数据库介绍

  • Oracle
  • MySQL
  • DB2
  • PostgreSQL
  • SQLite
  • informix

3. RDBMS与非RDBMS

3.1 关系型数据库(RDBMS)

3.1.1 实质
  • 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。
  • 关系型数据模型以行和列的形式存储数据。
  • SQL为关系型数据库的查询语言。

3.2 非关系型数据库(非RDBMS)

3.2.1 种类
  • 键值型数据库
  • 文档型数据库
  • 搜索引擎数据库
  • 列式数据库
  • 图形数据库
3.2.2 NoSQL

4. 关系型数据库设计规则

4.1 表、记录、字段

  1. E-R模型中有三个主要概念:实体集、属性、联系集

  2. 一个实体集(class) <> 一个表(table)

    一个实体(instance) <> 数据库表中的一行(row)/ 一条记录(record)

    一个属性(attribute) <> 数据库表中的一列(column)/ 一个字段(field)

4.2 表的关联关系

4.2.1 一对一关系

两种建表原则:

  • 外键唯一:主表的主键与从表的外键,形成主外键关系,外键唯一。
  • 外键是主键:主表的主键和从表的主键,形成主外键关系。
4.2.2 一对多关系
4.2.3 多对多
4.2.4 自我引用

二、 基本的SELECT语句

1. SQL概述

1.1 SQL分类

DDL(数据定义语言)

定义不同的数据库、表、视图、索引等数据库对象,可用来创建、删除、修改数据的数据表的结构。

  • 主要语句的关键字包括CREATEDROPALTER等。

DML(数据操作语言)

用于添加、删除、更新和查询数据库记录,并检查数据完整性。

  • 主要语句的关键字包括INSERTDELETEUPDATESELECT等。

DCL(数据控制语言)

用于定义数据库、表、字段、用户的访问权限和安全级别。

  • 主要语句的关键字包括GRANTREVOKECOMMITROLLBACKSAVEPOINT等。

2. SQL语言的规则与规范

2.1 基本规则

  • SQL可写在一行或多行,建议多行,必要时缩进
  • 每条命令以;或\g或\G结束
  • 关键字不能被缩写也不能分行
  • 关于标点符号
    必须保证所有的(),单引号、双引号是成对结束的
    必须使用英文状态下的半角输入方式
    字符串型和日期时间类型的数据可以使用单引号(‘’)表示
    列的别名,尽量使用双引号(" "),不建议省略

2.2 SQL的书写规范

  1. windows环境下是大小写不敏感的
  2. Linux环境下是大小写敏感的
  3. 推荐统一的书写规范:
    数据库名、表名、表别名、字段名、字段别名等都小写
    SQL关键字、函数名、绑定变量等都大写

2.3 注释

单行注释:#
单行注释:-- 注释文字
多行注释:/* */

2.4 命名规范

2.5 数据导入指令

方式一:source 文件的全路径名
方式二:基于具体的图形化界面导入数据

3. 基本的SELECT语句

3.0 SELECT…

SELECT 1

3.1 SELECT…FROM

通配符(*),不建议使用

# 选择全部字段
SELECT *
FROM department;

选择特定的列:

SELECT departments.department_id,departments.location_id
FROM departments

3.2 列的别名

  • 重命名一个列,便于计算。
  • 方法:

1.使用关键字AS(AS也可省略)

SELECT employees.last_name AS name , employees.commission_pct comm
FROM employees

2.别名使用双引号

SELECT employees.last_name "name"
FROM employees

3.3 去除重复行

默认情况下,查询会返回全部行,包括重复行。
方法:使用DISTINCT关键字去除重复行

SELECT DISTINCT employees.department_id
FROM employees;

错误行为:

SELECT employees.salary,DISTINCT employees.department_id
FROM employees;

无意义行为:

SELECT DISTINCT employees.department_id,employees.salary
FROM employees;

3.4 空值参与运算

  1. 空值:null
  2. null 不等同于0
  3. 空值参与运算:所有运算符或列值遇到null值,运算的结果都为null
  4. MySQL中,空值不等于空字符串。一个空字符串的长度为0,而一个空值的长度是空,同时,空值是占用空间。
SELECT employees.employee_id, employees.salary "月工资", employees.salary * ( 1 + employees.commission_pct ) * 12 "年工资"
FROM employees
SELECT employees.employee_id, employees.salary "月工资", employees.salary * ( 1 + IFNULL(employees.commission_pct,0) ) * 12 "年工资"
FROM employees

3.5 着重号

  • 使用关键字去命名后,需要使用着重号去区分。

3.6 查询常数

SELECT "尚硅谷" , employees.first_name
FROM employees;

4. 显示表结构

  • 显示表中字段的详细信息。
DESCRIBE employees;
DESC employees;

5. 过滤数据 WHERE

过滤条件在FROM后面

SELECT *
FROM employees
WHERE employees.last_name = 'King'

$第三章练习:

# 查询员工12个月的工资总和,并起别名ANNUAL SALARY 
SELECT employees.employee_id , employees.last_name , employees.salary * 12 "ANNUAL SALARY"
FROM employees;

# 查询employees.salary表中去除重复的employees.job_id以后的数据
SELECT DISTINCT employees.job_id
FROM employees;

# 查询工资大于12000的员工姓名和工资
SELECT employees.last_name , employees.salary
FROM employees
WHERE employees.salary > 12000

# 查询员工号为·176的员工的姓名和部门号
SELECT employees.last_name , employees.department_id
FROM employees
WHERE employees.employee_id = 176;

# 显示表departments的结构·,并查询其中的全部数据
DESCRIBE departments;

三、 运算符

1. 算术运算符

算术运算符主要用于数学运算,其可以连接运算符前后的两个数字或表达式,对数字或表达式进行+、-、*、\、%。

1. 加法与减法运算符

  • 一个整数类型的值对整数进行加法和减法操作,结果还是一个整数;
  • 一个整数类型的值对浮点数进行加法和减法操作,结果是一个浮点数;
  • MySQL中,+只进行数字的相加。(如果遇到非数值类型,则先转换为数值;如果失败,则按0计算)【补充:MySQL中字符串拼接使用字符串CONCAT()实现】

2. 乘法与除法远算符

  • 一个数乘以整数1和除以整数1后仍得原数;
  • 一个数乘以浮点数1和除以浮点数1后变成浮点数,数值与原数相等;
  • 一个数除以整数后,不管是否能除尽,结果都为一个浮点数;
  • 一个数除以另一个数,除不尽时,结果为一个浮点数,并保留到小数点后4位;
  • 乘法和除法的优先级相同,进行先乘后除操作与先除后乘操作,得出的结果相同。
  • 在数学运算中,0不能用作除数,在MySQL中,一个数除以0为NULL。

2. 乘法与除法远算符

猜你喜欢

转载自blog.csdn.net/xuansoyo/article/details/127579420