首页 > 数据库 >MySQL 入门指南

MySQL 入门指南

时间:2024-03-09 11:23:57浏览次数:22  
标签:指南 检索 入门 数据库 MySQL SQL 数据 SELECT

目录

1. 简介和基础概念

2. 安装和配置 MySQL

3. SQL 基础

4. 数据操作基础

 

1. 简介和基础概念

1.1.MySQL 是什么?

MySQL 是一个开源的关系型数据库管理系统(RDBMS),由瑞典的 MySQL AB 公司开发,现在由 Oracle 公司持有和维护,同时也有大量的开源社区贡献者参与到 MySQL 的开发和改进中。MySQL 是最流行的关系型数据库管理系统之一,被广泛应用于各种规模的应用程序和网站开发中。

MySQL 的特点:

  1. 开源性质:MySQL 是开源软件,可以免费使用,并且有大量的社区支持和贡献。
  2. 跨平台性:MySQL 可以在各种操作系统上运行,包括 Windows、Linux、macOS 等。
  3. 高性能:MySQL 是一个高性能的数据库系统,能够处理大量的数据和请求。
  4. 稳定可靠:MySQL 已经经过了长时间的发展和测试,具有很高的稳定性和可靠性。
  5. 易用性:MySQL 的安装和配置相对简单,学习曲线较低,适合初学者和中小型项目使用。

MySQL 在各种应用场景中都有广泛的应用:

  1. Web 开发:MySQL 是很多网站和应用程序的首选数据库,用于存储用户数据、文章内容、日志记录等。
  2. 企业应用:MySQL 在企业内部的信息管理、客户关系管理(CRM)、人力资源管理(HRM)等方面都有应用。
  3. 数据分析:MySQL 可以作为数据仓库,用于存储和分析大量的数据,支持数据挖掘和商业智能应用。
  4. 嵌入式系统:MySQL 可以集成到各种嵌入式系统中,如路由器、智能家居设备等,用于存储配置信息和日志数据。

 

1.2.数据库管理系统(DBMS)的基本概念

数据库管理系统(DBMS)是一种软件,用于管理和组织数据的集合,以及提供数据的存储、检索、更新和管理功能。DBMS 是现代信息系统的核心组成部分,它能够有效地管理大量数据,并提供用户友好的接口进行数据操作。

数据库的定义:

数据库是一个组织数据的集合,它以某种结构存储在计算机系统中,并可被多个用户共享和访问。数据库中的数据按照一定的模型组织和管理,以满足用户的需求。

数据库管理系统的功能:

  1. 数据定义功能(DDL):用于定义数据库的结构,包括创建、修改和删除数据库、表、索引等对象的操作。

  2. 数据操纵功能(DML):用于对数据库中的数据进行增加、删除、修改和查询的操作,通常通过 SQL 语言实现。

  3. 数据控制功能(DCL):用于控制数据库访问的权限和安全性,包括用户管理、权限分配等操作。

  4. 数据完整性功能:确保数据库中的数据满足一定的约束和规则,防止数据的损坏和不一致性。

  5. 数据恢复与备份功能:提供数据备份和恢复机制,保障数据的安全性和可靠性。

数据库管理系统的分类:

  1. 关系型数据库管理系统(RDBMS):采用关系模型来组织和管理数据的系统,如 MySQL、Oracle、SQL Server 等。

  2. 非关系型数据库管理系统(NoSQL DBMS):不使用传统的关系模型,而是采用其他数据模型来组织和管理数据的系统,如 MongoDB、Redis、Cassandra 等。

数据库管理系统(DBMS)是一种用于管理和组织数据的软件系统,它扮演着重要的角色,为用户提供了数据管理、存储、检索和操作的功能。掌握数据库管理系统的基本概念和功能,有助于用户更好地理解和应用数据库技术,提高工作效率和数据处理能力。

 

1.3.SQL(Structured Query Language)的作用和重要性

SQL 的定义

SQL(Structured Query Language)是一种用于管理和操作关系型数据库的标准化查询语言。它是一种特定目的的编程语言,用于执行对数据库中的数据进行查询、更新、删除和添加等操作。

SQL 的作用

  1. 数据查询(Query):SQL 语言最基本的功能之一是查询数据库中的数据。用户可以使用 SQL 编写各种类型的查询语句,从数据库中检索所需的数据。

  2. 数据操作(CRUD):SQL 支持对数据库中的数据进行增加(Create)、读取(Read)、更新(Update)、删除(Delete)等操作,通常称为 CRUD 操作。

  3. 数据定义(DDL):SQL 可以用于定义数据库中的结构,包括创建数据库、表、索引等对象。

  4. 数据控制(DCL):SQL 也可以用于管理数据库的访问权限和安全性,包括用户管理、权限分配等操作。

  5. 数据完整性和约束(Constraints):SQL 支持在数据库中定义各种约束,如主键约束、外键约束、唯一约束等,以确保数据的完整性和一致性。

SQL 的重要性

  1. 标准化:SQL 是一种标准化的数据库查询语言,被广泛应用于各种关系型数据库管理系统(RDBMS),如 MySQL、Oracle、SQL Server 等。

  2. 易学易用:SQL 的语法简单明了,易于学习和理解。即使对于非编程背景的用户,也可以通过简单的培训快速掌握基本的 SQL 查询和操作技能。

  3. 灵活性:SQL 提供了丰富的查询语句和操作功能,可以满足各种复杂的数据处理需求,支持复杂的数据分析和报表生成。

  4. 高效性:SQL 查询引擎经过优化和调整,可以在大型数据集上快速执行查询操作,提高数据处理的效率和性能。

  5. 广泛应用:SQL 作为标准化的数据库查询语言,被广泛应用于各种行业和领域,如企业管理、金融服务、科学研究等,成为管理和分析数据的重要工具。

SQL(Structured Query Language)是一种标准化的关系型数据库查询语言,具有简单、灵活、高效等特点,被广泛应用于各种数据库管理系统中。

 

2. 安装和配置 MySQL

2.1.在Linux下使用Docker进行MySQL的安装和配置

2.1.1. 安装 Docker 和 Docker Compose

2.1.1.1 安装 Docker

确保你的Linux系统已经安装了Docker。你也可以按照官方文档提供的步骤安装Docker:https://www.docker.com/

a. 使用官方安装脚本

Docker官方提供了一个便捷的安装脚本,可以在Linux系统上安装Docker CE。运行以下命令以下载并执行安装脚本:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

b. 启动Docker服务

安装完成后,使用以下命令启动Docker服务:

sudo systemctl start docker

c. 设置Docker开机自启动

如果需要Docker服务在系统启动时自动启动,可以使用以下命令:

sudo systemctl enable docker

d. 验证安装

运行以下命令验证Docker安装是否成功:

docker --version

如果安装成功,将显示Docker的版本信息。

 

2.1.1.2 安装 Docker Compose

如果你计划使用Docker Compose来管理多个容器,你需要安装Docker Compose。你也可以在Docker的官方文档中找到安装说明:https://docs.docker.com/compose/install/

a. 下载Docker Compose

在GitHub的Docker Compose存储库中找到最新的稳定版本,复制下载链接。使用curl命令下载该版本:

sudo curl -L "https://github.com/docker/compose/releases/download/{VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

确保将{VERSION}替换为所需的版本号。

b. 授权执行权限

下载完成后,为docker-compose文件添加执行权限:

sudo chmod +x /usr/local/bin/docker-compose

c. 验证安装

运行以下命令验证Docker Compose是否安装成功:

docker-compose --version

如果安装成功,将显示Docker Compose的版本信息。

 

2.1.2. 使用 Docker 运行 MySQL 容器

2.1.2.1 下载 MySQL 镜像

使用Docker Hub上提供的MySQL官方镜像。打开终端,执行以下命令拉取MySQL镜像:

docker pull mysql

2.1.2.2 启动 MySQL 容器

创建并启动一个MySQL容器。可以使用Docker Compose编写一个docker-compose.yml文件来管理MySQL容器的配置。

version: '3.1'

services:
  mysql:
    image: mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_password_here   # 设置root用户的密码
    ports:
      - "3306:3306"   # 映射MySQL的3306端口到宿主机的3306端口
    volumes:
      - ./my.cnf:/etc/mysql/my.cnf   # 挂载my.cnf配置文件
      - ./mysql_data:/var/lib/mysql   # 挂载MySQL的数据目录
      - ./mysql_logs:/var/log/mysql   # 挂载MySQL的日志目录

volumes:
  mysql_data:   # 定义MySQL数据的持久化卷
  mysql_logs:   # 定义MySQL日志的持久化卷

这个 docker-compose.yml 文件做了以下几个工作:

  1. 指定了MySQL容器的基本配置,包括镜像、重启策略和环境变量。
  2. 映射了MySQL的3306端口到宿主机的3306端口,以便可以从外部访问MySQL服务。
  3. 挂载了my.cnf配置文件到MySQL容器的/etc/mysql/my.cnf路径,以覆盖默认的MySQL配置。
  4. 挂载了宿主机的mysql_data目录到MySQL容器的/var/lib/mysql路径,以持久化保存MySQL的数据。
  5. 挂载了宿主机的mysql_logs目录到MySQL容器的/var/log/mysql路径,以持久化保存MySQL的日志。

在上面的示例中,我们定义了一个名为mysql的服务,使用MySQL官方镜像,指定了root用户的密码,并将MySQL的数据目录挂载到主机上的一个卷中。

my.cnf文件如下:

# MySQL配置文件

[mysqld]
# 以下是MySQL服务器的配置选项

# 设置MySQL数据目录
datadir=/var/lib/mysql

# 设置MySQL监听的IP地址
# 如果只希望本地连接,则设置为127.0.0.1
bind-address = 0.0.0.0

# 设置MySQL服务器使用的字符集
character-set-server = utf8mb4

# 设置MySQL的端口号
port = 3306

# 设置MySQL的日志文件
# 错误日志
log-error=/var/log/mysql/error.log

# 设置MySQL允许的最大连接数
max_connections=200

# 设置MySQL的缓冲区大小
key_buffer_size = 64M

# 设置MySQL的排序缓冲区大小
sort_buffer_size = 4M

# 设置MySQL的临时表大小
tmp_table_size = 32M

# 设置MySQL的最大临时表大小
max_heap_table_size = 32M

# 设置MySQL的最大数据包大小
max_allowed_packet = 16M

# 设置MySQL的查询缓存大小
query_cache_size = 16M

# 设置MySQL的连接超时时间
connect_timeout = 10

# 设置MySQL的等待超时时间
wait_timeout = 600

# 设置MySQL的交互式超时时间
interactive_timeout = 600

# 设置MySQL是否允许远程访问
# 一般建议禁止远程访问,除非有必要
# skip-networking

# 设置MySQL是否启用慢查询日志
# slow_query_log = 1
# slow_query_log_file = /var/log/mysql/slow.log
# long_query_time = 1

# 设置MySQL是否启用binlog
# log-bin = mysql-bin
# binlog_format = mixed
# expire_logs_days = 10

使用以下命令启动MySQL容器:

docker-compose up -d

2.1.2.3 连接到 MySQL 容器

一旦MySQL容器启动成功,你可以使用MySQL的命令行客户端连接到MySQL服务器。你可以使用以下命令连接到MySQL服务器:

docker exec -it <container_id> mysql -uroot -p

在上面的命令中,<container_id>是你MySQL容器的ID或名称。然后,你将被要求输入root用户的密码。

 

2.1.3. 安全设置

2.1.3.1 修改root用户密码

首先,应该修改root用户的初始密码。连接到MySQL服务器后,执行以下命令:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';

2.1.3.2 移除匿名用户

移除MySQL数据库中的匿名用户。在MySQL命令行界面中执行以下命令:

DROP USER ''@'localhost';

2.1.3.3 移除远程root访问权限

不建议远程主机可以使用root账号访问MySQL数据库。你可以通过以下命令删除远程root访问权限:

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');

2.1.3.4 创建新用户并授权

创建一个新的MySQL用户,并授予该用户适当的权限。例如:

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password';
GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

2.1.3.5 关闭不必要的远程访问

如果不需要从远程主机访问MySQL数据库,禁用远程访问。在MySQL配置文件中,一般是/etc/mysql/mysql.conf.d/mysqld.cnf中添加以下行:

bind-address = 127.0.0.1

 

2.2.Windows、MacOS 下的安装步骤(待补充)

... 

 

3. SQL 基础

3.1.SQL 的基本语法和结构

SQL(Structured Query Language)是用于管理关系型数据库的标准化查询语言,它提供了丰富的语法和结构来执行对数据库的操作。在学习 SQL 的基础部分时,我们需要了解其基本语法和结构。

3.1.1. SQL 查询语句的基本结构

SQL 查询语句通常由以下几个关键部分组成:

  1. SELECT 语句:用于指定要检索的数据列。
  2. FROM 子句:用于指定要检索数据的表或视图。
  3. WHERE 子句:可选的,用于指定检索数据的条件。
  4. GROUP BY 子句:可选的,用于对检索到的数据进行分组。
  5. HAVING 子句:可选的,用于指定对分组数据的条件。
  6. ORDER BY 子句:可选的,用于指定检索到的数据的排序方式。
  7. LIMIT 子句:可选的,用于限制检索数据的行数。

3.1.2. SQL 查询语句示例

下面是一个简单的 SQL 查询语句示例:

SELECT column1, column2 
FROM table_name 
WHERE condition 
GROUP BY column1 
HAVING condition 
ORDER BY column1 ASC 
LIMIT 10;

在这个示例中:

  • SELECT column1, column2:指定要检索的数据列。
  • FROM table_name:指定要检索数据的表。
  • WHERE condition:可选的条件,用于过滤检索数据。
  • GROUP BY column1:可选的,按指定列进行分组。
  • HAVING condition:可选的条件,用于过滤分组数据。
  • ORDER BY column1 ASC:可选的,指定检索到的数据按照指定列升序排序。
  • LIMIT 10:可选的,限制检索数据的行数为 10 条。

3.1.3. SQL 常用的数据操作语句

除了 SELECT 查询语句之外,SQL 还包括其他常用的数据操作语句,如:

  • INSERT INTO:用于向表中插入新的数据。
  • UPDATE:用于更新表中现有的数据。
  • DELETE FROM:用于从表中删除数据。
  • CREATE TABLE:用于创建新的表。
  • ALTER TABLE:用于修改现有表的结构。
  • DROP TABLE:用于删除现有表。

3.1.4. SQL 注释

SQL 支持单行注释和多行注释,可以使用 -- 进行单行注释,使用 /* */ 进行多行注释。

-- 这是单行注释

/*
这是
多行注释
*/

3.1.5. SQL 数据类型

SQL 支持多种数据类型,包括但不限于整数、浮点数、字符、日期等。常见的数据类型有 INT、VARCHAR、DATE、DATETIME 等。

 

3.2.数据库、表的创建和删除

在 SQL 中,创建和管理数据库以及数据库中的表是非常基础和重要的操作。

3.2.1. 创建数据库

要创建数据库,可以使用 SQL 中的 CREATE DATABASE 语句。

CREATE DATABASE database_name;

其中,database_name 是要创建的数据库的名称。

示例:

CREATE DATABASE my_database;

3.2.2. 删除数据库

要删除数据库,可以使用 SQL 中的 DROP DATABASE 语句。

DROP DATABASE database_name;

其中,database_name 是要删除的数据库的名称。

示例:

DROP DATABASE my_database;

3.2.3. 创建表

要创建表,可以使用 SQL 中的 CREATE TABLE 语句。

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);

其中,table_name 是要创建的表的名称,column1column2 是表的列名,datatype 是列的数据类型。

示例:

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    department VARCHAR(50)
);

在上面的示例中,我们创建了一个名为 employees 的表,包含了 idnameagedepartment 四个列,分别存储员工的编号、姓名、年龄和部门信息。

3.2.4. 删除表

要删除表,可以使用 SQL 中的 DROP TABLE 语句。

DROP TABLE table_name;

其中,table_name 是要删除的表的名称。

示例:

DROP TABLE employees;

上面的示例将删除名为 employees 的表。

3.2.5. 注意事项

  • 在执行 CREATE DATABASEDROP DATABASE 语句时,请谨慎操作,确保你有足够的权限和备份以防意外情况发生。
  • 在执行 CREATE TABLE 语句时,确保你正确指定了列的名称、数据类型和约束,以保证表的结构正确。
  • 在执行 DROP TABLE 语句时,会永久删除表中的所有数据,请谨慎操作。

 

3.3.数据类型、约束和索引的介绍

3.3.1. 数据类型

数据类型是什么?

数据类型定义了数据库中可以存储的数据的种类。它们规定了数据的存储方式、范围以及可以对数据执行的操作。

常见的 SQL 数据类型:

  • 整数类型:INT、TINYINT、SMALLINT、BIGINT等。
  • 浮点数类型:FLOAT、DOUBLE、DECIMAL等。
  • 字符类型:CHAR、VARCHAR、TEXT等。
  • 日期和时间类型:DATE、TIME、DATETIME、TIMESTAMP等。

示例:

CREATE TABLE employees (
    id INT,
    name VARCHAR(50),
    salary DECIMAL(10, 2),
    hire_date DATE
);

在上述示例中,我们定义了一个名为 employees 的表,其中包含了整数、字符、十进制和日期类型的列。

3.3.2. 约束

约束是什么?

约束是用于规定表中数据的规则,以保证数据的完整性和一致性。通过约束,可以对表中的列施加各种规则,如主键、唯一性、非空等。

常见的约束类型:

  • 主键约束(PRIMARY KEY):唯一标识表中的每一行,不能包含空值。
  • 外键约束(FOREIGN KEY):用于建立表与表之间的关联。
  • 唯一约束(UNIQUE):确保列中的数据值是唯一的。
  • 非空约束(NOT NULL):确保列中的数据值不为空。

示例:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    department_id INT,
    FOREIGN KEY (department_id) REFERENCES departments(id)
);

上述示例中,我们定义了一个 employees 表,其中包含了主键约束、非空约束和外键约束。

3.3.3. 索引

索引是什么?

索引是对表中的一列或多列的值进行排序的一种结构,以便快速查找和访问数据。

常见的索引类型:

  • 单列索引:对单个列创建的索引。
  • 复合索引:对多个列创建的联合索引。
  • 唯一索引:确保列中的数据值是唯一的索引。
  • 全文索引:用于全文搜索的索引。

示例:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department_id INT,
    INDEX idx_department (department_id)
);

在上述示例中,我们定义了一个名为 idx_department 的索引,以加速对 department_id 列的检索。

3.3.4. 数据类型、约束和索引的选择

在设计数据库时,应根据实际需求选择合适的数据类型,并为数据添加适当的约束和索引。这有助于提高数据库的性能、确保数据的完整性,并简化对数据的管理和维护。

3.3.5. 注意事项

  • 谨慎选择数据类型,确保它们能够正确地存储和表示数据。
  • 合理使用约束,以确保数据的完整性和一致性。
  • 谨慎添加索引,避免过多或过少的索引,以提高查询性能。

 

4. 数据操作基础

4.1.数据的增、删、改、查(CRUD)

在 SQL 数据库中,对数据进行增、删、改、查是常见且重要的操作,通常被称为 CRUD 操作。

4.1.1. 数据的增加(Create)

向数据库中添加新的数据记录是数据操作中的一项关键任务。在 SQL 中,我们使用 INSERT INTO 语句来执行数据的插入操作。

语法:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

其中,table_name 是要插入数据的表名,column1, column2, ... 是要插入数据的列名,value1, value2, ... 是要插入的数据值。

示例:

INSERT INTO employees (name, age, department)
VALUES ('John Doe', 30, 'IT');

将向名为 employees 的表中插入一条新的数据记录,包括姓名、年龄和部门信息。

4.1.2. 数据的删除(Delete)

从数据库中删除数据记录是另一个常见的操作。在 SQL 中,我们使用 DELETE FROM 语句来执行数据的删除操作。

语法:

DELETE FROM table_name
WHERE condition;

其中,table_name 是要删除数据的表名,condition 是一个可选的条件,用于指定要删除的数据记录。

示例:

DELETE FROM employees
WHERE id = 1;

将从 employees 表中删除 id 列为 1 的数据记录。

4.1.3. 数据的修改(Update)

更新数据库中的数据是常见的操作之一,它允许我们修改现有数据记录的内容。在 SQL 中,我们使用 UPDATE 语句来执行数据的更新操作。

语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

其中,table_name 是要更新数据的表名,column1 = value1, column2 = value2, ... 是要更新的列和对应的新值,condition 是一个可选的条件,用于指定要更新的数据记录。

示例:

UPDATE employees
SET age = 35
WHERE name = 'John Doe';

将名为 John Doe 的员工的年龄更新为 35 岁。

4.1.4. 数据的查询(Select)

数据的检索是 SQL 中最常见的操作之一,它允许我们从数据库中获取所需的数据记录。在 SQL 中,我们使用 SELECT 语句来执行数据的查询操作。

语法:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

其中,column1, column2, ... 是要检索的列名,table_name 是要检索数据的表名,condition 是一个可选的条件,用于指定要检索的数据记录。

示例:

SELECT name, age, department
FROM employees
WHERE department = 'IT';

将检索出部门为 IT 的所有员工的姓名、年龄和部门信息。

在 SQL 数据库中,CRUD 操作是数据库管理和应用开发中的基础。通过掌握增加、删除、修改和查询数据的基本操作,我们能够有效地管理和利用数据库中的数据资源,实现各种功能和业务需求。

 

4.2.使用 SELECT 查询数据

在 MySQL 数据库中,使用 SELECT 语句进行数据查询是非常常见和重要的操作。SELECT 语句允许我们从数据库中检索出所需的数据,以便进行进一步的分析、处理或展示。

4.2.1. SELECT 语句基本结构

SELECT 语句的基本结构如下所示:

SELECT column1, column2, ...
FROM table_name
WHERE condition;
  • column1, column2, ...: 指定要检索的列名,可以是一个或多个列。
  • table_name: 指定要检索数据的表名。
  • condition: 可选的条件,用于筛选检索的数据行。

4.2.2. 查询所有列的数据

要检索表中所有列的数据,可以使用星号 (*) 通配符。

SELECT * FROM table_name;

这将检索出表中所有列的数据记录。

4.2.3. 查询特定列的数据

如果只想检索表中的特定列数据,可以通过在 SELECT 语句中指定列名来实现。

SELECT column1, column2 FROM table_name;

这将检索出表中指定列的数据记录。

4.2.4. 使用 WHERE 子句筛选数据

WHERE 子句允许我们根据特定条件筛选检索的数据记录。

SELECT column1, column2 
FROM table_name
WHERE condition;

示例:

SELECT * FROM employees
WHERE department = 'IT';

示例将检索出部门为 IT 的所有员工的数据记录。

4.2.5. 使用 ORDER BY 子句排序数据

ORDER BY 子句允许我们根据指定的列对检索到的数据进行排序。

SELECT column1, column2 
FROM table_name
ORDER BY column1 ASC/DESC;

示例:

SELECT * FROM employees
ORDER BY salary DESC;

示例将按照员工薪资(salary)的降序排列检索到的数据记录。

4.2.6. 使用 LIMIT 子句限制数据行数

LIMIT 子句允许我们限制检索到的数据行数。

SELECT column1, column2 
FROM table_name
LIMIT number;

示例:

SELECT * FROM employees
LIMIT 10;

示例将检索出前 10 条员工的数据记录。

4.2.7. 结合多个条件进行查询

WHERE 子句中,可以使用 AND、OR、NOT 等逻辑操作符结合多个条件进行查询。

SELECT column1, column2 
FROM table_name
WHERE condition1 AND condition2;

示例:

SELECT * FROM employees
WHERE department = 'IT' AND age > 30;

示例将检索出部门为 IT 且年龄大于 30 岁的员工的数据记录。

4.2.8. 使用通配符进行模糊查询

WHERE 子句中,可以使用通配符 % 进行模糊查询。

示例:

SELECT * FROM employees
WHERE name LIKE 'John%';

示例将检索出姓名以 "John" 开头的所有员工的数据记录。

通过 SELECT 查询语句,我们可以根据特定条件从数据库中检索出所需的数据,实现数据的筛选、排序和限制。

 

4.3.WHERE 子句和运算符

在 MySQL 数据库中,WHERE 子句和运算符用于筛选检索的数据,允许我们根据特定条件从数据库中选择性地获取数据。

4.3.1. WHERE 子句的基本结构

WHERE 子句用于在 SELECT 查询语句中指定条件,以筛选出符合条件的数据行。它的基本语法如下:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

在这个语法中,condition 是一个逻辑表达式,用于定义检索数据的条件。

4.3.2. WHERE 子句中的运算符

在 WHERE 子句中,我们可以使用以下常用的运算符来构建条件:

  • 比较运算符:

    • =(等于)
    • <>!=(不等于)
    • >(大于)
    • <(小于)
    • >=(大于等于)
    • <=(小于等于)
  • 逻辑运算符:

    • AND(与)
    • OR(或)
    • NOT(非)
  • 模糊匹配运算符:

    • LIKE(用于模糊匹配)
    • IN(用于指定多个值进行匹配)
    • BETWEEN(用于指定范围)

4.3.3. 示例:使用 WHERE 子句查询数据

通过一些示例来演示 WHERE 子句的使用:

  • 基本的等于运算符:
SELECT * FROM employees
WHERE department = 'IT';

以上查询将检索出部门为 IT 的所有员工的数据。

  • 使用比较运算符:
SELECT * FROM employees
WHERE age > 30 AND salary < 50000;

以上查询将检索出年龄大于 30 岁且薪资低于 50000 的员工的数据。

  • 模糊匹配运算符:
SELECT * FROM employees
WHERE name LIKE 'John%';

以上查询将检索出名字以 "John" 开头的所有员工的数据。

  • 使用逻辑运算符:
SELECT * FROM employees
WHERE department = 'IT' OR department = 'Finance';

以上查询将检索出部门为 IT 或 Finance 的所有员工的数据。

  • 使用 IN 运算符:
SELECT * FROM employees
WHERE department IN ('IT', 'Finance');

以上查询将检索出部门为 IT 或 Finance 的所有员工的数据,与上面的查询效果相同。

4.3.4. 使用 WHERE 子句的注意事项

  • 在使用 WHERE 子句时,应确保条件的准确性和合理性,以避免检索出错误的数据。
  • 使用合适的索引可以提高 WHERE 子句的查询性能,特别是在对大型表进行查询时。
  • 避免在 WHERE 子句中使用函数或表达式,这可能会导致索引失效,降低查询性能。

WHERE 子句和运算符是 SQL 查询中的重要组成部分,它们允许我们根据特定条件从数据库中检索出所需的数据。

 

4.4.ORDER BY 和 LIMIT 语句的使用

在 MySQL 数据库中,ORDER BY 和 LIMIT 语句用于对检索到的数据进行排序和限制结果集的行数。这两个语句在实际应用中经常用于优化数据查询和展示。

4.4.1. ORDER BY 语句

ORDER BY 语句用于对检索到的数据行按指定的列进行排序。它的基本语法如下:

SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC|DESC];
  • column1, column2, ...: 指定要检索的列名。
  • ASC|DESC: 可选项,表示升序(默认)或降序排列。

4.4.2. 示例:使用 ORDER BY 对数据排序

让我们通过一些示例来演示 ORDER BY 语句的使用:

  • 按升序排列:
SELECT * FROM employees
ORDER BY age ASC;

以上查询将按照员工年龄的升序排列检索到的数据行。

  • 按降序排列:
SELECT * FROM employees
ORDER BY salary DESC;

以上查询将按照员工薪资的降序排列检索到的数据行。

4.4.3. LIMIT 语句

LIMIT 语句用于限制检索到的数据行数。它的基本语法如下:

SELECT column1, column2, ...
FROM table_name
LIMIT number;

number: 指定要返回的行数。

4.4.4. 示例:使用 LIMIT 限制数据行数

让我们通过一些示例来演示 LIMIT 语句的使用:

  • 限制返回行数为 10 条:
SELECT * FROM employees
LIMIT 10;

以上查询将返回前 10 条员工数据行。

  • 结合 ORDER BY 和 LIMIT 使用:
SELECT * FROM employees
ORDER BY hire_date DESC
LIMIT 5;

以上查询将按照员工入职日期的降序排列,并返回最新的 5 条数据行。

4.4.5. ORDER BY 和 LIMIT 的注意事项

  • ORDER BYLIMIT 语句通常一起使用,以便对数据进行排序并限制返回的行数。
  • 在对大型数据集进行查询时,合理使用 ORDER BYLIMIT 可以提高查询性能,减少数据传输和处理的开销。
  • 要注意 LIMIT 子句的位置,应该在 ORDER BY 子句之后使用,否则可能得到不正确的结果。

 

标签:指南,检索,入门,数据库,MySQL,SQL,数据,SELECT
From: https://www.cnblogs.com/hxjcore/p/18034785

相关文章

  • MYSQl学习笔记19: 外键约束
    外键约束用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性具有外键的表(emp)称为子表外键关联的表(dept)称为父表外键约束创建表时添加createtable表名(字段名数据类型,[constrain][外键名称]foreignkey(外键字段名)references主表(主表......
  • MYSQL学习笔记20: 外键约束(删除/更新行为)
    外键约束删除/更新行为setdefault在mysql的默认引擎innodb中不支持CASCADEaltertable表名addconstraint外键名称foreignkey(外键字段)references主表名(主表字段名)onupdatecascadeondeletecascade;建立外键约束#如果父表和子表建立外键的字段有不同的......
  • MYSQL学习笔记17: 流程控制函数(IF, CASE)
    流程控制函数(IF,CASE)ifselectif(true,'ok','error');selectif(false,'ok','error');/*相当于iftrue:ok;else:error;*/ifnullselectifnull('ok','default');selectifnull(......
  • MYSQL学习笔记18: 约束
    约束约束是作用于表中字段上的规则,用于限制存储在表中的数据.保证表中的正确性,有效性和完整性约束作用于表中字段上,可以在建表和修改表时为表添加约束按照需求创建表,并创建约束createtableusers(idintprimarykeyauto_incrementcomment'主键',n......
  • MYSQL学习笔记15: 数值函数
    数值函数ceil向上取整(并不是四舍五入)selectceil(1.5);selectceil(2.1);floor向下取整selectfloor(3.9);selectfloor(2.0);mod取模(余数)selectmod(7,4);rand0-1的随机小数,不包括0和1selectrand();round四舍五入#参数2:保留的......
  • MYSQL学习笔记16: 日期函数
    日期函数返回当前日期selectcurdate();返回当前时间(24小时制)selectcurtime();返回当前日期+时间selectnow();YEAR,MONTH,DAY获取当前时间对应的年月日selectyear(now());selectmonth(now());selectday(now());在制定日期上增加时间后的日期......
  • MYSQL学习笔记9: DQL排序查询(升降序)
    DQL排序查询select字段列表from表名orderby字段1排序方式1,字段2排序方式2;排序方式ASC升序(默认)DESC降序如果是多字段排序,第一个字段值相同,会根据第二个字段的值进行排序,以此类推按年龄降序排序select*fromworkersorderbyagedesc;......
  • MYSQL学习笔记10: DQL分页查询(利用limit)
    DQL分页查询(利用limit)select字段列表from表名limit起始索引,查询记录数;起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数分页查询是数据库的方言,不同数据库有不同的实现,MYSQL中是LIMIT如果查询的是第一页的数据,起始索引可以省略,直接简写为l......
  • MYSQL练习1: DQL查询练习
    MYSQL练习1DQL查询练习查询年龄为20,21,22,23岁的员工信息select*fromworkerswhereagein(20,21,22,23);查询性别为男,年龄在20-40岁间,姓名长度为3的员工select*fromworkers    where    gender='男'    and    agebetwe......
  • MYSQL学习笔记12: DCL数据控制语言(用户操作)
    DCL数据控制语言查询用户#用户信息保存在数据库mysql的user表中usemysql;select*fromuser;创建用户createuser'用户名'@'主机名'identifiedby'密码';在主机localhost创建一个新用户createuser'hikari39'@'localhost'identifiedby'123456......