MySQL基础(一) 前置安装以及DDL详解

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL基础(一) 前置安装以及DDL详解

前言

MySQL 具有开源免费、跨平台性、可扩展性、安全性和社区支持等优点,这些优势使得它成为当今最主流的数据库之一,如今的互联网时代我们难免会与各种数据打交道。因此,学习一些数据库相关知识也是必要的。


一.数据库的相关概念

1.1数据库定义:

数据库就是按照一定的规律将数据(文本类型的数据,图像、音乐、声音等各种数据)存储和管理数据的计算机软件系统。简言之,可以理解为存放数据的“仓库”。

1.2数据库(管理系统)类型:

数据库管理系统是用来管理数据库而设计的电脑软件系统,常被称为数据库,如mysql数据库。

1.2.1:关系数据库管理系统

全名(Relational Database Management System:RDBMS)

主要特点是采用表格的储存方式, 数据以行和列的方式进行存储,要读取和查询都十分方便,具有灵活性

例如:MySQL、Microsoft SQL Server(仅支持windows下运行)、Oracle、MariaDB(MySQL的代替品,英文维基百科从MySQL转向MariaDB)、Sybase等。

1.2.2: 非关系型数据库(NoSQL):

分类:
键值(Key-Value)存储数据库:主要用到一个有特定的键和指针指向特定数据的哈希表。
                    优点:简单、易部署.  缺点:对其中部分值进行查询或更新时效率比较低.
                    例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.
列存储数据库: 键指向了多个列,这些列是由列家族来安排的。
         如:Cassandra, HBase, Riak.
文档型数据库:数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。 
             同第一种键值存储相类似,可
             以看作是键值数据库的升级版.允许之间 嵌套键值.
         如:CouchDB, MongoDb,SequoiaDB(国内开源)
图形(Graph)数据库:使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标
                 准的查询语言(SQL),因此进行数据库查询需要制定数据模型。
              如:Neo4J, InfoGrid, Infinite Graph。

相比之下去掉了关系数据库的关系型特性,数据之间无关系,通常以数据集的方式,大量的数据集中存储在一起,类似于键值对、图结构或者文档。增强了架构可拓展性,高性能,数据库结构简单。

二.MySQL数据库安装和配置

2.1:MySQL下载:

进入MySQL官网下载适合操作系统版本的压缩文件,然后将压缩文件解压到一个非中文的目录中。(由于路径识别的时候出现中文可能会报错)

可以下载5.7.24这个版本 ,原因是各个库支持的最完善且相对于最新版本更加的稳定。

2.2:MySQL安装与配置:

方法一:MySQL具体安装方法可参见MySQL技能树,这里就不再赘述了。

方法二:通过phpstudy直接安装MySQL的,比较方便。phpstudy下载官网

2.3:MySQL登录与退出:

1.cmd命令行启动(添加环境变量后):

在命令提示符窗口中运行net start mysql,此时,我们已经成功启动MySQL服务。

net start mysql   

运行net stop mysql即可停止MySQL服务。

net stop mysql

可以通过运行mysqladmin -u root password 1234修改默认账户密码,这里的1234指默认管理员(即root账户)的密码。

mysqladmin -u root password 1234

在命令行中输入:mysql -uroot -p,按照提示输入密码 ,即登录成功。

登录命令中的参数:mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306);

退出MySQL时输入:exit或quit.

2.phpstudy启动图形化mysql界面:

输入用户名,密码,执行即可

也可以将mysql安装路径加入环境变量用命令行启动mysql,不过要先通过phpstudy启动mysql服务。

2.4:MySQL卸载(cmd):

第一步:运行net stop mysql

第二步:运行mysqld -remove mysql

第三步:删除MySQL目录及相关的环境变量。

三.MySQL语句学习

3.1:SQL简介:

SQL是Structured Query Language的缩写,是一种用于管理关系型数据库的语言。它可以用于创建、修改和查询数据库中的数据,以及控制数据库的访问权限和安全性。

优点:因其简单、易学、灵活、高效等

被广泛应用于企业级应用、Web应用、移动应用等领域。

3.2:SQL类型:

SQL语言包括数据定义语言(DDL)数据操作语言(DML)数据查询语言(DQL)数据控制语言(DCL) 等多种类型,每种类型都有不同的语法和用途。(sql语句结尾以分号";"结束)

3.2.1 数据定义语言DDL

全名(Data Definition Language):

用来对进行数据库对象的创建,删除和修改的,所以DDL主包括create(创建)drop(删除)alter(修改)truncate (清空)show(查询)use(使用)

其中数据库对象包含数据库(database)、表(table)、列(column)、索引(index)、约束(constraint)、视图(view)、触发器(trigger)、存储过程(StoredProcedure)和函数(function).这里仅以库,表,列进行阐述。

SQL语句中关键词(如create,database,select等单词)建议使用时候都用大写,否则可能不能正常执行

3.2.1.1:show:

查所有库名:show databases;

查某个库下所有表名:show tables;

查询表结构:desc 表名称;

拓:(select * from 表名;查询表中内容)

3.2.1.2:create:

创建数据库: create database 数据库名;

创建表:create table 表名称(

字段名1 数据类型,

字段名2 数据类型,

字段名n 数据类型 #这里是不需要加上,的

);

补充:      
SQL创建表时可以定义多种数据类型,常见的数据类型包括:
1. 整数类型(INT、INTEGER):用于存储整数,可以指定长度和是否有符号。
2. 小数类型(DECIMAL、NUMERIC、FLOAT、DOUBLE):用于存储小数,可以指定精度和范围。
3. 字符串类型(CHAR、VARCHAR、TEXT):用于存储字符串,可以指定长度和字符集。
4. 日期时间类型(DATE、TIME、DATETIME、TIMESTAMP):用于存储日期和时间,可以指定格式和时区。
5. 布尔类型(BOOLEAN):用于存储真假值。
6. 二进制类型(BLOB、BINARY、VARBINARY):用于存储二进制数据,如图片、音频等。
需要注意的是,不同的数据库管理系统可能支持不同的数据类型,而且在定义数据类型时需要考虑数据的实际需求和存储
空间的限制。
3.2.1.3:use:

使用(进入某个数据库):use 数据库名; (分号可以不加,还是建议加上养成习惯…)

3.2.1.4:alter:

关于MySQL对于数据库的重命名:

在MySQL中,尽管有RENAME命令,但是它并不支持重命名数据库1。如果需要更改一个数据库

的名称,可以使用下列步骤进行:

1. 创建一个新的数据库,并将源数据库中的数据导入到新数据库中。
2.  删除原数据库。
下面是具体的步骤:
1.  创建一个新的数据库:

CREATE DATABASE new_database_name;

2.  将原数据库中的数据导入到新数据库中:

USE new_database_name;

SOURCE /path/to/old_database.sql;

其中,将SOURCE后的路径改为源数据库的.sql文件所在路径。

3.  删除原数据库:

DROP DATABASE old_database_name;

通过以上步骤,可以把原数据库重命名为一个新的数据库名了。注意在重命名数据库的过程中,务必要先备份数据,新数据库的名称不要与已存在的数据库重名。该方法也适用于其他关系型数据库软件。
• 1

对表操作:

修改表名:

alter table 表名 rename to 新的表名;

增加一列:

alter table 表名 add 列名 数据类型;

修改数据类型:

alter table 表名 modify 列名 新数据类型;

修改列名和数据类型:

alter table 表名 change 列名 新列名 新数据类型;

删除列:

alter table 表名 drop 列名;

(修改表名时要注意命名规范,否则会报错,比如数字,下划线等的位置通常有要求)

(其他命令可以自行演示)

3.2.1.5:drop:

drop table 表名; drop database 数据库名;

删除表(判断表/数据库是否存在):

drop table if exists 表名; drop table if exists 数据库名;

3.2.1.6:truncate:

truncake 表示清空,具体表现为把一个表结构摧毁然后重构,只剩表头。

使用语法
truncate的作用是清空表或者说是截断表,只能作用于表。truncate的语法很简单,后面直接跟表名即可。
例如: truncate table     tbl_name 或者 truncate tbl_name 。执行truncate语句需要拥有表的drop权限,
从逻辑上讲,truncate table类似于delete删除所有行的语句或drop table然后再create table 语句的组合。
为了实现高性能,它绕过了删除数据的DML方法,因此,它不能回滚。尽管truncate table与delete相似,
但它被分类为DDL语句而不是DML语句。

3.2.2:数据操作语言 DML(Data Manipulation Language)

用于对数据库中的数据进行增、删、改等操作,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入(意指新增或创建)、更新(修改)与删除(销毁)。

3.2.3:数据查询语言DQL(Data Query Language)

用于从数据库中查询数据,包括SELECT等命令。

基本结构是由SELECT子句,FROM子句,WHERE

子句组成的查询块:

SELECT <字段名表>

FROM <表或视图名>

WHERE <查询条件>

3.2.4:数据控制语言DCL(Data Control Language):

对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权,包括GRANT、REVOKE等命令。

拓展:

1.(DDL)自增列值

创建表:create table 表名称(

字段名1 数据类型 (PRIMARY KEY AUTO_INCREMENT),

字段名2 数据类型,

字段名n 数据类型 #最后不需要逗号了

)(ENGINE INNODB);

如果在 MySQL 建表时设置了某一列为自增列,那么在插入数据时,可以不用指定该列的值,MySQL 会自动为该列生成一个唯一的自增值。例如,建立一个名为 users 的表,其中 id 列为自增列,可以按照以下方式插入数据:

INSERT INTO users (name, age) VALUES ('John', 25);

在这个例子中,我们没有指定 id 列的值,MySQL 会自动为其生成一个唯一的自增值。如果需要获取插入数据后的自增值,可以使用 LAST_INSERT_ID() 函数,例如:

INSERT INTO users (name, age) VALUES ('John', 25);
SELECT LAST_INSERT_ID();

这样可以获取到插入数据后 id 列的自增值。需要注意的是,只有在插入数据时才会生成自增值,如果直接修改该列的值,MySQL 不会自动为其生成自增值。

在 MySQL 中,自增值是由系统自动生成的,一般情况下是不能手动修改的。如果需要修改自增值的规则,
可以通过修改表结构来实现。具体来说,可以使用 `ALTER TABLE` 命令来修改自增值的起始值和步长。
例如,以下命令可以将 `users` 表的自增值起始值设置为 100,步长设置为 2:
ALTER TABLE users AUTO_INCREMENT = 100, AUTO_INCREMENT_INCREMENT = 2;

需要注意的是,修改自增值的规则可能会影响到已有数据的自增值,因此需要谨慎操作。如果需要修改已有数据的自增值,可以使用 UPDATE 命令手动修改。但是需要注意,手动修改自增值可能会导致数据不一致,因此需要谨慎操作。



  1. 虽然有些文章说可以用rename重命名,但是我试了他们的命令会报错…
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
安全 关系型数据库 MySQL
mysql8安装
本文介绍了在 CentOS 7 上安装 MySQL 5.7 的详细步骤,包括下载、环境准备、系统配置、安装过程及启动方法。首先通过wget下载MySQL压缩包并解压至指定目录,接着进行主机名修改、依赖安装、用户与用户组创建、ulimit配置等环境准备工作。随后,对操作系统环境进行调整,如文件句柄和进程数的设置、内核参数优化、SELinux和防火墙的关闭等。最后,完成MySQL的安装配置,创建数据和日志目录,初始化MySQL,并设置启动脚本和环境变量,确保MySQL能够正常运行。
75 4
|
2月前
|
安全 关系型数据库 MySQL
Linux下安装mysql8.0(以tar.xz包安装--编译安装)
通过上述步骤,您完成了从下载、编译、安装到配置MySQL 8.0的全过程。此过程虽然较为复杂,但提供了对MySQL安装环境的完全控制,有助于满足特定的部署需求。在实际操作中,根据具体的系统环境,可能还需调整部分步骤或解决未预见的依赖问题。始终参考官方文档和社区资源,保持安装过程与最新版本的兼容性。
828 67
|
21天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
35 4
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
410 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
27天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
75 3
|
28天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
50 2
|
29天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
1月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
87 2
|
29天前
|
SQL 关系型数据库 MySQL
|
16天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
125 0