创建数据库,表和授权用户

正如你所知,数据库可以简单地定义为有组织的信息集合。 具体地讲,MariaDB的是关系数据库管理系统(RDBMS),并使用结构化查询语言来执行数据库操作。 另外,请记住MariaDB使用术语数据库和模式可互换。

以存储在数据库中的持久性信息,我们将使用存储数据的行的 。 通常,两个或多个表将以某种方式彼此相关。 这是表征关系数据库的使用的组织的一部分。

创建新数据库

要创建一个名为新的数据库BooksDB ,用下面的命令进入MariaDB的提示符(你会被提示输入根MariaDB的用户的密码):

[root@HowToing ~]# mysql -u root -pEnter password: Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 2Server version: 10.1.14-MariaDB MariaDB ServerCopyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> CREATE DATABASE BookstoreDB;Query OK, 1 row affected (0.00 sec)MariaDB [(none)]>

一旦创建了数据库,我们需要在其上创建至少两个表。 但首先让我们探讨数据类型的概念。

MariaDB数据类型简介

正如我们前面所解释的, 是数据库中的对象,我们将保持持续的信息。 每个表由一个给定的数据类型(信息类型)该字段可以存储两个或多个字段(也称为 )。

在MariaDB的最常见的数据类型有以下几种(你可以咨询在完整列表官方MariaDB的在线文档 ):

数字:
  1. 布尔认为0为假和任何其他价值为真。

  2. TINYINT,如果有符号使用,涵盖了从-128到127的范围内,而无符号的范围是0到255。

  3. SMALLINT,如果有符号使用,涵盖了从-32768范围到32767无符号的范围是0到65535。

  4. INT,如果有符号使用,覆盖范围从0到4294967295,并-2147483648到2147483647,否则。

 :在TINYINT,SMALLINT,和INT,假设签署了默认。

双(M,D),其中,M是数字的总数和D是小数点后的位数,代表一个双精度浮点数。 如果指定UNSIGNED,则不允许使用负值。

串:
  1. VARCHAR(M)表示可变长度的串其中M是在字节允许的最大列长度(65,535理论上)。 在大多数情况下,字节数与字符数相同,除了一些字符可以占用多达3个字节。 例如,西班牙字母ñ表示一个字符,但占用2个字节。

  2. TEXT(M)表示具有65,535个字符,最大长度为列。 然而,因为它与VARCHAR(M)的情况时,实际的最大长度,如果存储多字节字符减小。 如果指定M,则列作为能够存储这样的字符数最小类型创建。

  3. MEDIUMTEXT(M)LONGTEXT(M)是类似的文本(M),仅允许的最大长度分别为16,777,215和4,294,967,295字符。

日期和时间:
  1. Date表示YYYY-MM-DD格式的日期。

  2. TIME代表HH时间:MM:SS.SSS格式(小时,分,秒和毫秒)。

  3. DATETIMEYYYY-MM-DD HH 日期时间组合:MM:SS格式。

  4. 时间戳被用于定义被添加或更新的行的时刻。

在检查了这些数据类型之后,您将能够更好地确定需要将哪些数据类型分配给表中的给定列。

例如,一个人的名字,可以轻松适应一个VARCHAR(50),而博客文章将需要一个文本类型(选择中号根据您的具体需求)。

使用主键和外键创建表

在我们深入创建表,大约有,我们需要检讨的关系型数据库两个基本概念: 键和键。

主键包含一个唯一标识每一行,或记录,在表中的值。 另一方面, 外键是用来在两个表来创建数据之间的链接,并且控制可以存储在将外键所在的表中的数据。 主键和外键通常是INT。

为了说明这一点,让我们使用BookstoreDB并创建一个名为两个表AuthorsTBLBooksTBL如下。 NOT NULL约束表明相关领域需要非NULL值。

此外,AUTO_INCREMENT时使用一个新的记录被插入到表由一个增加的INT主键列的值。

MariaDB [(none)]> USE BookstoreDB;MariaDB [(none)]> CREATE TABLE AuthorsTBL (AuthorID INT NOT NULL AUTO_INCREMENT,AuthorName VARCHAR(100),PRIMARY KEY(AuthorID));MariaDB [(none)]> CREATE TABLE BooksTBL (BookID INT NOT NULL AUTO_INCREMENT,BookName VARCHAR(100) NOT NULL,AuthorID INT NOT NULL,BookPrice DECIMAL(6,2) NOT NULL,BookLastUpdated TIMESTAMP,BookIsAvailable BOOLEAN,PRIMARY KEY(BookID),FOREIGN KEY (AuthorID) REFERENCES AuthorsTBL(AuthorID));

使用主键和外键创建MySQL表

MariaDB [(none)]> USE BookstoreDB;Database changedMariaDB [BookstoreDB]> CREATE TABLE AuthorsTBL (-> AuthorID INT NOT NULL AUTO_INCREMENT,-> AuthorName VARCHAR(100),-> PRIMARY KEY(AuthorID)-> );Query OK, 0 rows affected (0.05 sec)MariaDB [BookstoreDB]> CREATE TABLE BooksTBL (-> BookID INT NOT NULL AUTO_INCREMENT,-> BookName VARCHAR(100) NOT NULL,-> AuthorID INT NOT NULL,-> BookPrice DECIMAL(6,2) NOT NULL,-> BookLastUpdated TIMESTAMP,-> BookIsAvailable BOOLEAN,-> PRIMARY KEY(BookID),-> FOREIGN KEY (AuthorID) REFERENCES AuthorsTBL(AuthorID)-> );Query OK, 0 rows affected (0.05 sec)MariaDB [BookstoreDB]>

现在我们可以继续前进,开始插入记录AuthorsTBLBooksTBL 。

选择,插入,更新和删除行

首先,我们将填充AuthorsTBL表。 为什么? 因为我们需要有价值观AuthorID插入记录BooksTBL之前。

从MariaDB提示符执行以下查询:

MariaDB [BookstoreDB]> INSERT INTO AuthorsTBL (AuthorName) VALUES ('Agatha Christie'), ('Stephen King'), ('Paulo Coelho');

在这之后,我们将会选择从AuthorsTBL的所有记录。 请记住,我们将需要的AuthorID每个记录创造BooksTBL 插入查询。

如果你想在一次检索一条记录,您可以使用WHERE子句来表示一个条件,一个行必须符合退换。 例如,

MariaDB [BookstoreDB]> SELECT * FROM AuthorsTBL WHERE AuthorName='Agatha Christie';

或者,您可以同时选择所有记录:

MariaDB [BookstoreDB]> SELECT * FROM AuthorsTBL;

在MySQL中选择和查询记录

MariaDB [BookstoreDB]> SELECT * FROM AuthorsTBL WHERE AuthorName='Agatha Christie';+----------+-----------------+| AuthorID | AuthorName      |+----------+-----------------+|        1 | Agatha Christie |+----------+-----------------+1 row in set (0.00 sec)MariaDB [BookstoreDB]> SELECT * FROM AuthorsTBL;+----------+-----------------+| AuthorID | AuthorName      |+----------+-----------------+|        1 | Agatha Christie ||        2 | Stephen King    ||        3 | Paulo Coelho    |+----------+-----------------+3 rows in set (0.00 sec)MariaDB [BookstoreDB]>

在MySQL数据库中选择并查询字符串

现在,让我们创造BooksTBL 插入查询,使用相应的AuthorID匹配每本书的作者。 在BookIsAvailable值为1表示这本书的股票,否则为0:

MariaDB [BookstoreDB]> INSERT INTO BooksTBL (BookName, AuthorID, BookPrice, BookIsAvailable)VALUES ('And Then There Were None', 1, 14.95, 1),('The Man in the Brown Suit', 1, 23.99, 1),('The Stand', 2, 35.99, 1),('Pet Sematary', 2, 17.95, 0),('The Green Mile', 2, 29.99, 1),('The Alchemist', 3, 25, 1),('By the River Piedra I Sat Down and Wept', 3, 18.95, 0);

在MySQL表中插入查询

MariaDB [BookstoreDB]> INSERT INTO BooksTBL (BookName, AuthorID, BookPrice, BookIsAvailable)-> VALUES ('And Then There Were None', 1, 14.95, 1),-> ('The Man in the Brown Suit', 1, 23.99, 1),-> ('The Stand', 2, 35.99, 1),-> ('Pet Sematary', 2, 17.95, 0),-> ('The Green Mile', 2, 29.99, 1),-> ('The Alchemist', 3, 25, 1),-> ('By the River Piedra I Sat Down and Wept', 3, 18.95, 0);Query OK, 7 rows affected (0.03 sec)Records: 7  Duplicates: 0  Warnings: 0

在这一点上,我们会做一个SELECT看到BooksTBL的记录。 那么让我们更新“炼金术士 ”由保罗科埃略的价格,再次选择特定的记录。

注意BookLastUpdated场现在怎么显示不同的值。 正如我们前面所解释的,一个时间戳字段显示记录插入或最后修改时的数值。

MariaDB [BookstoreDB]> SELECT * FROM BooksTBL;MariaDB [BookstoreDB]> UPDATE BooksTBL SET BookPrice=22.75 WHERE BookID=6;MariaDB [BookstoreDB]> SELECT * FROM BooksTBL WHERE BookID=6;

在MySQL数据库中插入查询和更新表

MariaDB [BookstoreDB]> SELECT * FROM BooksTBL;+--------+-----------------------------------------+----------+-----------+---------------------+-----------------+| BookID | BookName                                | AuthorID | BookPrice | BookLastUpdated     | BookIsAvailable |+--------+-----------------------------------------+----------+-----------+---------------------+-----------------+|      1 | And Then There Were None                |        1 |     14.95 | 2016-10-01 23:31:41 |               1 ||      2 | The Man in the Brown Suit               |        1 |     23.99 | 2016-10-01 23:31:41 |               1 ||      3 | The Stand                               |        2 |     35.99 | 2016-10-01 23:31:41 |               1 ||      4 | Pet Sematary                            |        2 |     17.95 | 2016-10-01 23:31:41 |               0 ||      5 | The Green Mile                          |        2 |     29.99 | 2016-10-01 23:31:41 |               1 ||      6 | The Alchemist                           |        3 |     25.00 | 2016-10-01 23:31:41 |               1 ||      7 | By the River Piedra I Sat Down and Wept |        3 |     18.95 | 2016-10-01 23:31:41 |               0 |+--------+-----------------------------------------+----------+-----------+---------------------+-----------------+7 rows in set (0.00 sec)MariaDB [BookstoreDB]> UPDATE BooksTBL SET BookPrice=22.75 WHERE BookID=6;Query OK, 1 row affected (0.04 sec)Rows matched: 1  Changed: 1  Warnings: 0MariaDB [BookstoreDB]> SELECT * FROM BooksTBL WHERE BookID=6;+--------+---------------+----------+-----------+---------------------+-----------------+| BookID | BookName      | AuthorID | BookPrice | BookLastUpdated     | BookIsAvailable |+--------+---------------+----------+-----------+---------------------+-----------------+|      6 | The Alchemist |        3 |     22.75 | 2016-10-01 23:35:00 |               1 |+--------+---------------+----------+-----------+---------------------+-----------------+1 row in set (0.00 sec)MariaDB [BookstoreDB]>

插入和更新数据库表记录

虽然我们不会在这里做,你也可以删除一个记录,如果不再使用了。 例如,假设我们要删除BooksTBL“炼金术士 ”。

要做到这一点,我们会按如下方式使用DELETE语句:

MariaDB [BookstoreDB]> DELETE FROM BooksTBL WHERE BookID=6;

作为更新的情况下,这是一个好主意,以查看可能潜在的DELETE受到影响的结果首先做一个SELECT。

另外,不要忘记添加WHERE子句和条件(的BookID = 6)来选择特定的记录被删除。 否则,您可能会删除表中的所有行!

如果你希望连接两个(或更多)的字段,可以使用CONCAT声明。 举例来说,假设我们要返回的结果集的形式组成的书名和作者一个字段的“炼金术士(保罗·科埃略)”,并与价格的另一列。

这将需要对两个表( 的AuthorID)共享的公共领域AuthorsTBLBooksTBL之间的连接 :

MariaDB [BookstoreDB]> SELECT CONCAT(BooksTBL.BookName, ' (', AuthorsTBL.AuthorName, ')') AS Description, BooksTBL.BookPrice FROM AuthorsTBL JOIN BooksTBL ON AuthorsTBL.AuthorID = BooksTBL.AuthorID;

正如我们所看到的,CONCAT使我们能够参加由逗号分隔的多个字符串表达式。 您还会注意到,我们选择了别名说明来表示结果集并置。

上面的查询的输出如下图所示:

在MySQL表中查询多个字段

MariaDB [BookstoreDB]> SELECT CONCAT(BooksTBL.BookName, ' (', AuthorsTBL.AuthorName, ')') AS Description, BooksTBL.BookPrice FROM AuthorsTBL JOIN BooksTBL ON AuthorsTBL.AuthorID = BooksTBL.AuthorID;+--------------------------------------------------------+-----------+| Description                                            | BookPrice |+--------------------------------------------------------+-----------+| And Then There Were None (Agatha Christie)             |     14.95 || The Man in the Brown Suit (Agatha Christie)            |     23.99 || The Stand (Stephen King)                               |     35.99 || Pet Sematary (Stephen King)                            |     17.95 || The Green Mile (Stephen King)                          |     29.99 || The Alchemist (Paulo Coelho)                           |     25.00 || By the River Piedra I Sat Down and Wept (Paulo Coelho) |     18.95 |+--------------------------------------------------------+-----------+7 rows in set (0.00 sec)

在数据库表中查询多个字段

创建用户以访问BookstoreDB数据库

利用在数据库中执行所有DML操作是一个坏主意。 为了避免这种情况,我们可以创建一个新的MariaDB的用户帐户(我们将其命名为bookstoreuser),并设置BookstoreDB所有必要的权限:

MariaDB [BookstoreDB]> CREATE USER bookstoreuser@localhost IDENTIFIED BY 'YourPasswordHere';MariaDB [BookstoreDB]> GRANT ALL PRIVILEGES ON  BookstoreDB.* to bookstoreuser@localhost;MariaDB [BookstoreDB]> FLUSH PRIVILEGES;

使用权限创建新数据库用户

MariaDB [BookstoreDB]> CREATE USER bookstoreuser@localhost IDENTIFIED BY 'howtoing';Query OK, 0 rows affected (0.00 sec)MariaDB [BookstoreDB]> GRANT ALL PRIVILEGES ON  BookstoreDB.* to bookstoreuser@localhost;Query OK, 0 rows affected (0.00 sec)MariaDB [BookstoreDB]> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)

为每个数据库设置一个专用的,单独的用户将防止损坏整个数据库,如果单个帐户受损。

额外的MySQL提示

要清理MariaDB的提示符下,键入以下命令,然后按Enter键 :

MariaDB [BookstoreDB]> \! clear

要检查给定表的配置,请执行:

MariaDB [BookstoreDB]> SELECT COLUMNS IN [TABLE NAME HERE ];

例如,

MariaDB [BookstoreDB]> SHOW COLUMNS IN BooksTBL;

列出数据库表中的列

MariaDB [BookstoreDB]> SHOW COLUMNS IN BooksTBL;+-----------------+--------------+------+-----+-------------------+-----------------------------+| Field           | Type         | Null | Key | Default           | Extra                       |+-----------------+--------------+------+-----+-------------------+-----------------------------+| BookID          | int(11)      | NO   | PRI | NULL              | auto_increment              || BookName        | varchar(100) | NO   |     | NULL              |                             || AuthorID        | int(11)      | NO   | MUL | NULL              |                             || BookPrice       | decimal(6,2) | NO   |     | NULL              |                             || BookLastUpdated | timestamp    | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP || BookIsAvailable | tinyint(1)   | YES  |     | NULL              |                             |+-----------------+--------------+------+-----+-------------------+-----------------------------+6 rows in set (0.02 sec)

列出数据库表中的列

快速检查显示,BookIsAvailable领域承认NULL值。 因为我们不希望允许,我们会修改表如下:

MariaDB [BookstoreDB]> ALTER TABLE BooksTBL MODIFY BookIsAvailable BOOLEAN NOT NULL;

(随时再次显示列-上面的图片中突出显示的 ,现在应该是一个NO)。

最后,要查看服务器上的所有数据库,请执行:

MariaDB [BookstoreDB]> SHOW DATABASES;ORMariaDB [BookstoreDB]> SHOW SCHEMAS;

列出所有的MySQL数据库

[root@HowToing ~]# mysql -u bookstoreuser -pEnter password: Welcome to the MariaDB monitor.  Commands end with ; or \g.Your MariaDB connection id is 3Server version: 10.1.14-MariaDB MariaDB ServerCopyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [BookstoreDB]> SHOW DATABASES;+--------------------+| Database           |+--------------------+| BookstoreDB        || information_schema |+--------------------+2 rows in set (0.00 sec)MariaDB [BookstoreDB]> SHOW SCHEMAS;+--------------------+| Database           |+--------------------+| BookstoreDB        || information_schema |+--------------------+2 rows in set (0.00 sec)

下图显示了访问MariaDB的提示为bookstoreuser后,上述命令的结果(注意如何帐户无法“看到”比BookstoreDBINFORMATION_SCHEMA(适用于所有用户)之外的任何数据库:

列出所有MySQL数据库

转 : https://www.howtoing.com/learn-mysql-mariadb-for-beginners

转载于:https://blog.51cto.com/lixin752299/2059728

学习MySQL / MariaDB初学者 - 第1部分相关推荐

  1. 怎么在linux下用mysql建库_在MySQL/MariaDB中创建数据库、数据库用户和授予特权(针对Linux平台)...

    在本文中,将学习MySQL/MariaDB数据库创建.数据库用户创建以及如何向用户授予权限,方法针对Linux平台.安装数据库请参考为CentOS 8操作系统安装MySQL的方法,以安装MySQL 8 ...

  2. 这38个小技巧告诉你如何快速学习MySQL数据库

    无论是运维.开发.测试,还是架构师,数据库技术是一个必备加薪神器,那么,一直说学习数据库.学MySQL,到底是要学习它的哪些东西呢?此文为你揭晓,你值得一看!看过别忘记点赞+转发支持哦. 1.如何快速 ...

  3. Navicat使用教程:在Navicat Monitor for MySQL/MariaDB中配置实

    下载Navicat Monitor最新版本 Navicat Monitor 是一套安全.简单而且无代理的远程服务器监控工具.它具有强大的功能使你的监控发挥最大效用.受监控的服务器包括 MySQL.Ma ...

  4. Navicat使用教程:在Navicat Monitor for MySQL/MariaDB中配置实例

    下载Navicat Monitor最新版本 Navicat Monitor是一套安全.简单而且无代理的远程服务器监控工具.它具有强大的功能使你的监控发挥最大效用.受监控的服务器包括 MySQL.Mar ...

  5. 学习MySQL我们应该知道哪些东西?

    随笔:小编由于年前一直在找工作,而年后找到工作后又一直在忙工作,所以也很少有时间给大家写点什么,总的来说呢,回顾一下之前面试的几次经历,也曾小小的总结了一下自己的不足,发现自己虽然一直在原有的公司(外 ...

  6. 怎么在linux上修改mysql端口映射_如何在Linux中更改默认的MySQL / MariaDB端口

    在本指南中,我们将学习如何更改MySQL / MariaDB数据库在CentOS 7和基于Debian的Linux发行版中绑定的默认端口. MySQL数据库服务器在Linux和Unix下运行的默认端口 ...

  7. 如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV

    文章目录 本教程将详细讲解 1. MySQL / MariaDB 数据库数据「导出」 2. MySQL / MariaDB 数据库数据「导入」 3. 使用「卡拉云」一键导入导出 MySQL / Mar ...

  8. MySQL Workbench 使用教程 - 如何使用 Workbench 操作 MySQL / MariaDB 数据库中文指南

    MySQL Workbench 是一款专门为 MySQL 设计的可视化数据库管理软件,我们可以在自己的计算机上,使用图形化界面远程管理 MySQL 数据库. 有关 MySQL 远程管理软件,你可以选择 ...

  9. 学习MySQL的第一步:安装MySQL及数据库可视化工具Navicat

    写作初衷❤ 笔者电脑上的MySQL不知为何无法启动,经上网搜索解决办法无果,只能卸载重新安装. 大多数人去MySQL官网下载,不知道要下载哪一个文件,比如有MySQL Enterprise Editi ...

最新文章

  1. exchange 2007 碰到NDR
  2. 【Python】青少年蓝桥杯_每日一题_5.03_判断是否是三角形
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1072:鸡尾酒疗法
  4. java炸弹游戏_java实现数字炸弹
  5. beetl 取list下标的问题
  6. 【Python 必会技巧】使用 zip() 函数对序列进行压缩和解压操作
  7. mysql memcached java_java缓存技术memcached实例
  8. YurunOAuthLogin v2.0.2,第三方 OAuth2 授权一把梭
  9. js如何处理后台传递过来的Map
  10. 6种常用Bean拷贝工具一览
  11. 常见的INI(PHP)配置
  12. STM8S与IAR程序常用错误
  13. 智慧人彩票软件 免费杀毒软件下载
  14. 18个基于Web的代码开发编辑器
  15. CTF —— 网络安全大赛
  16. Word 尾部空格添加下划线
  17. [经验技巧] 小米线刷详细图文教程(具体步骤)
  18. 您选择的不是数据库安装目录_您不是您的数据,但您的数据仍然是您
  19. Java画布:直线三角形,矩形,椭圆等
  20. matlab用gui 画函数,MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 1,图

热门文章

  1. *在通配符及正则表达式中的差别
  2. Ruby Variable Scope 简单讲解
  3. kafka 怎么样连接图形化界面_从零开始搭建Kafka+SpringBoot分布式消息系统
  4. api商品分享源码_谈谈微服务中的 API 网关(API Gateway)
  5. android个人微信支付,Android之微信支付
  6. kmeans中的k的含义_硬质合金中P、M、K、N、S、H六大字母含义详解
  7. 产品新人如何快速成长?
  8. 产品人如何在小企业中夹缝生存?
  9. 面试时会谈薪的人一开口就赢了:让你薪资翻倍的谈薪技巧
  10. 什么样的企业适合建设中台