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语句来实现,避免操作风险。

今天就先写这么多吧,发现写这玩意还挺耗时间的。。。有不对的地方欢迎大家指正。























原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 当顾客说衣服太贵的时候怎么办 京东快递送错了被别人签收了怎么办 乐视1s玩王者荣耀卡怎么办 京东商城买东西发现地址错了怎么办 京东分期付款买手机额度不够怎么办 亮皮银色高跟鞋时间放久变色怎么办 饿了么商家钱包提现被锁了怎么办 在淘手游买的游戏账号被找回怎么办 交易猫买手游梦幻号被找回了怎么办 绑定着苹果账号的邮箱忘记了怎么办 京东注册账号跟密码都忘记了怎么办 孩子大学一个宿舍宿友不行怎么办 微信手机支付密码忘记了怎么办 微信公众号不能付款了怎么办 头条误点了投放头条广告怎么办 交行网银密码错误6次怎么办 宁波新冮厦关门我们的消费卡怎么办 第一天上班别人教的学不会怎么办 老公出轨已经不想跟你爱爱了怎么办 妻子出轨丈夫为了孩子不离婚怎么办 妻子出轨分居死也不愿意离婚怎么办 拼多多个人卖家登录密码忘了怎么办 微信被限制添加更多订阅号了怎么办 知网复制粘贴的论文有格式怎么办 知网论文查询网站密码忘记了怎么办 开通了超级会员不能克隆好友怎么办 偷了家里好多钱去买手机了怎么办 中行信用卡短信邀请办白金卡怎么办 注册邮箱说邮箱地址已被注册怎么办 便利店开在小区里面没生意怎么办 微信支付密码忘了怎么办没银行卡 中行5月扣很多钱是怎么办 中银淘宝校园卡影响征信问题怎么办 中银E盾快到期了怎么办 京东e卡电子卡卡密泄漏怎么办 买错了京东e卡怎么办 京东购买手机激活后有问题怎么办 优购m9锁屏密码忘记了怎么办视频 中百仓储的购物卡过期了怎么办 武汉中百超市购物卡过期怎么办 已认证抵扣的发票发生退货怎么办