一,数据库概述

1)什么是数据库

数据库(DateBase)是指数据库系统中按照⼀定的方式组织的、存储在外部存储设备上的、能为多个用户共享的及与应⽤程序相互独⽴的相关数据集合。它不仅包括描述事物的数据本身,⽽且还包括相关事物之间的联系。

2)什么数据库管理系统

数据库管理系统(Database Management System)是⼀种操纵和管理数据库的⼤型软件,⽤于建 立、使用和维护数据库,简称DBMS。它对数据库进⾏统⼀的管理和控制,以保证数据库的安全性
和完整性。
数据库、数据库管理系统、应⽤程序之间的关系,如下图所示:
常⻅的数据库管理系统为:
关系型数据库管理系统(Oracle、MySQL、SQL Server、PostgreSQL(开源免费)、IBM Db2, SQlite)
非关系型数据库管理系统(MongoDB、Cassandra、Redis、Couchbase)

Mysql特点:
关系型数据库通常都是处理⼀些结构化的数据,这些数据通常都是有某些对应关系; 而非关系型数据库(NoSQL)通常⽤于存储那些类型不固定的,也没有什么规律的数据。

3)mysql数据库简介

MySQL是⼀个免费开源的关系型数据库管理系统,由瑞典MySQL AB公司开发,后来被Sun公司收购,Sun公司后来被Oracle公司收购,⽬前属于Orace旗下
mysql是基于CS 模式的数据库管理系统的,服务端⼀般在机房长期运行,客户端在需要使⽤的时候才启动,想要访问服务器必须要在客户端进⾏连接和授权认证过程。针对mysql软件,mysql公司开发了客户端软件来帮助我们管理mysql软件,比如MySQL 5.7 Command Line Client,、 MySQL Workbench 等,还有第三方的数据库开发⼯具还有 Navicat SQLyog phpMyAdmin 等。

mysql特点:
1.免费、开源数据库 ,小巧、功能齐全,使用便捷
2.可运行于Windows或Linux操作系统
3.可适用于中小型甚⾄⼤型网站应⽤
4.为多种编程语提供了API,如C、C++、Python、Java、Perl、PHP、Eiffel、Ruby等。

二,mysql的安装

1)下载软件包

从MySQL官方网站( https://dev.mysql.com/downloads/mysql/ )下载最新的MySQL Community Server版本。

2)安装软件包

涉及到关键步骤截图如下:

1.选择自定义安装

2. 选择安装组件

3) 设置root账户密码

在安装过程中,MySQL会⾃动创建⼀个 root ⽤户,并提示输⼊ root ⼝令。 配置端口(1000~65535),不配置的话默认为3306。

安装完成,可以在开始菜单中看到安装目录如下所示:

三,mysql软件简介

1)MySQL实用工具程序说明

  • mysqld:这是 SQL 后台程序,即 MySQL 服务器的守护进程。客户端应用程序通过连接到这个服务来访问数据库。

  • mysql:这是一个交互式的 SQL 命令行工具。用户可以通过这个工具连接到 MySQL 服务器,并执行 SQL 语句来查询和管理数据库。

  • mysqlshow:这是一个客户端工具,用于方便地查看数据库、表、列以及索引的相关信息。

  • mysqldump:这是一个用于进行逻辑备份的客户端命令行工具。它可以将一个或多个 MySQL 数据库转储到一个文件中,这个文件包含了一系列的 SQL 语句,可以用来重新创建原始的数据库对象定义和表数据。这个工具常用于数据库的备份或将其迁移到另一台 SQL 服务器。mysqldump 命令还可以生成 CSV、其他分隔符文本或 XML 格式的输出。

    主要用途:

    • 数据库备份:通过生成包含 CREATE TABLE 和 INSERT INTO 等语句的 .sql 文件来备份整个数据库或特定表。

    • 数据库迁移:将数据从一个 MySQL 服务器导出,然后导入到另一个服务器。

    • 数据恢复:使用 mysql 客户端执行 mysqldump 生成的备份文件,可以将数据库恢复到备份时的状态。

2)mysql核心文件位置说明

默认数据库⽬录:C:\ProgramData\MySQL\MySQL Server 5.7\Data
配置⽂件:C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
如果在linux下其配置⽂件路径为: /etc/mysql/my.cnf my.cnf

四,sql语言简介

结构化查询语言(Structured Query Language)简称SQL,是⼀种特殊⽬的的编程语言,是⼀种数据库查询和程序设计语⾔,⽤于存取数据以及查询、更新和管理关系数据库系统。

1)SQL语言的分类

1. 数据查询语⾔(DQL):⽤来查询记录。保留字:select、where、order by、group by、having。
2. 据操作语⾔(DML):⽤来操纵数据库记录。保留字:insert、update、delete。
3. 数据定义语⾔(DDL):⽤来定义数据库的表、库、列等对象。保留字:create、alter、drop、truncate
4. 数据控制语⾔(DCL):⽤来定义访问权限和安全级别。保留字:commit,rollback、savepoint、grant、revoke。

SQL语句示例如下:
创建学生表:
CREATE TABLE stu (
    sid VARCHAR(20) NOT NULL UNIQUE, -- 学号,唯一
    sname VARCHAR(50) NOT NULL, -- 姓名
    sex ENUM('男', '女') NOT NULL, -- 性别
    age INT NOT NULL, -- 年龄
    chinese INT NOT NULL, -- 语文成绩(整数)
    math INT NOT NULL -- 数学成绩(整数)
)  CHARSET=utf8mb4 ;

向表中插入数据:

INSERT INTO stu (sid, sname, sex, age, chinese, math) VALUES
('2023001', '张三', '男', 18, 85, 92),
('2023002', '李四', '女', 17, 90, 88),
('2023003', '王五', '男', 18, 78, 95),
('2023004', '赵六', '女', 49, 92, 87),
('2023005', '钱七', '男', 17, 88, 90),
('2023006', '孙八', '女', 18, 82, 85),
('2023007', '周九', '男', 22, 76, 93),
('2023008', '吴十', '女', 17, 91, 89),
('2023009', '郑一', '男', 28, 84, 86),
('2023010', '王二', '女', 19, 89, 91),
('2023011', '刘一', '男', 17, 79, 88),
('2023012', '陈二', '女', 18, 93, 94),
('2023013', '杨三', '男', 19, 81, 79),
('2023014', '黄四', '女', 37, 87, 90),
('2023015', '赵五', '男', 58, 83, 82),
('2023016', '吴六', '女', 19, 90, 85),
('2023017', '周七', '男', 7, 77, 96),
('2023018', '徐八', '女', 18, 86, 89),
('2023019', '孙九', '男', 19, 80, 87),
('2023020', '马十', '女', 15, 92, 93);

2)语法规则

  1. 命令结束符

    • ; (分号):这是最标准的 SQL 语句结束符。几乎所有的数据库系统都使用分号来分隔多条 SQL 语句。在一个脚本或程序中执行多条语句时,必须使用分号。

    • \g:这个命令不是标准的 SQL 语法,而是 MySQL 命令行客户端特有的一个命令,其作用与分号相同,都是执行当前输入的语句。在其他数据库的命令行工具或图形化界面中,\g 通常是无效的。

  2. 大小写规范

    • 关键字:SQL 关键字(如 SELECT, FROM, WHERE 等)是大小写不敏感的。SELECT 和 select 会被数据库同等对待。

    • 表名和列名:这部分的大小写敏感性取决于具体的数据库系统和其配置。 例如,在 Windows 上的 MySQL 默认是不区分大小写的,但在 Linux 上通常是区分的。PostgreSQL 默认将不带引号的标识符转换为小写。

    • 最佳实践:为了提高代码的可读性和可维护性,强烈建议遵循一种统一的风格,例如将所有 SQL 关键字大写,而将表名和列名小写。

  3. 空格和换行

    • 在 SQL 语句中,除了字符串字面量(即引号内的内容)之外,多个空格、制表符或换行符通常被视作一个空格处理。这意味着你可以自由地使用换行和缩进来格式化你的代码,以提高可读性,而不会影响查询的执行。

    • 需要注意的是,空格在字符串值内部是会被保留的。

  4. 值的引用

    • 字符串和日期/时间类型:标准的 SQL 语法规定,字符串和日期时间类型的字面量值必须使用单引号 (') 括起来。

    • 数值类型:数值类型(如 INT, FLOAT)的值不需要使用引号。

    • 标识符(表名/列名):通常情况下,如果表名或列名不包含特殊字符、空格且不是关键字,则不需要引号。如果需要,标准 SQL 使用双引号 (") 来界定标识符。不过,不同的系统有差异,例如 MySQL 使用反引号 (`)

  5. 注释语法
    SQL 提供了多种注释代码的方式,这对于解释复杂查询或临时禁用某段代码非常有用。 [5, 7]

    • -- (双破折号后跟一个空格): 这是最常见的单行注释。从 -- 开始直到该行结束的所有内容都会被忽略。

    • /* ... */:这是多行注释或块注释。从 /* 开始到 */ 结束的所有内容,即便是跨越多行,也都会被忽略。

    • #:这也是一种单行注释,但它主要在 MySQL 中使用,不属于所有数据库都支持的标准 SQL 语法。

  6. 列/字段别名 (Alias)
    别名是为表或列提供一个临时的、更具可读性的名称,在查询结果中显示或在复杂查询(如连接多个表)中使用。

    • AS 关键字:使用 AS 关键字来指定别名是最佳实践,因为它能显著提高代码的可读性,尽管在大多数数据库中 AS 是可以省略的。

    • 别名的引号

      • 如果别名不包含空格、特殊字符或不是关键字(例如 order_count),则不需要使用引号。

      • 如果别名包含空格(例如 "Order Count")、是关键字或希望保留大小写,则应使用双引号 (")。 [19] 在 MySQL 中,也可以使用反引号 (`)。[13] 使用单引号定义别名是不符合 SQL 标准的。

五,数据库的基础操作

1)启动与关闭mysql服务

windows系统下启动mysql服务有两种方式:
1、通过命令启动
net start 服务名
例如: net start mysql57
net stop 服务名
注意:服务名是按照指定的名字,比如我安装的时候起的mysql57,在上文中的设置root账户密码的第三步。
2、通过控制⾯板中的管理⼯具进⾏启动和关闭。
 
Linux系统下启动mysql服务有两种方式:
 
[root@localhost zzx]# service mysql start
Starting MySQL[ OK ]
如果在启动状态,需要重启服务,可以⽤以下命令直接重启,⽽不需要先关闭再启动:
[root@localhost mysql]# service mysql restart
Shutting down MySQL..[ OK ]
Starting MySQL[ O K ]
关闭服务:
[root@localhost bin]# service mysql stop

2)登录与退出mysql

登陆mysql有两种⽅法:
1.通过控制台: mysql -u⽤户名 -p 回车输入密码
注意,如果是连接到另外的机器上,则需要加⼊⼀个参数-h机器IP
例如:mysql -h ip地址 -uroot -p
如果提示找不到mysql命令,可以将mysql相关的可执⾏程序路径添加到环境变量中。
2.使用mysql自带的命令行客户端登录
打开MySQL 5.7 Command Line Client - Unicode,输⼊密码并回车即显示连接数据库成功。
登录成功后,如果需要退出mysql,在命令行中输⼊: quit 。

mysql 命令行工具详解

mysql 是一个交互式的命令行客户端,用于连接 MySQL 服务器并执行 SQL 语句。

1. 基本语法

mysql [options] [database_name]

2. 常用选项 [options]

  • -u, --user=...
    指定登录的用户名。

  • -p, --password[=...]
    指定用户密码。为安全起见,建议省略密码,在提示符下输入。

  • -h, --host=...
    指定要连接的服务器主机名或 IP 地址(默认为 localhost)。

  • -P, --port=...
    指定服务器的 TCP/IP 端口号(注意是大写P),默认为 3306。

  • -e, --execute="..."
    在命令行直接执行 SQL 语句后退出,不进入交互模式。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}
    明确指定连接时使用的通信协议。

3)数据库的相关操作

在mysql数据库中,数据库分为:系统数据库和⽤户数据库。
系统数据库就是安装完Mysql服务器后,会附带⼀些数据库,主要记录⼀些必需的信息,用户不能直接修改数据库。

系统数据库说明:

MySQL 服务器默认包含几个系统数据库,它们对于服务器的正常运行、性能监控和元数据管理至关重要。

  • information_schema
    这是一个虚拟数据库,提供了访问数据库元数据的方式。 元数据是关于数据的数据,例如数据库名、表名、列的数据类型、访问权限、字符集和索引信息等。 该库中的表是只读的,不能进行修改。

  • mysql
    这是 MySQL 的核心授权数据库,负责存储服务器运行所需的控制和管理信息。它包含了用户账户、访问权限、存储过程、事件、时区等关键数据。 对这个库的修改会立刻影响服务器的操作。例如,当创建一个新用户或修改用户密码时,实际上就是修改了 mysql.user 这个表。

  • performance_schema
    这是一个用于监控 MySQL 服务器性能的功能。 它主要收集服务器在运行时详细的、底层的性能参数,例如查询执行的各个阶段所花费的时间、等待的锁、I/O 操作等。 默认情况下,这个功能可能是关闭的,需要手动开启以进行性能分析和诊断。

  • sys
    该库可以看作是 performance_schema 的一个可读性更强的视图。 它通过一系列的视图、函数和存储过程,将 performance_schema 中复杂、原始的性能数据汇总并格式化为更易于理解的摘要报告。 这使得数据库管理员(DBA)能够更轻松地解读性能数据并快速定位问题。

用户数据库操作

用户数据库是指根据实际业务需求创建的,用于存储应用程序或项目数据的数据库。

1. 创建数据库

用于新建一个数据库来存储数据。

  • 语法

    CREATE DATABASE [IF NOT EXISTS] 数据库名;
  • 注意事项

    • IF NOT EXISTS 是一个可选子句,如果添加了该子句,那么只有在数据库不存在时才会执行创建操作,避免了因数据库已存在而导致的错误。

    • 数据库名在其所在的服务器上必须是唯一的。

    • 数据库名可以由字母、数字、下划线 _、@、# 和 $ 组成。但是,首字符不能是数字或 $。同时,名称不能是 MySQL 的保留关键字。

  • 成功提示

    • Query OK: 表示 SQL 语句已成功执行。

    • 1 row affected: 表示该操作影响了一行记录。

    • 0.02 sec: 表示操作完成所花费的时间。

2. 使用数据库

在执行针对特定数据库中表的操作(如 SELECT, INSERT 等)之前,需要先切换到该数据库。

  • 语法

    USE 数据库名;
3. 查看数据库

用于列出服务器上所有的数据库或查看当前正在使用的数据库。

  • 显示所有数据库

    SHOW DATABASES;
  • 查询当前正在使用的数据库

    codeSQL
    SELECT DATABASE();
4. 删除数据库

用于从 MySQL 服务器中永久移除一个数据库及其包含的所有表和数据。此操作不可逆,请谨慎使用

  • 语法

    DROP DATABASE [IF EXISTS] 数据库名;
  • 说明

    • IF EXISTS 是一个可选子句,如果添加了该子句,那么只有在该数据库确实存在时才会执行删除操作,避免了因数据库不存在而报错。

4)寻求帮助

可以使⽤“? 类别名称”的⽅式针对⽤户感兴趣的内容做进⼀步的查看。
例如,想看看 MySQL 中都⽀持哪些数据类型,可以执行“? data types”命令 。

如果需要快速查阅某项语法时,可以使⽤关键字进⾏快速查询。例如,想知道 show 命令都能看些什么东⻄,可以用如下命令:

如果想看 CREATE TABLE 的语法,可以使⽤以下命令:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐