查看: 989|回复: 15

[原创] MYSQL基础教程

[复制链接]

0

技术

6

魅力

1

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
6286
人气
175
分享
56

最佳新人活跃会员灌水之王

发表于 2023-1-11 23:11:33 | 显示全部楼层 |阅读模式
上链接:https://blog.csdn.net/hjz0713/article/details/128651918


前言

这是大活,我将一口气写完所有教程。阅读时请注意休息。

@TOC

MySQL简介

MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

在教程中,我会让大家快速掌握 MySQL 的基本知识,并轻松使用 MySQL 数据库。

什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 数据以表格的形式出现
  • 每行为各种记录名称
  • 每列为记录名称所对应的数据域
  • 许多的行和列组成一张表单
  • 若干的表单组成database

RDBMS 术语

在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:

  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • : 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
  • :一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:

  • 表头(header): 每一列的名称;
  • 列(col): 具有相同数据类型的数据的集合;
  • 行(row): 每一行用来描述某条记录的具体信息;
  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
  • 键(key): 键的值在当前列中具有唯一性。

MySQL数据库

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

  • MySQL 是开源的,属于 Oracle 旗下产品。
  • MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
  • MySQL 使用标准的 SQL 数据语言形式。
  • MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 对 PHP 有很好的支持,PHP 是很适合用于 Web 程序开发。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。

MySQL 安装

所有平台的 MySQL 下载地址为: MySQL 。 挑选你需要的 MySQL Community Server 版本及对应的平台。

Linux/UNIX 上安装 MySQL

Linux平台上推荐使用RPM包来安装Mysql,MySQL AB提供了以下RPM包的下载地址

  • MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
  • MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。
  • MySQL-devel - 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。
  • MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
  • MySQL-bench - MySQL数据库服务器的基准和性能测试工具。

安装前,我们可以检测系统是否自带安装 MySQL:

  1. rpm -qa | grep mysql
复制代码

如果你系统有安装,那可以选择进行卸载:

  1. rpm -e mysql  // 普通删除模式
  2. rpm -e --nodeps mysql  // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
复制代码

安装 MySQL:

接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/



  1. wget [url]http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm[/url]
  2. rpm -ivh mysql-community-release-el7-5.noarch.rpm
  3. yum update
  4. yum install mysql-server
复制代码

权限设置:

  1. chown -R mysql:mysql /var/lib/mysql/
复制代码

初始化 MySQL:

  1. mysqld --initialize
复制代码

启动 MySQL:

  1. systemctl start mysqld
复制代码

查看 MySQL 运行状态:

  1. systemctl status mysqld
复制代码

注意:如果我们是第一次启动 mysql 服务,mysql 服务器首先会进行初始化的配置。

此外,你也可以使用 MariaDB 代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。


  1. yum install mariadb-server mariadb
复制代码

mariadb数据库的相关命令是:

  1. systemctl start mariadb  #启动MariaDB
  2. systemctl stop mariadb  #停止MariaDB
  3. systemctl restart mariadb  #重启MariaDB
  4. systemctl enable mariadb  #设置开机启动
复制代码

验证 MySQL 安装

在成功安装 MySQL 后,一些基础表会表初始化,在服务器启动后,你可以通过简单的测试来验证 MySQL 是否工作正常。

使用 mysqladmin 工具来获取服务器状态:

使用 mysqladmin 命令来检查服务器的版本, 在 linux 上该二进制文件位于 /usr/bin 目录,在 Windows 上该二进制文件位于C:\mysql\bin 。

  1. [root@host]# mysqladmin --version
复制代码

linux上该命令将输出以下结果,该结果基于你的系统信息:

  1. mysqladmin  Ver 8.23 Distrib 5.0.9-0, for redhat-linux-gnu on i386
复制代码

如果以上命令执行后未输出任何信息,说明你的Mysql未安装成功。

使用 MySQL Client(Mysql客户端) 执行简单的SQL命令

你可以在 MySQL Client(Mysql客户端) 使用 mysql 命令连接到 MySQL 服务器上,默认情况下 MySQL 服务器的登录密码为空,所以本实例不需要输入密码。

命令如下:

  1. [root@host]# mysql
复制代码

以上命令执行后会输出 mysql>提示符,这说明你已经成功连接到Mysql服务器上,你可以在 mysql> 提示符执行SQL命令:

  1. mysql> SHOW DATABASES;
  2. +----------+
  3. | Database |
  4. +----------+
  5. | mysql    |
  6. | test     |
  7. +----------+
  8. 2 rows in set (0.13 sec)
复制代码

Mysql安装后需要做的

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

  1. [root@host]# mysqladmin -u root password "new_password";
复制代码

现在你可以通过以下命令来连接到Mysql服务器:

  1. [root@host]# mysql -u root -p
  2. Enter password:*******
复制代码

注意:在输入密码时,密码不会显示,你正确输入即可。

Windows 上安装 MySQL

Windows 上安装 MySQL 相对来说会较为简单,最新版本可以在 MySQL 下载 中下载

下载完后,我们将 zip 包解压到相应的目录,这里我将解压后的文件夹放在 C:\web\mysql-8.0.11 下。

接下来我们需要配置下 MySQL 的配置文件

打开刚刚解压的文件夹 D:\mysql-8.0.11 ,在该文件夹下创建 my.ini 配置文件,编辑 my.ini 配置以下基本信息:

  1. [client]
  2. # 设置mysql客户端默认字符集
  3. default-character-set=utf8

  4. [mysqld]
  5. # 设置3306端口
  6. port = 3306
  7. # 设置mysql的安装目录
  8. basedir=D:\\mysql-8.0.11
  9. # 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错
  10. # datadir=D:\\sqldata
  11. # 允许最大连接数
  12. max_connections=20
  13. # 服务端使用的字符集默认为8比特编码的latin1字符集
  14. character-set-server=utf8
  15. # 创建新表时将使用的默认存储引擎
  16. default-storage-engine=INNODB
复制代码

接下来我们来启动下 MySQL 数据库:

以管理员身份打开 cmd 命令行工具,切换目录:

  1. cd D\mysql-8.0.11\bin
复制代码

初始化数据库:

  1. mysqld --initialize --console
复制代码

执行完成后,会输出 root 用户的初始默认密码,如:

  1. ...
  2. 2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ
  3. ...
复制代码

APWCY5ws&hjQ 就是初始密码,后续登录需要用到,你也可以在登陆后修改密码。

输入以下安装命令:

  1. mysqld install
复制代码

启动输入以下命令即可:

  1. net start mysql
复制代码
注意: 在 5.7 需要初始化 data 目录:
cd C:\web\mysql-8.0.11\bin
mysqld --initialize-insecure
初始化后再运行 net start mysql 即可启动 mysql。

登录 MySQL

当 MySQL 服务已经运行时, 我们可以通过 MySQL 自带的客户端工具登录到 MySQL 数据库中, 首先打开命令提示符, 输入以下格式的命名:

  1. mysql -h 主机名 -u 用户名 -p
复制代码

参数说明:

  • -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
  • -u : 登录的用户名;
  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:

  1. mysql -u root -p
复制代码

按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:

  1. Enter password:
复制代码

若密码存在, 输入密码登录, 不存在则直接按回车登录。登录成功后你将会看到 Welcome to the MySQL monitor... 的提示语。

然后命令提示符会一直以 mysql> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登录。

MySQL 管理

启动及关闭 MySQL 服务器

Windows 系统下

在 Windows 系统下,打开命令窗口(cmd),进入 MySQL 安装目录的 bin 目录。

启动:

  1. cd c:/mysql/bin
  2. mysqld --console
复制代码

关闭:

  1. cd c:/mysql/bin
  2. mysqladmin -uroot shutdown
复制代码

Linux 系统下 首先,我们需要通过以下命令来检查MySQL服务器是否启动:

  1. ps -ef | grep mysqld
复制代码

如果MySql已经启动,以上命令将输出mysql进程列表, 如果mysql未启动,你可以使用以下命令来启动mysql服务器:

  1. root@host# cd /usr/bin
  2. ./mysqld_safe &
复制代码

如果你想关闭目前运行的 MySQL 服务器, 你可以执行以下命令:

  1. root@host# cd /usr/bin
  2. ./mysqladmin -u root -p shutdown
  3. Enter password: ******
复制代码

MySQL 用户设置

如果你需要添加 MySQL 用户,你只需要在 mysql 数据库中的 user 表添加新用户即可。

以下为添加用户的实例,用户名为guest,密码为guest123,并授权用户可进行 SELECT, INSERT 和 UPDATE操作权限:

  1. root@host# mysql -u root -p
  2. Enter password:*******
  3. mysql> use mysql;
  4. Database changed

  5. mysql> INSERT INTO user
  6.           (host, user, password,
  7.            select_priv, insert_priv, update_priv)
  8.            VALUES ('localhost', 'guest',
  9.            PASSWORD('guest123'), 'Y', 'Y', 'Y');
  10. Query OK, 1 row affected (0.20 sec)

  11. mysql> FLUSH PRIVILEGES;
  12. Query OK, 1 row affected (0.01 sec)

  13. mysql> SELECT host, user, password FROM user WHERE user = 'guest';
  14. +-----------+---------+------------------+
  15. | host      | user    | password         |
  16. +-----------+---------+------------------+
  17. | localhost | guest | 6f8c114b58f2ce9e |
  18. +-----------+---------+------------------+
  19. 1 row in set (0.00 sec)
复制代码

在添加用户时,请注意使用MySQL提供的 PASSWORD() 函数来对密码进行加密。 你可以在以上实例看到用户密码加密后为: 6f8c114b58f2ce9e.

注意:在 MySQL5.7 中 user 表的 password 已换成了authentication_string。

注意:password() 加密函数已经在 8.0.11 中移除了,可以使用 MD5() 函数代替。

注意:在注意需要执行 FLUSH PRIVILEGES 语句。 这个命令执行后会重新载入授权表。

如果你不使用该命令,你就无法使用新创建的用户来连接mysql服务器,除非你重启mysql服务器。

你可以在创建用户时,为用户指定权限,在对应的权限列中,在插入语句中设置为 'Y' 即可,用户权限列表如下:

  • Select_priv
  • Insert_priv
  • Update_priv
  • Delete_priv
  • Create_priv
  • Drop_priv
  • Reload_priv
  • Shutdown_priv
  • Process_priv
  • File_priv
  • Grant_priv
  • References_priv
  • Index_priv
  • Alter_priv

另外一种添加用户的方法为通过SQL的 GRANT 命令,以下命令会给指定数据库TUTORIALS添加用户 zara ,密码为 zara123 。

  1. root@host# mysql -u root -p
  2. Enter password:*******
  3. mysql> use mysql;
  4. Database changed

  5. mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
  6.     -> ON TUTORIALS.*
  7.     -> TO 'zara'@'localhost'
  8.     -> IDENTIFIED BY 'zara123';
复制代码

以上命令会在mysql数据库中的user表创建一条用户信息记录。

注意: MySQL 的SQL语句以分号 ( ; ) 作为结束标识。

/etc/my.cnf 文件配置

一般情况下,你不需要修改该配置文件,该文件默认配置如下:

  1. [mysqld]
  2. datadir=/var/lib/mysql
  3. socket=/var/lib/mysql/mysql.sock

  4. [mysql.server]
  5. user=mysql
  6. basedir=/var/lib

  7. [safe_mysqld]
  8. err-log=/var/log/mysqld.log
  9. pid-file=/var/run/mysqld/mysqld.pid
复制代码

在配置文件中,你可以指定不同的错误日志文件存放的目录,一般你不需要改动这些配置。

管理MySQL的命令

以下列出了使用Mysql数据库过程中常用的命令:

  • USE 数据库名 :
    选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
    1. mysql> use Runoob;
    2. Database changed
    复制代码

  • SHOW DATABASES:

列出 MySQL 数据库管理系统的数据库列表。

  1. mysql> SHOW DATABASES;
  2. +--------------------+
  3. | Database           |
  4. +--------------------+
  5. | information_schema |
  6. | RUNOOB             |
  7. | cdcol              |
  8. | mysql              |
  9. | onethink           |
  10. | performance_schema |
  11. | phpmyadmin         |
  12. | test               |
  13. | wecenter           |
  14. | wordpress          |
  15. +--------------------+
  16. 10 rows in set (0.02 sec)
复制代码

  • SHOW TABLES:
    显示指定数据库的所有表,使用该命令前需要使用 use 命令来选择要操作的数据库。
    ```
    mysql> use RUNOOB;
    Database changed
    mysql> SHOW TABLES;

+------------------+ | Tables_in_runoob | +------------------+ | employee_tbl     | | runoob_tbl       | | tcount_tbl       | +------------------+ 3 rows in set (0.00 sec)

  1. - SHOW COLUMNS FROM 数据表:
  2. 显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。
复制代码

mysql> SHOW COLUMNS FROM runoob_tbl; +-----------------+--------------+------+-----+---------+-------+ | Field           | Type         | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+-------+ | runoob_id       | int(11)      | NO   | PRI | NULL    |       | | runoob_title    | varchar(255) | YES  |     | NULL    |       | | runoob_author   | varchar(255) | YES  |     | NULL    |       | | submission_date | date         | YES  |     | NULL    |       | +-----------------+--------------+------+-----+---------+-------+ 4 rows in set (0.01 sec)

  1. - SHOW INDEX FROM 数据表:
  2. 显示数据表的详细索引信息,包括PRIMARY KEY(主键)。
复制代码

mysql> SHOW INDEX FROM runoob_tbl; +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table      | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | runoob_tbl |          0 | PRIMARY  |            1 | runoob_id   | A         |           2 |     NULL | NULL   |      | BTREE      |         |               | +------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 1 row in set (0.00 sec)

  1. - SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] \G:
  2. 该命令将输出Mysql数据库管理系统的性能及统计信息。
复制代码

mysql> SHOW TABLE STATUS  FROM RUNOOB;   # 显示数据库 RUNOOB 中所有表的信息

mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%';     # 表名以runoob开头的表的信息 mysql> SHOW TABLE STATUS from RUNOOB LIKE 'runoob%'\G;   # 加上 \G,查询结果按列打印


  1. # MySQL PHP 语法
  2. MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP,在这些语言中,MySQL 在 PHP 的 web 开发中是应用最广泛。

  3. 在本教程中我们大部分实例都采用了 PHP 语言。如果你想了解 MySQL 在 PHP 中的应用,可以访问我们的 PHP 中使用 MySQL 介绍。

  4. PHP 提供了多种方式来访问和操作 MySQL 数据库记录。:

  5. PHP MySQL 函数格式如下:
  6. `
  7. mysqli_function(value,value,...);`
  8. 以上格式中 function部分描述了mysql函数的功能,如
复制代码

mysqli_connect($connect); mysqli_query($connect,"SQL 语句"); mysqli_fetch_array() mysqli_close()

  1. 以下实例展示了PHP调用mysql函数的语法:
复制代码

<?php
$retval = mysqli_function(value, [value,...]);
if( !$retval )
{
   die ( "相关错误信息" );
}
// 其他 MySQL 或 PHP 语句
?>
  1. /---当前你大约读了10000字了,请注意休息一下---/

  2. # MySQL 连接
  3. ### 使用mysql二进制方式连接
  4. 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。

  5. ### 实例
  6. 以下是从命令行中连接mysql服务器的简单实例:
复制代码

[root@host]# mysql -u root -p Enter password:**

  1. 在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。

  2. 以上命令执行后,登录成功输出结果如下:
复制代码

Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 2854760 to server version: 5.0.9

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

  1. 在以上实例中,我们使用了root用户登录到mysql服务器,当然你也可以使用其他mysql用户登录。

  2. 如果用户权限足够,任何用户都可以在mysql的命令提示窗口中进行SQL操作。

  3. 退出 mysql> 命令提示窗口可以使用 exit 命令,如下所示:
复制代码

mysql> exit Bye

  1. 使用 PHP 脚本连接 MySQL
  2. PHP 提供了 mysqli_connect() 函数来连接数据库。

  3. 该函数有 6 个参数,在成功链接到 MySQL 后返回连接标识,失败返回 FALSE 。

  4. 语法
复制代码

mysqli_connect(host, username, password, dbname,port, socket);

  1. 参数说明:
  2. host    可选。规定主机名或 IP 地址。
  3. username    可选。规定 MySQL 用户名。
  4. password    可选。规定 MySQL 密码。
  5. dbname    可选。规定默认使用的数据库。
  6. port    可选。规定尝试连接到 MySQL 服务器的端口号。
  7. socket    可选。规定 socket 或要使用的已命名 pipe。

  8. 你可以使用 PHP 的 mysqli_close() 函数来断开与 MySQL 数据库的链接。

  9. 该函数只有一个参数为 mysqli_connect() 函数创建连接成功后返回的 MySQL 连接标识符。

  10. ### 语法
复制代码

bool mysqli_close ( mysqli $link )

  1. 本函数关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier,则关闭上一个打开的连接。

  2. 提示:通常不需要使用 mysqli_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。

  3. ### 实例
  4. 你可以尝试以下实例来连接到你的 MySQL 服务器:
复制代码

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('Could not connect: ' . mysqli_error());
}
echo '数据库连接成功!';
mysqli_close($conn);
?>
  1. # MySQL 创建数据库
  2. 我们可以在登陆 MySQL 服务后,使用 `create` 命令创建数据库,语法如下:
复制代码

CREATE DATABASE 数据库名;

  1. 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:
复制代码

[root@host]# mysql -u root -p
Enter password:**  # 登录后进入终端


mysql> create DATABASE RUNOOB;

  1. ### 使用 mysqladmin 创建数据库
  2. 使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库。

  3. 所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mysqladmin 命令来创建数据库。

  4. 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:
复制代码

[root@host]# mysqladmin -u root -p create RUNOOB Enter password:**

  1. 以上命令执行成功后会创建 MySQL 数据库 RUNOOB。

  2. ### 使用 PHP脚本 创建数据库
  3. PHP 使用 mysqli_query 函数来创建或者删除 MySQL 数据库。

  4. 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

  5. 语法
  6. `
  7. mysqli_query(connection,query,resultmode);

  8. 参数   
  9. connection    必需。规定要使用的 MySQL 连接。
  10. query    必需,规定查询字符串。
  11. resultmode   
  12. 可选。一个常量。可以是下列值中的任意一个:

  13. MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
  14. MYSQLI_STORE_RESULT(默认)
  15. ### 实例
  16. 以下实例演示了使用PHP来创建一个数据库:
复制代码

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('连接错误: ' . mysqli_error($conn));
}
echo '连接成功<br />';
$sql = 'CREATE DATABASE RUNOOB';
$retval = mysqli_query($conn,$sql );
if(! $retval )
{
    die('创建数据库失败: ' . mysqli_error($conn));
}
echo "数据库 RUNOOB 创建成功\n";
mysqli_close($conn);
?>
  1. # MySQL 删除数据库
  2. 使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。

  3. 在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。

  4. drop 命令删除数据库
  5. drop 命令格式:
  6. `
  7. drop database <数据库名>;
  8. `
  9. 例如删除名为 RUNOOB 的数据库:
  10. `
  11. mysql> drop database RUNOOB;
  12. `
  13. 使用 mysqladmin 删除数据库
  14. 你也可以使用 mysql mysqladmin 命令在终端来执行删除命令。

  15. 以下实例删除数据库 RUNOOB(该数据库在前一章节已创建):
复制代码

[root@host]# mysqladmin -u root -p drop RUNOOB Enter password:**

  1. 执行以上删除数据库命令后,会出现一个提示框,来确认是否真的删除数据库:
复制代码

Dropping the database is potentially a very bad thing to do. Any data stored in the database will be destroyed.

Do you really want to drop the 'RUNOOB' database [y/N] y Database "RUNOOB" dropped

  1. ### 使用PHP脚本删除数据库
  2. PHP使用 mysqli_query 函数来创建或者删除 MySQL 数据库。

  3. 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

  4. ### 语法
  5. mysqli_query(connection,query,resultmode);
  6. 参数描述
  7. connection    必需。规定要使用的 MySQL 连接。
  8. query    必需,规定查询字符串。
  9. resultmode   
  10. 可选。一个常量。可以是下列值中的任意一个:

  11. MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
  12. MYSQLI_STORE_RESULT(默认)
  13. ### 实例
  14. 以下实例演示了使用PHP mysqli_query函数来删除数据库:
复制代码

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功<br />';
$sql = 'DROP DATABASE RUNOOB';
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('删除数据库失败: ' . mysqli_error($conn));
}
echo "数据库 RUNOOB 删除成功\n";
mysqli_close($conn);
?>
  1. # MySQL 创建数据表
  2. 创建MySQL数据表需要以下信息:

  3. - 表名
  4. - 表字段名
  5. - 定义每个表字段

  6. ### 语法
  7. 以下为创建MySQL数据表的SQL通用语法:
复制代码

CREATE TABLE table_name (column_name column_type); 以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:

CREATE TABLE IF NOT EXISTS runoob_tbl(    runoob_id INT UNSIGNED AUTO_INCREMENT,    runoob_title VARCHAR(100) NOT NULL,    runoob_author VARCHAR(40) NOT NULL,    submission_date DATE,    PRIMARY KEY ( runoob_id ) )ENGINE=InnoDB DEFAULT CHARSET=utf8;

  1. ### 实例解析:

  2. 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  3. AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  4. PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  5. ENGINE 设置存储引擎,CHARSET 设置编码。
  6. 通过命令提示符创建表
  7. 通过 mysql> 命令窗口可以很简单的创建MySQL数据表。你可以使用 SQL 语句 CREATE TABLE 来创建数据表。

  8. ### 实例
  9. 以下为创建数据表 runoob_tbl 实例:
复制代码

root@host# mysql -u root -p Enter password:*** mysql> use RUNOOB; Database changed mysql> CREATE TABLE runoob_tbl(    -> runoob_id INT NOT NULL AUTO_INCREMENT,    -> runoob_title VARCHAR(100) NOT NULL,    -> runoob_author VARCHAR(40) NOT NULL,    -> submission_date DATE,    -> PRIMARY KEY ( runoob_id )    -> )ENGINE=InnoDB DEFAULT CHARSET=utf8; Query OK, 0 rows affected (0.16 sec) mysql>

  1. 注意:MySQL命令终止符为分号 `;` 。

  2. 注意:` ->` 是换行符标识,不要复制。

  3. ### 使用PHP脚本创建数据表
  4. 你可以使用 PHP 的 mysqli_query() 函数来创建已存在数据库的数据表。

  5. 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

  6. ### 语法
  7. mysqli_query(connection,query,resultmode);
  8. 参数描述
  9. connection    必需。规定要使用的 MySQL 连接。
  10. query    必需,规定查询字符串。
  11. resultmode   
  12. 可选。一个常量。可以是下列值中的任意一个:

  13. MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
  14. MYSQLI_STORE_RESULT(默认)
  15. ###实例
  16. 以下实例使用了PHP脚本来创建数据表:
复制代码

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功<br />';
$sql = "CREATE TABLE runoob_tbl( ".
        "runoob_id INT NOT NULL AUTO_INCREMENT, ".
        "runoob_title VARCHAR(100) NOT NULL, ".
        "runoob_author VARCHAR(40) NOT NULL, ".
        "submission_date DATE, ".
        "PRIMARY KEY ( runoob_id ))ENGINE=InnoDB DEFAULT CHARSET=utf8; ";
mysqli_select_db( $conn, 'RUNOOB' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die('数据表创建失败: ' . mysqli_error($conn));
}
echo "数据表创建成功\n";
mysqli_close($conn);
?>
  1. 执行成功后,就可以通过命令行查看表结构:
  2. ![请添加图片描述]([url]https://img-blog.csdnimg.cn/81dfd1cb22474268b717f457c3c4e277.jpeg[/url])

  3. # MySQL 删除数据表
  4. MySQL中删除数据表是非常容易操作的,但是你在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。

  5. 语法
  6. 以下为删除MySQL数据表的通用语法:

  7. DROP TABLE table_name ;
  8. 在命令提示窗口中删除数据表
  9. 在mysql>命令提示窗口中删除数据表SQL语句为 DROP TABLE :

  10. ### 实例
  11. 以下实例删除了数据表runoob_tbl:
复制代码

root@host# mysql -u root -p Enter password:*** mysql> use RUNOOB; Database changed mysql> DROP TABLE runoob_tbl; Query OK, 0 rows affected (0.8 sec) mysql>

  1. ### 使用PHP脚本删除数据表
  2. PHP使用 mysqli_query 函数来删除 MySQL 数据表。

  3. 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

  4. ### 语法
  5. `
  6. mysqli_query(connection,query,resultmode);
  7. `
  8. 参数    描述
  9. connection    必需。规定要使用的 MySQL 连接。
  10. query    必需,规定查询字符串。
  11. resultmode   
  12. 可选。一个常量。可以是下列值中的任意一个:

  13. MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
  14. MYSQLI_STORE_RESULT(默认)
  15. ### 实例
  16. 以下实例使用了PHP脚本删除数据表 runoob_tbl:
复制代码

<?php
$dbhost = 'localhost';  // mysql服务器主机地址
$dbuser = 'root';            // mysql用户名
$dbpass = '123456';          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
  die('连接失败: ' . mysqli_error($conn));
}
echo '连接成功<br />';
$sql = "DROP TABLE runoob_tbl";
mysqli_select_db( $conn, 'RUNOOB' );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
  die('数据表删除失败: ' . mysqli_error($conn));
}
echo "数据表删除成功\n";
mysqli_close($conn);
?>
执行成功后,我们使用以下命令,就看不到 runoob_tbl 表了:

mysql> show tables; Empty set (0.01 sec)

```

结语

MYSQL基础教程已结束。 下一步请移步MYSQL高级教程。 其实我自己都没全会


评分

参与人数 2经验 +30 人气 +5 分享 +3 收起 理由
JimmyzZZ + 20 + 5 + 3
YFSafe + 10

查看全部评分

本帖被以下淘专辑推荐:

一只压力超大的屑
我的博客:点此进入

4

技术

17

魅力

6

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
5385
人气
208
分享
36

最佳新人活跃会员

发表于 2023-1-12 15:11:15 | 显示全部楼层
正经人谁用mysql
我一般用sqlite
YF工作室驻x64论坛分部
工作室曾开发的软件:YFSafe安全软件,YFChat在线聊天软件,MBRTools等。
欢迎有能力的你加入我们一起共同进步。请发邮件至yfstudio2021@outlook.com

0

技术

6

魅力

1

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
6286
人气
175
分享
56

最佳新人活跃会员灌水之王

 楼主| 发表于 2023-1-12 15:13:28 | 显示全部楼层
本帖最后由 YFSafe 于 2023-1-12 15:15 编辑


考虑到有人用,摊牌,下步出SQLite
一只压力超大的屑
我的博客:点此进入

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5133
人气
137
分享
5
发表于 2023-1-12 21:01:41 | 显示全部楼层
你这个好多都没说,索引,计算符号,锁机制……

MySQL不是想多简单就多简单的…总体上来看入门极其简单精通难…

还好我看到这是基础教程…
Manners maketh man

0

技术

6

魅力

1

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
6286
人气
175
分享
56

最佳新人活跃会员灌水之王

 楼主| 发表于 2023-1-12 21:02:48 | 显示全部楼层
《眼瞎》
一只压力超大的屑
我的博客:点此进入

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5133
人气
137
分享
5
发表于 2023-1-12 21:03:20 | 显示全部楼层
YFSafe 发表于 2023-1-12 15:11
正经人谁用mysql
我一般用sqlite

sqlite仅仅适用于小型数据库,要是大型网站用这个的话会卡死的…

但是这个数据库我后端开发的时候常常用来测试用,从来不用于正式部署,基本上也没有人用sqlite部署
Manners maketh man

0

技术

6

魅力

1

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
6286
人气
175
分享
56

最佳新人活跃会员灌水之王

 楼主| 发表于 2023-1-12 21:03:43 | 显示全部楼层
基础教程,已经够多了,过年前再不整数据库了
一只压力超大的屑
我的博客:点此进入

0

技术

6

魅力

1

原创

版主

禁止发言

Rank: 7Rank: 7Rank: 7

积分
6286
人气
175
分享
56

最佳新人活跃会员灌水之王

 楼主| 发表于 2023-1-12 21:04:27 | 显示全部楼层
xiaomeng 发表于 2023-1-12 21:03
sqlite仅仅适用于小型数据库,要是大型网站用这个的话会卡死的…

但是这个数据库我后端开发的时候常常用 ...

所以我出MYsql不出splite
一只压力超大的屑
我的博客:点此进入

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5133
人气
137
分享
5
发表于 2023-1-12 21:08:15 | 显示全部楼层
hjz713 发表于 2023-1-12 21:03
基础教程,已经够多了,过年前再不整数据库了

不,这个基础教程太羸弱了…但是大部分基础功能都说了一遍

另外,偷偷告诉你个秘密:学好MySQL的同学可以当网盘运维,huang1111说可以给个测试环境
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5133
人气
137
分享
5
发表于 2023-1-12 21:09:17 | 显示全部楼层
hjz713 发表于 2023-1-12 21:04
所以我出MYsql不出splite

所以我觉得你下一步应该出MangoDB或者Redis
Manners maketh man
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表