一、数据库和数据库对象
1、系统数据库
系统数据库是指安装完MySQL服务器后,会附带的一些数据库,如图所示,系统数据库会记录一些必需的信息,用户不能直接修改这些系统数据库。各个系统数据库的作用如下:
- information_schema:主要存储系统中的一些数据库对象信息,如用户表信息、列信息、权限信息、字符集信息和分区信息等;
- performance_schema:主要存储数据库服务器性能参数;
- mysql:主要存储系统的用户权限信息;
- test:该数据库为MySQL数据库管理系统自动创建的测试数据库,任何用户都可以使用;
2、用户数据库
用户数据库是用户根据实际需求创建的数据库。
所谓数据库对象 是指存储、管理和使用数据的不同结构形式,主要包含表、视图、存储过程、函数、触发器和事件等。
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语句,结果显示如下:
二、存储引擎
1、查看支持的存储引擎
【命令】show engines;
或者show engines\g
【命令】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%';
三、数据类型
1、数值类型
MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
2、日期和时间类型
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
在具体应用中,各种日期和时间类型的应用场合如下:
- 如果要表示年月日,一般会使用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。
4、浮点型(float 和 double)
5、定点数类型
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
decimal(m,d) 参数 m<65 是总个数,d<30 且 d<m 是小数位。
6、位类型