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

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 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重命名,但是我试了他们的命令会报错…
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
6月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
3月前
|
Ubuntu 关系型数据库 MySQL
MySQL源码编译安装
本文详细介绍了MySQL 8.0及8.4版本的源码编译安装全过程,涵盖用户创建、依赖安装、cmake配置、编译优化等步骤,并提供支持多Linux发行版的一键安装脚本,适用于定制化数据库部署需求。
487 4
MySQL源码编译安装
|
3月前
|
Ubuntu 关系型数据库 MySQL
MySQL二进制包安装
本文详细介绍了在多种Linux系统上通过二进制包安装MySQL 8.0和8.4版本的完整过程,涵盖用户创建、glibc版本匹配、程序解压、环境变量配置、初始化数据库及服务启动等步骤,并提供支持多发行版的一键安装脚本,助力高效部署MySQL环境。
469 4
MySQL二进制包安装
|
3月前
|
安全 关系型数据库 MySQL
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
本文详细介绍在openSUSE系统上通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,包括下载地址、RPM包解压、GPG密钥导入、使用rpm或zypper命令安装及服务启动验证,涵盖初始密码获取与安全修改方法,适用于无网络环境下的MySQL部署。
455 3
MySQL包安装 -- SUSE系列(离线RPM包安装MySQL)
|
3月前
|
关系型数据库 MySQL Linux
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
本文介绍了在openSUSE系统上通过SUSE资源库安装MySQL 8.0和8.4版本的完整步骤,包括配置国内镜像源、安装MySQL服务、启动并验证运行状态,以及修改初始密码等操作,适用于希望在SUSE系列系统中快速部署MySQL的用户。
294 3
MySQL包安装 -- SUSE系列(SUSE资源库安装MySQL)
|
3月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
583 5
|
4月前
|
安全 关系型数据库 MySQL
CentOS 7 yum 安装 MySQL教程
在CentOS 7上安装MySQL 8,其实流程很清晰。首先通过官方Yum仓库来安装服务,然后启动并设为开机自启。最重要的环节是首次安全设置:需要先从日志里找到临时密码来登录,再修改成你自己的密码,并为远程连接创建用户和授权。最后,也别忘了在服务器防火墙上放行3306端口,这样远程才能连上。
800 16
|
3月前
|
Ubuntu 关系型数据库 MySQL
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
本文详细介绍了在Ubuntu 24.04、22.04、20.04及Debian 12系统上,通过离线DEB包安装MySQL 8.0和8.4版本的完整步骤。涵盖下载地址、依赖处理、dpkg安装顺序、配置方法及服务启动验证,确保用户可顺利部署MySQL数据库。
1460 0
MySQL包安装 -- Debian系列(离线DEB包安装MySQL)
|
3月前
|
运维 Ubuntu 关系型数据库
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
本文介绍了在Debian系列系统(如Ubuntu、Debian 11/12)中通过APT仓库安装MySQL 8.0和8.4版本的完整步骤,涵盖添加官方源、配置国内镜像、安装服务及初始化设置,并验证运行状态,适用于各类Linux运维场景。
1210 0
MySQL包安装 -- Debian系列(Apt资源库安装MySQL)
|
3月前
|
Oracle 关系型数据库 MySQL
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)
本文详细介绍在Rocky、CentOS、AlmaLinux、openEuler等主流Linux系统上,通过离线RPM包安装MySQL 8.0和8.4版本的完整步骤,涵盖下载、依赖处理、rpm/yum安装、服务启动、密码设置等关键环节,适用于多种企业级环境部署需求。
989 0
MySQL包安装 -- RHEL系列(离线RPM包安装MySQL)

推荐镜像

更多