【MySQL数据库】Ubuntu下的mysql
目录
1,安装mysql数据库
2,mysql默认安装路径
3,my.cnf配置文件
4,mysql运用的相关指令及说明
5,数据库、表的备份和恢复
6,SQL语句的分类
mysql是一套给我们提供数据存取的,更加有利于管理数据的服务的网络程序。下面,以Ubuntu系统为例来介绍mysql数据库。
1,安装mysql数据库
sudo apt install mysql-server
安装完数据库后, 首先,这里会存在客户端mysql和服务端mysqld两个工具软件,我们使用指令 which mysql、which mysqld 可查看到其路径,一般我们都是使用客户端mysql进行数据库操作的,服务端mysqld负责处理来自客户端的请求;其次,数据库安装后默认是没有启动的,使用 systemctl start mysql 可开启mysql服务。
2,mysql默认安装路径
在Ubuntu系统下,安装的MySQL数据库的默认路径如下:
- 可执行文件:MySQL服务器的可执行文件位于
/usr/sbin/mysqld
(直接使用which即可查找到),MySQL客户端位于/usr/bin/mysql
。mysqld
是MySQL服务器的主要执行文件,通过它可以启动、停止和管理MySQL数据库。 - 配置文件:
my.cnf
是MYSQL的配置文件,该配置文件包含了MySQL服务器的各种设置选项,如端口号、日志路径、缓冲区大小等。可以通过编辑该配置文件来修改MySQL服务器的配置。MySQL服务器的配置文件通常位于/etc/mysql/mysql.conf.d/mysqld.cnf
或/etc/mysql/my.cnf
。 - 数据目录:MySQL服务器的数据目录位于
/var/lib/mysql
。在该目录下,MySQL会存储所有的数据库文件和表数据。在默认的安装配置下,每个数据库都会在该目录下创建一个独立的子目录。 - 日志文件:MySQL的日志文件通常位于
/var/log/mysql
。这些日志文件记录了MySQL服务器的运行状况、错误信息和其他相关日志。
3,my.cnf配置文件
my.cnf是数据库MySQL的核心配置文件。它用于控制MySQL的运行行为和进行性能优化。以下是一些关键的段和配置项:
-
[client]:这个部分配置影响所有MySQL客户端程序的行为,如连接端口、字符集以及用于本地连接的socket套接字等。例如:
port = 3306。
指定MySQL客户端连接端口3306(默认连接端口就是3306)。socket = /var/lib/mysql/mysql.sock。
用于本地连接的socket套接字路径。default-character-set = utf8mb4。
设置客户端默认字符集,一般情况下默认即可。
-
[mysqld]:这是MySQL服务器的主要配置段,大部分与服务相关的设置都在这里,包括数据存储路径、缓冲池大小、线程数、日志设置等。例如:
port = 3306。
指定MySQL服务器监听端口。它一般会修改为指定的端口。socket = /var/lib/mysql/mysql.sock。
MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件mysql.sock。一般直接设置为mysql.sock文件路径即可,通常不用管理。datadir = /var/lib/mysql。
指定数据文件存放的目录。(若不配置,数据默认在/var/lib/mysql路径下。这个子目录用于存储MySQL数据库的数据文件,修改到其它路径下可能会报错,这里直接在此路径下即可)character_set_server = utf8mb4
。
设置服务端为utf8mb4的编码格式。默认编格式是utf8mb4,一般情况下使用默认即可。default-storage-engine = lnnoDB。
设置存储引擎。默认的存储引擎是InnoDB。user = mysql。
指定MySQL启动用户。
请注意,修改my.cnf文件后,通常需要重启MySQL服务以使新设置生效。在进行重大配置更改前,建议备份原有的my.cnf文件,并逐步测试更改的影响。
4,mysql运用的相关指令及说明
1,启动mysql服务、停止mysql服务、重新启动mysql运行的指令如下:
启动mysql:systemctl start mysql
停止mysql:systemctl stop mysql
重新启动mysql:systemctl restart mysql
2,启动mysql
数据库。在Ubuntu系统下,使用mysql
命令行工具时,有多个常用选项可以帮助你启动MySQL数据库。以下是一些常用的mysql
命令行选项:
-
-u,全名--user
指定连接MySQL服务器时使用的用户名。例如:mysql -u root
以root身份启动mysql。 -
-p,全名--password
提示输入密码,或者如果后面紧跟密码,则使用该密码(不推荐在命令行中直接输入密码,因为这样做不安全)。例如:mysql -u root -p
-
-h,全名--host
指定要连接的MySQL服务器的主机名或IP地址。如果连接到本地服务器,可以省略此选项。例如:mysql -h localhost -u root
-
-P,全名--port
指定要连接的MySQL服务器的端口号。默认端口是3306。例如:mysql -P 3306 -u root
3,当你成功进入MYSQL后,MySQL客户端会尝试与MySQL服务器建立连接。如果连接成功,你就会看到一个MySQL提示符(通常是 mysql>
),表示你现在已经登录到MySQL服务器,可以开始执行SQL语句了。
SQL语句这里要说明下,这里输入的命令都是以分号(;)或g结尾,表示指令结束,开始进行服务处理。输入“ help ” 或 “ h ” 获取MYSQL基础命令帮助,例如:clear清除当前输入的指令,quit退出mysql,system clear(等价于Ctrl + l组合键)清屏等。
下面来说明下使用mysql的基础常用命令。
1,列出当前MySQL服务器实例上所有的数据库:
show databases;
相关说明:
其中,这个列表通常包括MySQL系统自带的数据库(如
mysql
、information_schema
、performance_schema
等)以及用户创建的任何数据库。
2,创建数据目录,即创建数据库:
create database [if not exists] [库名称] [character set 字符集名] [collate 校验规则]; 例如:create database data; 创建data数据库,是一种最简单的创建格式。
可选参数说明:
if not exists:表示若不存在即创建;若存在什么也不做。例如:create database if not exists data;
[character set 字符集名]:指定创建数据库时使用的字符集。字符集是编码集是一种规则集,编码集定义了字符与二进制数据之间的对应关系。这种对应关系确保了不同系统之间的文本数据能够正确地交互和解析,它直接影响到数据库中存储的文本数据的正确性和可读性。字符集定义了存储数据字符的编码格式,一般系统默认情况下使用utf8mb3字符集。
[collate 校验规则]:校验规则也是编码集的一种常用方式,它是在字符集内用于比较字符的一套规则,定义了字符之间的排序和比较方式,本质上是读取数据时采用的编码格式。默认情况下系统一般使用校验规则utf8_general_ci。
本质说明:
构建数据库,本质上就是在
/var/lib/mysql
目录下构建一个数据目录(在该目录下可以看到)。用户通过在客户端mysql下达指令,服务端mysqld接收指令后会在存储数据目录下建立一个数据库。
3,查看数据库使用的字符集:show variables like 'character_set_database';
展示数据库支持的字符集:show charset;
4,查看数据库使用的校验规则:show variables like 'collation_database';
展示数据库支持的校验规则:show collation;
5,删除数据库:drop database [删除数据库的名称]; 例如:drop database data;
6,修改数据库的字符集或校验规则:alter data [数据库名称] [character set 字符集名] [collate 校验规则];
注意:
数据库的修改一般都是修改数据库使用的字符集和校验规则。
7,进入到创建的data数据库中:use data;
我们可以使用指令:select database(); 查看当前在哪个数据库下
8,在data数据库下创建一个表:
create table [if not exists] [表名称] (
[定义表中的列] [指定列的数据类型,如int、varchar等] [comment '描述说明'],
...
[可选参数,暂时先不用管])[character set 字符集名] [collate 校验规则] [engine 存储引擎];
可选参数说明:
if not exists:与建库一样,表示若不存在即创建;若存在什么也不做。
[comment '描述说明']:对创建该列的说明信息。
[character set 字符集名]:与建库一样,指定建表时使用的字符集。
[collate 校验规则]:与建库一样,指定建表时使用的校验规则。
[engine 存储引擎]:指定建表时的存储引擎。
varchar类型:
varchar 是一种在数据库中用于存储可变长度字符串的数据类型。与固定长度的 char 类型不同,varchar 类型会根据实际存储的字符串长度来动态分配存储空间。具体来说,varchar 类型会指定一个最大长度(在创建表时定义),但实际存储时只会占用必要的空间。这意味着,如果你有一个 varchar(255)类型的列,并且存储了一个长度为 10 的字符串,那么它只会占用 10 个字符加上长度信息的空间,而不是固定的 255 个字符的空间。
9,向表中插入数据,以上图为例:
选择性插入:insert into student (name, age, gender) values ('张三', 20, '男');
依次插入:insert into student values ('孩子', '30', '女');
10,查询表中数据,以上图为例:
查询表student所有列的数据:select * from student;
查询表student中age列中的所有数据:select age from student;
11,查看表结构的详细信息:desc [表名称];
12,修改表名:alter table [原表名] rename to [更改后表名]; 其中,rename to 中的 to 可省略。
13,修改表中的列名称:alter table [表名] change [列名称] [更改后的列名称] [新的属性];
注意:change 只能改变该列的属性信息,如名称,数据类型,not null,default,不能改变列的约束,如主键primary key,唯一键unique。若不明白,后面文章会提到这方面的知识。
14,新增加表的列:alter table [表名] add [列名称] [列的数据类型] [可选结构...] ..... [after 列名称];
相关参数说明:
[after 列名称]:表示新增加到具体哪个列名称的后面。
注意:
新增表的列结构的参数 [列名称] [列的数据类型] [可选结构...] ... 与插入一样。
15,修改表中某一列下的一个属性:alter table [表名] modify [列名称] [列的属性];
说明:属性信息有很多,比如列的类型,字符集,校验规则,存储引擎等。
16,删除表中的某一列:alter table [表名] drop [列名称];
17,展示在当前数据库下的表:show tables;
18,删除表:drop table [表名称];
19,展示创建数据库或表结构时的信息:show create table [数据库名称或表名称] [G];
说明:'G' 选项这里可以格式化显示出创建指令的具体信息。
20,清屏:system clear;
最后这里说明一下,SQL指令不区分大小写,指令大写和小写都可以。
5,数据库、表的备份和恢复
1,数据库和表的备份
备份单个或多个数据库:
mysqldump -u [用户名] -p [密码] -B [数据库名1] [数据库名2] ... > [数据库备份存储的文件路径]
示例1:mysqldump -P 3306 -u root -p -B data > ./data.sql
示例2:mysqldump -P 3306 -u root -p -B data data2 data3 > ./data.sql
备份一个或多个表:mysqldump -u [用户名] -p [密码] [数据库名] [表1] [表2] ... > [表备份存储的文件路径]
示例:mysqldump -P 3306 -u root -p data student > ./student.sql
注意:
首先,备份文件后缀是 .sql ,上面示例中data.sql文件里的内容,其实就是把整个数据库data的信息都装载了这个文件中;其次,数据库备份的操作都是在shell/bash指令行中运行的,端口号若不说明一般默认配置文件中的端口号——3306。
2,数据库和表的还原
指令:source [备份数据库/表文件的路径];
示例:source /var/lib/mysql/data2/data.sql;
注意:还原操作是在mysql客户端的命令行上运行的。
在数据库下建表,本质就是在该目录下建立文件。所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个用户建立的数据库,一般开发人员会针对每一个应用创建一个数据库,而为保存应用中实体的数据,一般会在数据库中创建多个表结构,以保存程序中实体的数据。
6,SQL语句的分类
- DDL:数据定义语言,用来维护存储数据的结构。
该语句代表指令有:create, drop, alter。
- DML:数据操纵语言,用来对数据进行操作。
该语句代表指令:insert,delete,update。
DML中又单独分了一个DQL,数据查询语言,代表指令:select。
- DCL:数据控制语言,主要负责权限管理和事务。
该语句代表指令:grant,revoke,commit。