MySQL的库与表
来源:互联网 发布:在哪里学淘宝美工 编辑:程序博客网 时间:2024/06/09 14:51
这里声明一下哈,既然是学习笔记,难免会有写错或者个人理解不到位的地方,如果有大神会看的话还望批评指正。
今天写写对于MySQL的库与表一些学习心得。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
一、数据库
对了,学习MySQL需要注意下自己使用的版本,每个版本的特性可能都不一样,我安装的是5.7.16的版本。该版本初始化时候会自动建立4个数据库:
information_schema数据库:记录用户、表、视图等元数据信息,类似与oracle的数据字典,对这个库只能做查询操作。而且这个库是由MySQL实例构建维护的一个虚拟库,数据目录下并不存在它的物理文件。
performance_schema数据库:MySQL服务的性能指标库,记录着整个数据库服务性能相关的数据,类似与oracle的系统v$视图。
mysql数据库:记录着用户权限、日志等信息。
sys数据库:5.7新增的数据库,本身并不存储性能数据,提供一系列的视图、过程与函数,查看performance_schema数据库中记录的性能数据,方便DBA分析诊断数据库的性能问题。
MySQL的database与schema其实是同一个概念,逻辑上看,MySQL的数据库类似于oracle数据库中的schema,不同的database下可以存在同名的数据对象。
MySQL的数据库就是数据目录下的一个子目录,以下我们通过两种方式创建数据库来体会一下:
1、sql语句创建数据库
mysql -uroot -p111111#连接数据库
create database csh;#创建数据库
create schema test;#创建数据库(上面讲过了database跟schema是同一个概念,别忘了哦)
不信咱来看看结果是不是创建了两个数据库:
[root@localhost][(none)]> show databases;
+------------------------------+
| Database |
+------------------------------+
| information_schema|
| csh |
| mysql |
| performance_schema|
| sys |
| test |
+------------------------------+
2、操作系统层面创建数据库
cd /opt/mysql/data#进入数据目录
mkdir testdb#创建目录
mysql -uroot -p111111#连接数据库
验证一下是否真的创建了一个数据库:
[root@localhost][(none)]> show databases like 'testdb';
+------------------------------+
| Database (testdb)|
+------------------------------+
| testdb |
+------------------------------+
通过sql语句新创建的数据库目录下,会生成一个db.opt文件,其中指定了该数据库的字符集相关的信息
[root@ppcdb test]# cat db.opt
default-character-set=utf8mb4#继承character_set_database参数
default-collation=utf8mb4_general_ci#继承collation_database参数(这两个参数就是搭建时指定参数中的一部分哦)
对于操作系统层创建的数据库,咱最好也给它指定一下字符集,将这两行写入db.opt文件中,但是怎么查看字符集呢?
3、查看数据库的字符集
show create database csh;#查看csh数据库的创建语句,会显示character set;
select * from information_schema.schemata;#可查看所有数据库的字符集相关信息
4、使用数据库
use csh;#使用csh数据库
select database();#查看当前使用的数据库
5、删除数据库(谨慎操作)
通过sql语句删除:
drop database test;#删除test数据库
系统层面删除
cd /opt/mysql/data#进入数据路径
rm -rf testdb#删除testdb数据库
二、表
表是关系型数据库的核心,用于存储数据,接下来建表开始我们数据库的旅程:
1、建表有太多太多的选项了,我们可以使用help命令来查看帮助文档
help create table;#查看建表语句的帮助文档
help alter table;#查看修改表语句的帮助文档
2、创建表
create table test1 (id int,name varchar(8));#创建一张名为test1的表
3、修改表结构
增加字段
alter table table_name add (col_name col_type , ...);
删除字段
alter table table_name drop col_name;
修改字段长度有两种方式(注意:mysql的字符类型定义的长度为字符个数,而不是字节个数):
alter table table_name change col_name new_col new_type;#该方式可同时修改列名
alter table table_name modify col_name new_type;
mysql还支持多种类型同时变更哦(由于Innodb的表对象每次结构变更都相当于重建,这样可节省操作)
alter table table_name add col_name col_type,drop col_name,modify col_name new_type;
4、删除表(谨慎操作)
通过sql语句删除
drop table table_name;
操作系统层面删除:
如果表采用的是MyISAM存储引擎,那么可以进行直接删除
cd /opt/mysql/data/database_name#进入数据库路径
rm -rf table_name.*#删除表的物理文件
如果表采用的是Innodb存储引擎的话,分两种情况
采用的是共享表空间存储方式:
不可以在操作系统层删除表
采用的是独立表空间存储方式:
参考MyISAM表的操作。但是Innodb的表会有一些元数据信息存储于数据字典中,这样操作不会更新数据字典存在隐患。
5、表重命名(有意思的是这玩意支持跨库移动。。。)
rename table database_name.table_name to new_database_name.new_table_name;
当然,以上在操作系统层面建/删库或表重在说明原理,实际生活中最好所有的操作都通过sql语句来实现,避免操作风险。
今天就先写这么多吧,发现写这玩意还挺耗时间的。。。有不对的地方欢迎大家指正。
- MySQL的库与表
- mysql库与表的概念
- mysql库与表的概念
- MySQL 数据库-库与表的备份与还原
- 【MySQL学习笔记】MySQL库与表
- mysql的表的导入与导出
- 【mysql】mysql分区与分表的区别
- 【mysql】mysql分区与分表的区别
- MySQL的数据类型与建库策略
- MySQL整库的备份与还原
- mysql 库的导入与导出
- mysql 表的导出与导入
- MySql数据库表的备份与恢复
- mysqL表的约束与设计
- mysql 与表相关的命令
- SQLSERVER与MYSQL临时表的使用
- MySQL分表与分区的区别
- mysql的事务处理与锁表
- Android OTA升级原理和流程分析(四)---Android系统Recovery模式的工作原理
- java实现二维码生成的几个方法
- windows下生成公钥,链接git,免密
- java classpath
- C# struct和class的比较
- MySQL的库与表
- (Shadow Mapping) 阴影映射原理与实现
- java-为指定的图像文件加透明阴影
- ZOJ 1103 Hike on a Graph(bfs)
- 归并排序
- react与backbone比较
- android 手势识别全解
- Android酷炫实用的开源框架(UI框架)
- JavaScript实时全国天气 ,自动定位城市