一、数据库和数据库对象

1、系统数据库
系统数据库是指安装完MySQL服务器后,会附带的一些数据库,如图所示,系统数据库会记录一些必需的信息,用户不能直接修改这些系统数据库。各个系统数据库的作用如下:

  • information_schema:主要存储系统中的一些数据库对象信息,如用户表信息、列信息、权限信息、字符集信息和分区信息等;
  • performance_schema:主要存储数据库服务器性能参数;
  • mysql:主要存储系统的用户权限信息;
  • test:该数据库为MySQL数据库管理系统自动创建的测试数据库,任何用户都可以使用;

2、用户数据库

用户数据库是用户根据实际需求创建的数据库。

所谓数据库对象 是指存储、管理和使用数据的不同结构形式,主要包含表、视图、存储过程、函数、触发器和事件等。

mysql 数据库对象分类 mysql数据库对象包括哪六个_存储引擎


3、创建数据库

创建数据库语法如下:

CREATE DATABASE 数据库名;

【实例】创建一个名为test的数据库,并设定编码集为utf8;(如果数据库存在则创建,不存在则不创建)

mysql> CREATE DATABASE IF NOT EXISTS test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

4、删除数据库

删除数据库语法如下:

drop database <数据库名>;

【实例】删除名为test的数据库:

mysql> drop database test;

5、选择数据库

选择数据库语法如下:

use 数据库名;

【实例】选择名为test的数据库,在后续的操作中都会在 test数据库中执行;

mysql> use test

6、查看数据库
查看数据库语法如下:

show databases;

【实例】执行上面的SQL语句,结果显示如下:

mysql 数据库对象分类 mysql数据库对象包括哪六个_mysql_02

二、存储引擎

1、查看支持的存储引擎

【命令】show engines;或者show engines\g

mysql 数据库对象分类 mysql数据库对象包括哪六个_mysql_03

【命令】show engines\G

mysql> show engines\G
*************************** 1. row ***************************
      Engine: FEDERATED
     Support: NO
     Comment: Federated MySQL storage engine
Transactions: NULL
          XA: NULL
  Savepoints: NULL
*************************** 2. row ***************************
      Engine: MRG_MYISAM
     Support: YES
     Comment: Collection of identical MyISAM tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 3. row ***************************
      Engine: MyISAM
     Support: YES
     Comment: MyISAM storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 4. row ***************************
      Engine: BLACKHOLE
     Support: YES
     Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 5. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 6. row ***************************
      Engine: MEMORY
     Support: YES
     Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 7. row ***************************
      Engine: ARCHIVE
     Support: YES
     Comment: Archive storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
*************************** 8. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 9. row ***************************
      Engine: PERFORMANCE_SCHEMA
     Support: YES
     Comment: Performance Schema
Transactions: NO
          XA: NO
  Savepoints: NO
9 rows in set (0.00 sec)

执行结果显示,MySQL支持9种存储引擎,分别为FEDERATED、MRG_MYISAM、MyISAM、BLACKHOLE、CSV、MEMORY、ARCHIVE和InnoDB。其中Engine参数表示存储引擎名称;Support参数表示MySQL数据库管理系统是否支持该存储引擎;Comment参数表示关于存储引擎的评论;Transactions参数表示存储引擎是否支持事务;XA参数表示存储引擎所支持的分布式是否符合XA规范;Savepoints参数表示存储引擎是否支持事务处理中的保存点。

2、操作默认存储引擎

(1)查看默认的存储引擎

【命令】show variables like 'storage_engine%';

mysql 数据库对象分类 mysql数据库对象包括哪六个_mysql_04

三、数据类型

1、数值类型

  MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

mysql 数据库对象分类 mysql数据库对象包括哪六个_mysql 数据库对象分类_05

2、日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

mysql 数据库对象分类 mysql数据库对象包括哪六个_mysql_06

在具体应用中,各种日期和时间类型的应用场合如下:

  • 如果要表示年月日,一般会使用DATE类型;
  • 如果要表示年月日时分秒,一般会使用DATETIME类型;
  • 如果需要经常插入或者更新日期为当前系统时间,一般会使用TIMESTAMP类型;
  • 如果要表示时分秒,一般会使用TIME类型;
  • 如果要表示年份,一般会使用YEAR类型,因为该类型比DATE类型占用更少的空间;
    【实例】创建一个包含日期和时间的表,使用insert语句插入相关数值。
mysql> use test
Database changed
mysql> create table d_test(
    -> f_date DATE,
    -> f_datetime DATETIME,
    -> f_timestamp TIMESTAMP,
    -> f_time TIME,
    -> f_year YEAR);
Query OK, 0 rows affected (0.25 sec)

mysql> select curdate(),now(),now(),time(now()),year(now()) \G
*************************** 1. row ***************************
  curdate(): 2019-01-28
      now(): 2019-01-28 17:10:01
      now(): 2019-01-28 17:10:01
time(now()): 17:10:01
year(now()): 2019
1 row in set (0.00 sec)

mysql> insert into d_test values(curdate(),now(),now(),time(now()),year(now()));
Query OK, 1 row affected (0.04 sec)

mysql> select * from d_test \G                                       
*************************** 1. row ***************************
     f_date: 2019-01-28
 f_datetime: 2019-01-28 17:12:01
f_timestamp: 2019-01-28 17:12:01
     f_time: 17:12:01
     f_year: 2019
1 row in set (0.00 sec)

mysql>

3、字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

mysql 数据库对象分类 mysql数据库对象包括哪六个_存储引擎_07

4、浮点型(float 和 double)

mysql 数据库对象分类 mysql数据库对象包括哪六个_存储引擎_08


5、定点数类型

mysql 数据库对象分类 mysql数据库对象包括哪六个_数据库_09

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。

decimal(m,d) 参数 m<65 是总个数,d<30 且 d<m 是小数位。

6、位类型

mysql 数据库对象分类 mysql数据库对象包括哪六个_mysql 数据库对象分类_10