【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>;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/15248.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Arduino学习笔记5

一.直流电机控制实验 1.源代码 int dianJiPin9;//定义数字9接口接电机驱动IN1的控制口void setup() {pinMode(dianJiPin,OUTPUT);//定义电机驱动IN1的控制口为输出接口 } void loop() {digitalWrite(dianJiPin,LOW);//关闭电机delay(1000);//延时digitalWrite(dianJiPin,HIGH…

【Vue 基础】vue-cli初始化项目及相关说明

目录 1. 创建项目 2. 项目文件介绍 3. 项目的其它配置 3.1 项目运行时&#xff0c;让浏览器自动打开 3.2 关闭eslint校验功能 3.3 src文件夹简写方法 1. 创建项目 vue create 项目名 2. 项目文件介绍 创建好的项目中包含如下文件&#xff1a; &#xff08;1&#xff09…

工具链和其他-超级好用的web调试工具whistle

目录 whistle介绍 整体结构 能力 规则 6个使用场景示例 1.修改Host 2.代理 3.替换文件&#xff08;线上报错时&#xff09; 4.替换UA 5.远程调试 6.JS注入 互动 whistle介绍 整体结构 安装&#xff1a; npm install whistle -g cli&#xff1a;whistle help 启动…

算法之时间复杂度---数据结构

目录 前言&#xff1a; 1.时间复杂度 1.1时间复杂度的理解 1.2规模与基本操作执行次数 1.3大O渐进表示法 1.4计算基本操作的次数 2.常见的时间复杂度及其优劣比较 ❤博主CSDN&#xff1a;啊苏要学习 ▶专栏分类&#xff1a;数据结构◀ 学习数据结构是一件有趣的事情&…

什么是Web1.0时代、Web2.0时代、Web3.0时代?

什么是Web1.0时代、Web2.0时代、Web3.0时代&#xff1f; 互联网的起源。1969年美国的阿帕网的出现标志着互联网的诞生&#xff0c;而1973年第一台个人电脑The Xerox Alto的出现就预示了互联网将蓬勃生长&#xff0c;随之而来的就是我们迈入了信息时代。短短几十年的发展&#x…

浏览器缓存策略:强缓存和协商缓存

浏览器缓存&#xff1a;其实就是在本地使用的计算机中开辟一个内存区&#xff0c;同时也开辟一个硬盘区&#xff0c;作为数据传输的缓冲区&#xff0c;然后利用这个缓冲区来暂时保护用户以前访问的信息通常浏览器的缓存策略分为两种&#xff1a;强缓存和协商缓存&#xff0c;强…

零基础学java——【基础语法】基本输入、输出语句,变量,运算符

目录 变量 数据类型 基本数据类型一览表 声明和初始化 基本的输出、输出语句 输出语句 补充“”的使用 输入语句Scanner 使用步骤 代码演示 运算符 有些内容可能会与c语言作比较 内容借鉴了韩顺平老师的java课堂笔记&#xff08;b站课&#xff09; 变量 数据类型 基本…

CKA证书题库-总结

CKA真题&#xff08;考题总结&#xff09; 文章目录 CKA真题&#xff08;考题总结&#xff09;证书个人考试总结申诉结果 CKA题目参考博主重点介绍 CKA模拟题库 注意事项考试概要考试注意事项&#xff1a; CKA题目答案设置自动补全方法一方法二 第⼀题&#xff1a;权限控制RBAC…

【4. ROS的主要通讯方式:Topic话题与Message消息】

【4. ROS的主要通讯方式&#xff1a;Topic话题与Message消息】 1. 前言1.1 王者解释结点通讯&#xff1a;1.2 通讯小结 2. 灵活的Topic话题图解2.1 话题注意细节2.2 外延补充 3. Message消息图解3.1 消息类型3.2 查看标准消息类型std_msgs 4. 使用C实现Publisher发布者4.1 发布…

Sametime 12.0.1 FP1发布以及Notes中的SwiftFile使用

大家好&#xff0c;才是真的好。 上周&#xff0c;HCL推出了Sametime 12.0.1FP1FP1更新包程序&#xff0c;包含不少新功能以及很多修复程序。虽然Sametime组件现在不需要运行在Domino服务器上&#xff0c;但毕竟Sametime通常会使用Domino目录或Domino中的LDAP目录服务&#xf…

Maven 如何下载依赖包的源码包

使用Maven下载依赖包的时候&#xff0c; 默认是不会下载源码包的&#xff0c;但是有时候&#xff0c; 需要Debug代码&#xff0c;或是看看依赖项的源码的写法&#xff0c; 就需要下载源码包了。 这里以 Apache 的 commons-text 为例&#xff0c; 在Maven中添加如下依赖配置&am…

HCIA-RS实验-ENSP设备的基础配置

本文主要简单地介绍ENSP设备的基础配置&#xff0c;帮助读者快速上手使用ENSP。可以掌握一些基础的配置方案&#xff0c;更改名称&#xff0c;系统时间&#xff0c;系统地区、密码登录等信息 以下是该文章的拓扑图&#xff1b;现将这2台设备启动&#xff1b;后续双击即可进入命…

Openswan安装和简单配置

Openswan安装和简单配置 安装环境&#xff1a; 操作系统&#xff1a;Ubuntu20.0.4TLS 用户权限&#xff1a;root下载Openswan: wget https://github.com/xelerance/Openswan/archive/refs/tags/v3.0.0.zip安装Openswan: 解压Openswan&#xff1a;&#xff08;PS&#xff1a…

Arduino学习笔记4

一.声控灯实验 1.源代码 int led2;//定义板子上数字2口控制小灯 int flag0;//定义一个变量记录小灯是亮起还是熄灭 int shengyin3;//定义声音传感器的控制口void setup() {pinMode(led,OUTPUT);//定义小灯为输出模式pinMode(shengyin,INPUT);//定义声音控制口为输入模式 } vo…

基于天牛须(BAS)与NSGA-Ⅱ混合算法的交直流混合微电网多场景多目标优化调度(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

SentiBank Dector上手指南

​ 官网链接&#xff1a;https://www.ee.columbia.edu/ln/dvmm/vso/download/sentibank.html SentiBank Detector可以抽取图片中的形容词-名词对&#xff0c;之前一直看到&#xff0c;这次复现模型才第一次用到&#xff0c;上手的时候有点手足无措&#xff0c;因为官网在如何使…

Python入门教程+项目实战-11.4节: 元组与列表的区别

目录 11.4.1 元组与列表的区别 11.4.2 可变数据类型 11.4.3 元组与列表的区别 11.4.4 知识要点 11.4.5 系统学习python 11.4.1 不可变数据类型 不可变数据类型是指不可以对该数据类型进行修改&#xff0c;即只读的数据类型。迄今为止学过的不可变数据类型有字符串&#x…

我做了个GPT3键盘,用了两个月发现它有点傻

自 ChatGPT 出世&#xff0c;各类文本类AI产品层出不穷。甚至接连几日&#xff0c;Producthunt 上新品过半都是AI相关。 这其中部分原因是 OpenAI 公司开放的 GPT3 1API 接口十分易用。只要一个简单的文本请求&#xff0c;就能将现有产品加入AI功能。例如&#xff0c;Notion、…

提取文本的摘要snownlp模块

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 提取文本的摘要 snownlp模块 [太阳]选择题 关于以下python代码说法错误的一项是&#xff1f; from snownlp import SnowNLP myText """ChatGPT的出现标志着人类科技发…

【flask】三种路由和各自的比较配置文件所有的字母必须大写if __name__的作用核心对象循环引用的几种解决方式--难Flask的经典错误上下文管理器

三种路由 方法1&#xff1a;装饰器 python C#, java 都可以用这种方式 from flask import Flask app Flask(__name__)app.route(/hello) def hello():return Hello world!app.run(debugTrue)方法2: 注册路由 php python from flask import Flask app Flask(__name__)//app…