当前位置:网站首页>三、mysql 存储引擎-建库建表操作
三、mysql 存储引擎-建库建表操作
2022-08-01 22:05:00 【[email protected]】
目录
知识点1:mysql里面的数据库和表都以文件形式存储在linux系统里面
我们在mysql里面创建数据库和表以后,也会生成对应的目录和文件
方法1:直接输入语句 show create database wangsh;
方法2:进入新建库对应的文件夹里面查看db.opt文件的内容也可以查看数据库的字符集内容
将数据库删除以后,linux系统里面对应数据库的那个目录也会删除
知识点1:mysql里面的数据库和表都以文件形式存储在linux系统里面
linux里面一切皆文件,我们在数据库里面创建的数据库和表都是以文件的形式存储于机器里面
[email protected](none) 15:41 mysql>create database sanchuang;
Query OK, 1 row affected (0.01 sec)
[email protected](none) 15:41 mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sanchuang |
| student |
| sys |
+--------------------+
6 rows in set (0.01 sec)
[email protected](none) 15:41 mysql>use sanchuang;
Database changed
[email protected] 15:41 mysql>show tables;
Empty set (0.00 sec)
[email protected] 15:41 mysql>create table student(id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)
###################################################
我们在mysql里面创建数据库和表以后,也会生成对应的目录和文件
[[email protected] etc]# cd /data/mysql/
[[email protected] 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
[[email protected] mysql]# cd sanchuang/
[[email protected] sanchuang]# ls
db.opt
[[email protected] sanchuang]# ls
db.opt student.frm student.ibd
[[email protected] sanchuang]# pwd
/data/mysql/sanchuang
[[email protected] sanchuang]#
###################################################
知识点2: 存储引擎是什么?
数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能,许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。
innodb 是MYSQL 的存储引擎(默认的存储引擎)
还有哪些存储引擎?
InnoDB、MyISAM、Memory
myisam
student.frm文件 ---》存储表结构的 frame
student.ibd文件 ---》 innodb data 和index
###################################################
示例:查看数据库里有哪些表:
[email protected] 15:50 mysql>show tables;
+---------------------+
| Tables_in_sanchuang |
+---------------------+
| student |
+---------------------+
1 row in set (0.00 sec)
示例:查看student表的结构:
[email protected] 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来查看语法规则
###################################################
示例:查看insert帮助文档
[]里面的代表可接可不接
{}里面的表示可以选择一个
[email protected] 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] ...
###################################################
示例:向刚创建的表里面插入数据
[email protected] 16:05 mysql>insert into student(id,name) value(1,"cali");
Query OK, 1 row affected (0.00 sec)
[email protected] 16:10 mysql>select * from student;
+------+------+
| id | name |
+------+------+
| 1 | cali |
+------+------+
1 row in set (0.00 sec)
###################################################
知识点3:新建数据库操作
新建一个数据库
[email protected](none) 09:17 mysql>create database wangsh;
Query OK, 1 row affected (0.00 sec)
[email protected](none) 09:21 mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sanchuang |
| student |
| sys |
| wangsh |
+--------------------+
7 rows in set (0.00 sec)
###################################################
查看刚才创建的数据库的字符集结构
方法1:直接输入语句 show create database wangsh;
[email protected](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)
###################################################
方法2:进入新建库对应的文件夹里面查看db.opt文件的内容也可以查看数据库的字符集内容
[[email protected] /]# cd /data/mysql/
[[email protected] 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
[[email protected] mysql]# cd wangsh/
[[email protected] wangsh]# ls
db.opt
[[email protected] wangsh]# cat db.opt
default-character-set=utf8
default-collation=utf8_general_ci
###################################################
show variables;会将所有的变量都显示出来
[email protected](none) 09:29 mysql>show variables;
[email protected](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
###################################################
示例:删除数据库 drop database
[email protected](none) 21:59 mysql>drop database wangsh;
Query OK, 0 rows affected (0.01 sec)
[email protected](none) 21:59 mysql>show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sanchuang |
| student |
| sys |
+--------------------+
6 rows in set (0.00 sec)
将数据库删除以后,linux系统里面对应数据库的那个目录也会删除
[[email protected] mysql]# cd /data/mysql/
[[email protected] mysql]# ls | grep wangsh
[[email protected] mysql]#
###################################################
库和表的关系
库里有表,库里面包含表
库:文件夹
表:文件
###################################################
新建表操作
[email protected] 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
[email protected] 22:08 mysql>create table wangsh.table1(id int,name varchar(20));
Query OK, 0 rows affected (0.01 sec)
[email protected] 22:09 mysql>show tables in wangsh;
+------------------+
| Tables_in_wangsh |
+------------------+
| table1 |
+------------------+
1 row in set (0.00 sec)
###################################################
当一个表存在时,我们再次新建这个表名会报错
[email protected] 22:09 mysql>create table wangsh.table1(id int,name varchar(20));
ERROR 1050 (42S01): Table 'table1' already exists
但是我们可以加 if not exists 来解决这个问题
如果表已经存在,那么不报错,不存在则新建
有一条警告,可以用show warnings;来查看
[email protected] 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)
[email protected] 22:12 mysql>show warnings;
+-------+------+-------------------------------+
| Level | Code | Message |
+-------+------+-------------------------------+
| Note | 1050 | Table 'table1' already exists |
+-------+------+-------------------------------+
1 row in set (0.00 sec)
###################################################
主键:表里面的一列或多列不能重复
[email protected] 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)
[email protected] 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)
###################################################
查看表结构:
方法1: show create table t2;
[email protected] 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)
方法2: desc t2;
[email protected] 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,各类报表,等都属于非结构化数据,对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。
版权声明
本文为[[email protected]]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_48391148/article/details/125873969
边栏推荐
- 统计单词数
- 46.全排列
- AIDL communication
- dvwa 通关记录1 - 暴力破解 Brute Force
- [深入研究4G/5G/6G专题-48]: 5G Link Adaption链路自适应-4-下行链路自适应DLLA-PDCCH信道
- RxJs SwitchMapTo 操作符之移花接木
- VGUgarbage collector(垃圾回收器)的实现原理
- 漫长的投资生涯
- Mini Program--Independent Subcontracting & Subcontracting Pre-download
- Based on php hotel online reservation management system acquisition (php graduation project)
猜你喜欢
随机推荐
shell编程规范与变量
blender3.2.1 unit setting
罗克韦尔AB PLC RSLogix5000中的比较指令使用方法介绍
MySQL相关知识
2022 edition of MySQL tutorial, top collection good, take your time
【牛客刷题-SQL大厂面试真题】NO4.出行场景(某滴打车)
安全第五次课后练习
RxJs SwitchMapTo 操作符之移花接木
熟悉的朋友
HCIP---Multiple Spanning Tree Protocol related knowledge points
Dichotomy Medium LeetCode6133. Maximum Number of Groups
教你VSCode如何快速对齐代码、格式化代码
[深入研究4G/5G/6G专题-48]: 5G Link Adaption链路自适应-4-下行链路自适应DLLA-PDCCH信道
Based on php tourism website management system acquisition (php graduation design)
Recycling rental system 100% open source without encryption Mall + recycling + rental
Unity Shader general lighting model code finishing
Image fusion GANMcC study notes
Shell programming conditional statement
shell programming conventions and variables
数据分析面试手册《指标篇》