目录
知识点1:mysql里面的数据库和表都以文件形式存储在linux系统里面
我们在mysql里面创建数据库和表以后,也会生成对应的目录和文件
方法1:直接输入语句 show create database wangsh;
方法2:进入新建库对应的文件夹里面查看db.opt文件的内容也可以查看数据库的字符集内容
将数据库删除以后,linux系统里面对应数据库的那个目录也会删除
linux里面一切皆文件,我们在数据库里面创建的数据库和表都是以文件的形式存储于机器里面
- root@(none) 15:41 mysql>create database sanchuang;
- Query OK, 1 row affected (0.01 sec)
-
- root@(none) 15:41 mysql>show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- | sanchuang |
- | student |
- | sys |
- +--------------------+
- 6 rows in set (0.01 sec)
-
- root@(none) 15:41 mysql>use sanchuang;
- Database changed
- root@sanchuang 15:41 mysql>show tables;
- Empty set (0.00 sec)
-
- root@sanchuang 15:41 mysql>create table student(id int,name varchar(20));
- Query OK, 0 rows affected (0.01 sec)
###################################################
- [root@localhost etc]# cd /data/mysql/
- [root@localhost mysql]# ls
- auto.cnf ib_buffer_pool localhost.localdomain.err performance_schema server-key.pem
- ca-key.pem ibdata1 localhost.localdomain.pid private_key.pem student
- ca.pem ib_logfile0 mysql public_key.pem sys
- client-cert.pem ib_logfile1 mysql.sock sanchuang
- client-key.pem ibtmp1 mysql.sock.lock server-cert.pem
- [root@localhost mysql]# cd sanchuang/
- [root@localhost sanchuang]# ls
- db.opt
- [root@localhost sanchuang]# ls
- db.opt student.frm student.ibd
- [root@localhost sanchuang]# pwd
- /data/mysql/sanchuang
- [root@localhost sanchuang]#
###################################################
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能,许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。
InnoDB、MyISAM、Memory
myisam
student.frm文件 ---》存储表结构的 frame
student.ibd文件 ---》 innodb data 和index
###################################################
- root@sanchuang 15:50 mysql>show tables;
- +---------------------+
- | Tables_in_sanchuang |
- +---------------------+
- | student |
- +---------------------+
- 1 row in set (0.00 sec)
- root@sanchuang 16:00 mysql>desc student;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | id | int(11) | YES | | NULL | |
- | name | varchar(20) | YES | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 2 rows in set (0.00 sec)
-
当我们不知道某个命令的具体语法时候可以使用help来查看语法规则
###################################################
[]里面的代表可接可不接
{}里面的表示可以选择一个
- root@sanchuang 16:00 mysql>help insert
- Name: 'INSERT'
- Description:
- Syntax:
- INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
- [INTO] tbl_name
- [PARTITION (partition_name [, partition_name] ...)]
- [(col_name [, col_name] ...)]
- {VALUES | VALUE} (value_list) [, (value_list)] ...
- [ON DUPLICATE KEY UPDATE assignment_list]
-
- INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
- [INTO] tbl_name
- [PARTITION (partition_name [, partition_name] ...)]
- SET assignment_list
- [ON DUPLICATE KEY UPDATE assignment_list]
-
- INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
- [INTO] tbl_name
- [PARTITION (partition_name [, partition_name] ...)]
- [(col_name [, col_name] ...)]
- SELECT ...
- [ON DUPLICATE KEY UPDATE assignment_list]
-
- value:
- {expr | DEFAULT}
-
- value_list:
- value [, value] ...
-
- assignment:
- col_name = value
-
- assignment_list:
- assignment [, assignment] ...
-
###################################################
- root@sanchuang 16:05 mysql>insert into student(id,name) value(1,"cali");
- Query OK, 1 row affected (0.00 sec)
-
- root@sanchuang 16:10 mysql>select * from student;
- +------+------+
- | id | name |
- +------+------+
- | 1 | cali |
- +------+------+
- 1 row in set (0.00 sec)
###################################################
- root@(none) 09:17 mysql>create database wangsh;
- Query OK, 1 row affected (0.00 sec)
-
- root@(none) 09:21 mysql>show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- | sanchuang |
- | student |
- | sys |
- | wangsh |
- +--------------------+
- 7 rows in set (0.00 sec)
###################################################
- root@(none) 09:22 mysql>show create database wangsh;
- +----------+-----------------------------------------------------------------+
- | Database | Create Database |
- +----------+-----------------------------------------------------------------+
- | wangsh | CREATE DATABASE `wangsh` /*!40100 DEFAULT CHARACTER SET utf8 */ |
- +----------+-----------------------------------------------------------------+
- 1 row in set (0.00 sec)
###################################################
- [root@localhost /]# cd /data/mysql/
- [root@localhost mysql]# ls
- auto.cnf ib_buffer_pool localhost.localdomain.err performance_schema server-key.pem
- ca-key.pem ibdata1 localhost.localdomain.pid private_key.pem student
- ca.pem ib_logfile0 mysql public_key.pem sys
- client-cert.pem ib_logfile1 mysql.sock sanchuang wangsh
- client-key.pem ibtmp1 mysql.sock.lock server-cert.pem
- [root@localhost mysql]# cd wangsh/
- [root@localhost wangsh]# ls
- db.opt
- [root@localhost wangsh]# cat db.opt
- default-character-set=utf8
- default-collation=utf8_general_ci
###################################################
root@(none) 09:29 mysql>show variables;
- root@(none) 09:30 mysql>show variables like "%character%";
- +--------------------------+----------------------------------+
- | Variable_name | Value |
- +--------------------------+----------------------------------+
- | character_set_client | utf8 |
- | character_set_connection | utf8 |
- | character_set_database | utf8 |
- | character_set_filesystem | binary |
- | character_set_results | utf8 |
- | character_set_server | utf8 |
- | character_set_system | utf8 |
- | character_sets_dir | /usr/local/mysql/share/charsets/ |
- +--------------------------+----------------------------------+
- 8 rows in set (0.01 sec)
system -->mysql系统
server --> linux系统
character_set_database -->数据里的字符集
server -->system --》database
###################################################
- root@(none) 21:59 mysql>drop database wangsh;
- Query OK, 0 rows affected (0.01 sec)
-
- root@(none) 21:59 mysql>show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | mysql |
- | performance_schema |
- | sanchuang |
- | student |
- | sys |
- +--------------------+
- 6 rows in set (0.00 sec)
- [root@localhost mysql]# cd /data/mysql/
- [root@localhost mysql]# ls | grep wangsh
- [root@localhost mysql]#
###################################################
库里有表,库里面包含表
库:文件夹
表:文件
###################################################
- root@wangsh 22:08 mysql>use sanchuang;
- Reading table information for completion of table and column names
- You can turn off this feature to get a quicker startup with -A
-
- Database changed
- root@sanchuang 22:08 mysql>create table wangsh.table1(id int,name varchar(20));
- Query OK, 0 rows affected (0.01 sec)
-
- root@sanchuang 22:09 mysql>show tables in wangsh;
- +------------------+
- | Tables_in_wangsh |
- +------------------+
- | table1 |
- +------------------+
- 1 row in set (0.00 sec)
###################################################
- root@sanchuang 22:09 mysql>create table wangsh.table1(id int,name varchar(20));
- ERROR 1050 (42S01): Table 'table1' already exists
如果表已经存在,那么不报错,不存在则新建
有一条警告,可以用show warnings;来查看
- root@sanchuang 22:12 mysql>create table if not exists wangsh.table1(id int,name varchar(20));
- Query OK, 0 rows affected, 1 warning (0.00 sec)
-
- root@sanchuang 22:12 mysql>show warnings;
- +-------+------+-------------------------------+
- | Level | Code | Message |
- +-------+------+-------------------------------+
- | Note | 1050 | Table 'table1' already exists |
- +-------+------+-------------------------------+
- 1 row in set (0.00 sec)
###################################################
- root@sanchuang 22:41 mysql>create table t2(id int(4) not null primary key, name varchar(10) not null);
- Query OK, 0 rows affected (0.01 sec)
-
- root@sanchuang 22:41 mysql>desc t2
- -> ;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | id | int(4) | NO | PRI | NULL | |
- | name | varchar(10) | NO | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 2 rows in set (0.01 sec)
###################################################
- root@sanchuang 22:44 mysql>show create table t2;
- +-------+--------------------------------------------------------------------------------------------------------------------------------------+
- | Table | Create Table |
- +-------+--------------------------------------------------------------------------------------------------------------------------------------+
- | t2 | CREATE TABLE `t2` (
- `id` int(4) NOT NULL,
- `name` varchar(10) NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
- +-------+--------------------------------------------------------------------------------------------------------------------------------------+
- 1 row in set (0.00 sec)
- root@sanchuang 22:46 mysql>desc t2;
- +-------+-------------+------+-----+---------+-------+
- | Field | Type | Null | Key | Default | Extra |
- +-------+-------------+------+-----+---------+-------+
- | id | int(4) | NO | PRI | NULL | |
- | name | varchar(10) | NO | | NULL | |
- +-------+-------------+------+-----+---------+-------+
- 2 rows in set (0.00 sec)
###################################################
字符集可以和库捆绑,也可以和表捆绑,但是存储引擎和表捆绑的,不是和库捆绑,因为库是一个文件夹,而表示文件,是存放在磁盘上面的
###################################################
库 -- 表 -- 字段
如果不给字段,表指定字符集的话,它会自动继承,字段继承表,表继承库,如果指定则使用指定的字符集。
###################################################
Mysql,oracle, MSSQL,postgresql
redis,mongDB,TIDB,timeseriesDB
非关系型数据库一般是 KEY:VALUE 键值对来存储,例如redis
###################################################
结构化数据一般是指关系型数据库表示和存储,可以用二维表来逻辑表达实现的数据
非结构化数据顾名思义,就是没有固定结构的数据,包括所有格式的办公文档,文本,图片,XML,HTML,各类报表,等都属于非结构化数据,对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。