【MySQL自学之路】第4天——模式、表、视图、索引(数据定义详细版)

目录

前言 

数据库

数据库的建立

数据库的使用

数据库的查看

数据库的删除

模式

查看所有的模式

模式和数据库之间的关系

​编辑建立模式

删除模式

数据类型

查看一个数据库下面的所有表(必须进入要查看的数据库)

创建基本表

查看表结构(查看表建立的字段)

修改表结构(修改已经建立好的表)

视图

视图的作用

视图的保存的方式

建立一个视图

查看所有的视图

查询视图

删除视图

索引

建立索引的目的

索引的建立

索引的删除


前言 

在上一节我们介绍了MySQL数据库服务的基本操作,初步的离开的理论,安装、操作属于我们自己的数据库。从新的一节开始,我们会从创建属于我们自己的数据库开始,逐步深入,进而掌握数据库的所有基本操作。

这一节我们将会讲述MySQL数据库模式、表、视图、索引四种结构的说明以及操作方法。

注:博客内标蓝色背景的是教材原话,黄色背景的是博主自己理解的加注,绿色背景的为引用。


数据库

我们要存放数据也好,创建模式、表、视图、索引也罢,都是在创建数据库的基础上进行的,也就是说,最初的最初,我们要先建立一个数据库,再在数据库里面建立模式、表、试图、索引等。

我们在【MySQL自学之路】第2天里面就已经进行过数据库的创建、使用,不过我们当时并没有详细说明。

数据库的建立

SQL语句:

create database sqlstudy;

注:创建一个名字为sqlstudy的数据库。如果已经创建,则不会再创建,并抛出已存在错误。

数据库的使用

SQL语句:

use sqlstudy;

注:我们一次只能在一个数据库里面操作,我们想要修改哪个数据库的数据,就要先进入(使用)哪个数据库。

数据库的查看

SQL语句:

show databases;

注:查看已经创建的所有数据库。 

数据库的删除

SQL语句:

drop database sqlstudy;

模式

相比肯定会有自学MySQL的小伙伴吧,大家一般在用的时候是不是创建完数据库就直接建立表结构了?其实在建立数据库之后,还有一个层级叫做模式,只不过其可以作为数据库和表之间的一个过渡,所以好多教程或者文章并没有涉及。

注:以下内容为MySQL中使用方法,可以和其他的数据库管理系统有所出入。

查看所有的模式

SQL语句:

SELECT * FROM information_schema.schemata;

模式和数据库之间的关系

一个数据库可以建立多个模式。

在MySQL当中,建立数据库的时候默认会把其作为一个模式,并基于这个模式进行表操作。同样,建立模式的时候默认把其作为一个数据库。

例如:

(1)先建立一个数据库:temp

create database temp;

(2)查看所有的模式:

建立模式

SQL语句:

create schema hahaha;

其他数据库也可以:

 create schema 【模式名】 authorization 【用户名】;

删除模式

SQL语句:

级联删除(删除该模式以及该模式下的所有表、试图等)

drop schema <模式名> cascade;

限制删除(如果该模式下有已经创建的表、试图等,则拒绝删除) 

drop schema <模式名> restrict;

默认:

级联删除

drop schema <模式名>;

注:其实在MySQL当中,数据库和模式并没有严格的区分,可以看作是一个东西。但是在其他数据库里面会有显著的区别。


假如说我们不关注模式,一个数据库下面可以存放多张表,而表就是存储数据的地方。

数据类型

表里面之间存放数据,我们需要指定字段对应的数据类型。

常用的数据类型(参考材料《数据库系统概论》):

数据类型
数据类型含义
char(n),  character(n)

长度为n的定长字符串

varchar(n),  charactervarying(n)最大长度为n的变长字符串
clob字符串大对象
blob二进制大对象
int,integer长整数(4字节)
smallint短整数(2字节)
bigint大整数(8字节)
numeric(p,d), decimal(p,d),dec(p,d)定点数。由p位数字组成,小数点后有d位数字
float(n)可选精度浮点数,精度至少为n位数字
boolean逻辑布尔量
date日期,包含年、月、日【yyyy-mm-dd】
time时间,包含时、分、秒【hh:mm:ss】
timestamp时间戳
real取决于机器精度的单精度浮点数
double precision取决于机器精度的双精度浮点数

查看一个数据库下面的所有表(必须进入要查看的数据库)

SQL语句:

# 使用temp数据库
use temp;
# 查看数据库下面的表
show tables;

创建基本表

SQL语句:

create table <table_name>(
<列名> <数据类型> [列级完整性约束],
...
[,表级完整性约束]
);

例如:(表名:student_table, 属性:学号(主键,非空)、姓名(非空)、年龄(非空))

create table student_table(
sno char(20) not null primary key,
name char(20) not null,
age int not null
);

常见的完整性约束:

  • primary key
  • foreign key() reference ...

查看表结构(查看表建立的字段)

SQL语句:

desc <表名>;

修改表结构(修改已经建立好的表)

注:修改表结构不是修改数据,是修改列定义、约束等。

SQL语句:(包含增加、修改、删除)

# 添加一列(家庭地址)
alter table student_table 
add column home char(30);
# 修改列属性(学号由字符串改为可变字符串)
alter table student_table 
modify column sno varchar(20);
# 显示当前表的状态
desc student_table;
# 删除一列(家庭地址)
alter table student_table 
drop column home;
# 显示当前表的状态
desc student_table;


视图

视图的作用

视图可以连接一个或多个表的不同字段,并设置新的约束和关系,可以有效的保护数据,方便对关键数据的查看。

视图的保存的方式

视图在内存中其实保存的是sql语句,并没有保存数据,也就是视图里面的数据可以随着建立视图使用表的数据变化而变化。

建立一个视图

SQL语句:

# 假如说我们没有删除上面建立的地址列
create view address
as
select name, home
from student_table;

查看所有的视图

SQL语句:

show tables;

查询视图

从数据字典中取出视图的定义,把定义中的子查询和用户的查询结合起来,转换成等价的对基本表的查询,这一过程称为视图消解。

SQL语句:

select *
from address;

删除视图

SQL语句:

drop view address cascade;

注:cascade是级联删除,帮助你把该视图和由他导出的所有视图一起删除。


索引

建立索引的目的

当表的数据量比较大的时候,查询操作会比较费时。建立索引是加快查询速度的有效手段。

索引虽然能加快数据库的查询,但需要占据一定的存储空间,当基本表更新的时候,索引要进行维护,这些都会增加数据库的负担,因此要根据实际应用的需要有选择的建立索引。

索引的建立

SQL语句:

create [unique] index <index_name>
on
<表名>(<列名> <次序>, <列名> <次序>);

# unique:索引的每一个索引值只对应唯一的数据记录
# 次序:desc 降序;asc 升序(默认)。

索引的删除

SQL语句:

drop index <index_name>;

修改索引(只能重命名)

SQL语句:

alter index <old_index_name> rename to <new_index_name>;

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

活成自己的样子啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值