zoukankan      html  css  js  c++  java
  • MySQL 【教程一】

                        

     前言

    什么是数据库?

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

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

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

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

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

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

    RDBMS 术语

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

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

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

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

    MySQL数据库

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

    • MySQL 是开源的,所以你不需要支付额外的费用。
    • 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:
    rpm -qa | grep mysql
    # 如果你系统有安装,那可以选择进行卸载:
    rpm -e mysql  # 普通删除模式
    rpm -e --nodeps mysql  # 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除

    安装 MySQL:

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

    # wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
    # rpm -ivh mysql-community-release-el7-5.noarch.rpm
    # yum update
    # yum install mysql-server
    # 权限设置:
    chown mysql:mysql -R /var/lib/mysql
    #
    初始化 MySQL: mysqld --initialize
    # 启动 MySQL: systemctl start mysqld # 查看 MySQL 运行状态: systemctl status mysqld

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

    此外,你也可以使用 MariaDB 代替,MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

    # MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
    yum install mariadb-server mariadb 
    # mariadb数据库的相关命令是:
    
    systemctl start mariadb  #启动MariaDB
    systemctl stop mariadb  #停止MariaDB
    systemctl restart mariadb  #重启MariaDB
    systemctl enable mariadb  #设置开机启动

    验证 MySQL 安装

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

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

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

    [root@host]# mysqladmin --version

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

    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 服务器的登录密码为空,所以本实例不需要输入密码。

    命令如下:

    [root@host]# mysql

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

    mysql> SHOW DATABASES;
    +----------+
    | Database |
    +----------+
    | mysql    |
    | test     |
    +----------+
    2 rows in set (0.13 sec)

    Mysql安装后需要做的

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

    [root@host]# mysqladmin -u root password "new_password";

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

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

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

    Windows 上安装 MySQL

    Windows 上安装 MySQL 相对来说会较为简单,最新版本可以在 MySQL 下载 中下载中查看(更详细安装:Windows 上安装 MySQL)。

    点击 Download 按钮进入下载页面,点击下图中的 No thanks, just start my download. 就可立即下载:

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

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

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

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

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

    • 以管理员身份打开 cmd 命令行工具,切换目录:
    cd C:webmysql-8.0.11in
    • 初始化数据库:
    mysqld --initialize --console
    • 执行完成后,会输出 root 用户的初始默认密码,如:
    ...
    2018-04-20T02:35:05.464644Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: APWCY5ws&hjQ
    ...

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

    • 输入以下安装命令:
    mysqld install
    • 启动输入以下命令即可:
    net start mysql
    # 注意: 在 5.7 需要初始化 data 目录:
    cd C:webmysql-8.0.11in 
    mysqld --initialize-insecure 
    # 初始化后再
    # 运行 net start mysql 即可启动 mysql。

    登录 MySQL

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

    mysql -h 主机名 -u 用户名 -p
    • 参数说明:
      • -h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;
      • -u : 登录的用户名;
      • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
    • 如果我们要登录本机的 MySQL 数据库,只需要输入以下命令即可:
    mysql -u root -p
    • 按回车确认, 如果安装正确且 MySQL 正在运行, 会得到以下响应:
    Enter password:

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

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

    启动及关闭 MySQL 服务器

    Windows 系统下

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

    启动:

    cd c:/mysql/bin
    mysqld --console

    关闭:

    cd c:/mysql/bin
    mysqladmin -uroot shutdown

    Linux 系统下

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

    ps -ef | grep mysqld

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

    root@host# cd /usr/bin
    ./mysqld_safe &

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

    root@host# cd /usr/bin
    ./mysqladmin -u root -p shutdown
    Enter password: ******

    MySQL 用户设置

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

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

    root@host# mysql -u root -p
    Enter password:*******
    mysql> use mysql;
    Database changed
    
    mysql> INSERT INTO user 
              (host, user, password, 
               select_priv, insert_priv, update_priv) 
               VALUES ('localhost', 'guest', 
               PASSWORD('guest123'), 'Y', 'Y', 'Y');
    Query OK, 1 row affected (0.20 sec)
    
    mysql> FLUSH PRIVILEGES;
    Query OK, 1 row affected (0.01 sec)
    
    mysql> SELECT host, user, password FROM user WHERE user = 'guest';
    +-----------+---------+------------------+
    | host      | user    | password         |
    +-----------+---------+------------------+
    | localhost | guest | 6f8c114b58f2ce9e |
    +-----------+---------+------------------+
    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 。

    root@host# mysql -u root -p
    Enter password:*******
    mysql> use mysql;
    Database changed
    
    mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
        -> ON TUTORIALS.*
        -> TO 'zara'@'localhost'
        -> IDENTIFIED BY 'zara123';

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

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

    /etc/my.cnf 文件配置

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

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    
    [mysql.server]
    user=mysql
    basedir=/var/lib
    
    [safe_mysqld]
    err-log=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid

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

    管理MySQL的命令

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

    • USE 数据库名 :
    • 选择要操作的Mysql数据库,使用该命令后所有Mysql命令都只针对该数据库。
    mysql> use RUNOOB;
    Database changed
    • SHOW DATABASES:
    • 列出 MySQL 数据库管理系统的数据库列表。
    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | RUNOOB             |
    | cdcol              |
    | mysql              |
    | onethink           |
    | performance_schema |
    | phpmyadmin         |
    | test               |
    | wecenter           |
    | wordpress          |
    +--------------------+
    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)
    • SHOW COLUMNS FROM 数据表:
    • 显示数据表的属性,属性类型,主键信息 ,是否为 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)
    • SHOW INDEX FROM 数据表:
    • 显示数据表的详细索引信息,包括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)
    • SHOW TABLE STATUS LIKE [FROM db_name] [LIKE 'pattern'] G:
    • 该命令将输出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,查询结果按列打印
    • PHP Mysqli函数格式如下:
    mysqli_function(value,value,...);
    • 以上格式中 function部分描述了mysql函数的功能,如
    mysqli_connect($connect);
    mysqli_query($connect,"SQL 语句");
    mysqli_fetch_array()
    mysqli_close()
    • 以下实例展示了PHP调用mysql函数的语法:
    # 实例 (MySQLi)
    <?php $retval = mysqli_function(value, [value,...]);
    if( !$retval ) 
    {
         die ( "相关错误信息" ); 
    }
    # 其他 MySQL 或 PHP 语句 
    ?>

    MySQL 连接

    使用mysql二进制方式连接

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

    实例

    • 以下是从命令行中连接mysql服务器的简单实例:
    [root@host]# mysql -u root -p
    Enter password:******
    • 在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。
    • 以上命令执行后,登录成功输出结果如下:
    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.
    • 在以上实例中,我们使用了root用户登录到mysql服务器,当然你也可以使用其他mysql用户登录。
    • 如果用户权限足够,任何用户都可以在mysql的命令提示窗口中进行SQL操作。
    • 退出 mysql> 命令提示窗口可以使用 exit 命令,如下所示:
    mysql> exit
    Bye

    使用 PHP 脚本连接 MySQL

    • PHP 提供了 mysqli_connect() 函数来连接数据库。
    • 该函数有 6 个参数,在成功链接到 MySQL 后返回连接标识,失败返回 FALSE 。

    语法

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

    参数说明:

    参数                描述
    host      # 可选。规定主机名或 IP 地址。
    username  # 可选。规定 MySQL 用户名。
    password  # 可选。规定 MySQL 密码。
    dbname    # 可选。规定默认使用的数据库。
    port      # 可选。规定尝试连接到 MySQL 服务器的端口号。
    socket    # 可选。规定 socket 或要使用的已命名 pipe。        
    • 你可以使用 PHP 的 mysqli_close() 函数来断开与 MySQL 数据库的链接。 
    • 该函数只有一个参数为 mysqli_connect() 函数创建连接成功后返回的 MySQL 连接标识符。

    语法

    bool mysqli_close ( mysqli $link )
    • 本函数关闭指定的连接标识所关联的到 MySQL 服务器的非持久连接。如果没有指定 link_identifier则关闭上一个打开的连接。
    • 提示:通常不需要使用 mysqli_close(),因为已打开的非持久连接会在脚本执行完毕后自动关闭。

    实例

    你可以尝试以下实例来连接到你的 MySQL 服务器:

    # 连接 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);
    ?>

    MySQL 创建数据库

    • 我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,语法如下:
    CREATE DATABASE 数据库名;
    • 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:
    [root@host]# mysql -u root -p   
    Enter password:******  # 登录后进入终端
    
    mysql> create DATABASE RUNOOB;

    使用 mysqladmin 创建数据库

    • 使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库。
    • 所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mysqladmin 命令来创建数据库。
    • 以下命令简单的演示了创建数据库的过程,数据名为 RUNOOB:
    [root@host]# mysqladmin -u root -p create RUNOOB
    Enter password:******

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

    使用 PHP脚本 创建数据库

    • PHP 使用 mysqli_query 函数来创建或者删除 MySQL 数据库。
    • 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

    语法

    mysqli_query(connection,query,resultmode);
    参数                 描述
    connection    # 必需。规定要使用的 MySQL 连接。
    query       # 必需,规定查询字符串。
    resultmode 
    # 可选。一个常量。可以是下列值中的任意一个: MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个) MYSQLI_STORE_RESULT(默认)

    实例

    • 以下实例演示了使用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 创建成功
    "; 
    mysqli_close($conn); 
    ?>

    执行成功后,返回如下结果:

    如果数据库已存在,执行后,返回如下结果:

    MySQL 删除数据库

    • 使用普通用户登陆 MySQL 服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库,所以我们这边使用 root 用户登录,root 用户拥有最高权限。
    • 在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。

    drop 命令删除数据库

    drop 命令格式:

    drop database <数据库名>;

    例如删除名为 RUNOOB 的数据库:

    mysql> drop database RUNOOB;

    使用 mysqladmin 删除数据库

    • 你也可以使用 mysql mysqladmin 命令在终端来执行删除命令。
    • 以下实例删除数据库 RUNOOB(该数据库在前一章节已创建):
    [root@host]# mysqladmin -u root -p drop RUNOOB
    Enter password:******
    • 执行以上删除数据库命令后,会出现一个提示框,来确认是否真的删除数据库:
    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

    使用PHP脚本删除数据库

    • PHP使用 mysqli_query 函数来创建或者删除 MySQL 数据库。
    • 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

    语法

    mysqli_query(connection,query,resultmode);
    参数                描述
    connection     # 必需。规定要使用的 MySQL 连接。
    query          # 必需,规定查询字符串。
    resultmode    # 可选。一个常量。可以是下列值中的任意一个:
    
    MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
    MYSQLI_STORE_RESULT(默认)

    实例

    • 以下实例演示了使用PHP mysqli_query函数来删除数据库:
    # 删除数据库
    <?php $dbhost = 'localhost:3306'; // 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 删除成功
    "; 
    mysqli_close($conn); 
    ?>

    执行成功后,数结果为:

    注意 在使用PHP脚本删除数据库时,不会出现确认是否删除信息,会直接删除指定数据库,所以你在删除数据库时要特别小心。

    MySQL 选择数据库

    • 在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。

    从命令提示窗口中选择MySQL数据库

    • 在 mysql> 提示窗口中可以很简单的选择特定的数据库。你可以使用SQL命令来选择指定的数据库。

    实例

    以下实例选取了数据库 RUNOOB:

    [root@host]# mysql -u root -p
    Enter password:******
    mysql> use RUNOOB;
    Database changed
    mysql>
    • 执行以上命令后,你就已经成功选择了 RUNOOB 数据库,在后续的操作中都会在 RUNOOB 数据库中执行。
    • 注意:所有的数据库名,表名,表字段都是区分大小写的。所以你在使用SQL命令时需要输入正确的名称。

    使用PHP脚本选择MySQL数据库

    • PHP 提供了函数 mysqli_select_db 来选取一个数据库。函数在执行成功后返回 TRUE ,否则返回 FALSE 。

    语法

    mysqli_select_db(connection,dbname);
    参数                   描述
    connection # 必需。规定要使用的 MySQL 连接。
    dbname     #  必需,规定要使用的默认数据库。

    实例

    • 以下实例展示了如何使用 mysqli_select_db 函数来选取一个数据库:
    # 选择数据库
    
    <?php 
    $dbhost = 'localhost:3306'; // mysql服务器主机地址 
    $dbuser = 'root'; // mysql用户名 
    $dbpass = '123456'; // mysql用户名密码 
    $conn = mysqli_connect($dbhost, $dbuser, $dbpass); 
    if(! $conn ) 
    { 
        die('连接失败: ' . mysqli_error($conn)); 
    } 
    echo '连接成功'; mysqli_select_db($conn, 'RUNOOB' ); mysqli_close($conn); 
    ?>

    MySQL 数据类型

    • MySQL中定义数据字段的类型对你数据库的优化是非常重要的。
    • MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

    数值类型

    • MySQL支持所有标准SQL数值数据类型。
    • 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
    • 关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
    • BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
    • 作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
    类型大小范围(有符号)范围(无符号)用途
    TINYINT 1 字节 (-128,127) (0,255) 小整数值
    SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
    MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
    INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
    BIGINT 8 字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
    FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
    浮点数值
    DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
    浮点数值
    DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

    日期和时间类型

    • 表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
    • 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。
    • TIMESTAMP类型有专有的自动更新特性,将在后面描述。
    类型大小
    (字节)
    范围格式用途
    DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
    TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
    YEAR 1 1901/2155 YYYY 年份值
    DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
    TIMESTAMP 4

    1970-01-01 00:00:00/2038

    结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

    YYYYMMDD HHMMSS 混合日期和时间值,时间戳

    字符串类型

    • 字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
    类型大小用途
    CHAR 0-255字节 定长字符串
    VARCHAR 0-65535 字节 变长字符串
    TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
    TINYTEXT 0-255字节 短文本字符串
    BLOB 0-65 535字节 二进制形式的长文本数据
    TEXT 0-65 535字节 长文本数据
    MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
    MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
    LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
    LONGTEXT 0-4 294 967 295字节 极大文本数据
    • CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
    • BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
    • BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。
    • 有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。

                                                                         请听下回说

    以上内容是对 MySQL的数据库简单介绍和怎么操作,后续还会对表的操作进行更新,详细请听下回分解

  • 相关阅读:
    vuecli 脚手架总结
    javascript 如何继承父类
    拖拽面向对象的写法
    获得焦点并且复制文本
    使用vuecli脚手架安装的eslint 容易犯错的地方
    javascript 实现分享功能
    原生javascript 获得css样式有几种方法?
    原生javascript 改写的tab选项卡
    [转载]c# 嵌入资源文件
    [转载]C# log4net应用
  • 原文地址:https://www.cnblogs.com/yangmaosen/p/12489779.html
Copyright © 2011-2022 走看看