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

news2024/11/29 12:44:21

目录

前言 

数据库

数据库的建立

数据库的使用

数据库的查看

数据库的删除

模式

查看所有的模式

模式和数据库之间的关系

​编辑建立模式

删除模式

数据类型

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

创建基本表

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

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

视图

视图的作用

视图的保存的方式

建立一个视图

查看所有的视图

查询视图

删除视图

索引

建立索引的目的

索引的建立

索引的删除


前言 

在上一节我们介绍了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>;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EU GMP附录一与关键区域空气微生物取样方案及相关法规标准解读

2022版EU GMP附录一与关键区域空气微生物取样方案疑问解答 3月30日2022版EU GMP附录一与关键区域空气微生物取样方案网络研讨会期间&#xff0c;我们收集到了部分参会听众针对该主题所提出的常见问题。根据以下这些问题&#xff0c;lighthouse微生物应用专家将来为您答疑解惑。…

多功能自动化智能运维平台,提升集群的全自动运维效率

一、开源项目简介 致力于打造一个集主机管理、配置部署、监控报警、异常诊断、安全审计等一系列功能的自动化运维平台。 探索创新的sysAK、ossre诊断工具及高效的LCC&#xff08;Libbpf Compiler Collection&#xff09;开发编译平台和netinfo网络抖动问题监控系统等&#xff…

放射学中的自然语言处理技术综述

放射学中的自然语言处理技术综述 写在最前面预览CLINICAL APPLICATIONS Automatic Protocoling 临床应用程序自动协议Extraction of Language Features, Patient Cohorting, and Coded Ontology from Charts 从图表中提取语言特征、患者队列和编码本体Medical Imaging Appropri…

vulnhub靶场之bluemoon

1.信息收集 存活主机进行探测&#xff0c;发现主机192.168.239.176存活。 对主机192.168.239.176进行端口扫描&#xff0c;发现21、22、80端口 访问http://192.168.239.176&#xff0c;并查看源码未发现可利用的行为。 进行目录扫描发现可疑路径/hidden_text 浏览器访问h…

Python的经典结构算法

学会了 Python 基础知识&#xff0c;想进阶一下&#xff0c;那就来点算法吧&#xff01;毕竟编程语言只是工具&#xff0c;结构算法才是灵魂。 那新手如何入门 Python 算法呢&#xff1f; 几位印度小哥在 GitHub 上建了一个各种 Python 算法的新手入门大全。从原理到代码&…

SQL server 数据库同步(发布与订阅)【解决办法】

SQL server 数据库同步&#xff08;发布与订阅&#xff09;【解决办法】 一、本地防火墙放通二、创建共享文件夹2.1 在发布服务器上创建共享文件夹&#xff0c;该文件夹用于提供数据库信息同步的媒介2.2 设置共享权限&#xff0c;添加所有人&#xff0c;权限为读取 三、发布服务…

NetMQ | 发布订阅时使用含通配符的Topic

NetMQ | 发布订阅时使用含通配符的Topic 文章目录 NetMQ | 发布订阅时使用含通配符的Topic前言通配符如何使用通配符通配符的作用结束语 前言 今天我来介绍一下NetMQ发布订阅时如何使用含通配符的Topic&#xff0c;让我们能够更加灵活地订阅消息。 什么是Topic? 在NetMQ中&am…

这一次,让Kotlin Flow 操作符真正好用起来

前言 Kotlin Flow 如此受欢迎大部分归功于其丰富、简洁的操作符&#xff0c;巧妙使用Flow操作符可以大大简化我们的程序结构&#xff0c;提升可读性与可维护性。 然而&#xff0c;虽然好用&#xff0c;但有些操作符不太好理解&#xff0c;可惜的是网上大部分文章只是简单介绍其…

1970-01-01是什么?为什么计算机起始时间是1970年1月1日

我们是不是也曾见到过或者听说过1970-01-01,而且它好像常常存在于计算机行业&#xff0c;非常常见&#xff0c;从事IT行业的兄弟应该都接触过&#xff0c;那么到底为什么是1970-01-01&#xff0c;而不是其他呢&#xff1f; 其实&#xff0c;1970-01-01对于开发者来说都是不陌生…

带你了解现在的LED显示屏技术

随着LED显示屏技术的空前繁荣&#xff0c;LED显示屏产品备受关注&#xff0c;广泛应用于商业广告、实况播映、交通诱导、舞台演绎等领域&#xff0c;发展至今。你了解十大中国LED显示屏制造商吗&#xff1f; LED显示屏技术已经得到了长足的发展&#xff0c;现在的LED显示屏技术…

智融合·共未来丨智合同携手百融云创打造合同智能化应用服务平台

人工智能技术是当今社会的热议话题之一。近年来&#xff0c;众多企业在人工智能领域持续布局&#xff0c;相关技术已在社会生产各环节极大地提高了生产效率。如果把过去信息技术产业的发展比喻为“手工时代”&#xff0c;那么人工智能技术的出现则将把信息技术产业推向“自动化…

数据库迁移 | DBMotion v23.04 支持异地多活

Squids DBMotion新版本支持异地多中心双活同步了。异地多活支持业务在多个数据中心同时操作数据库&#xff0c;能极大地提升高可用性、容错性和用户体验。其中最关键的技术&#xff0c;无疑是数据同步、同步防环和数据冲突解决。Squids DBMotion通过复制数据打标和预置冲突策略…

生产凭证补传操作步骤

凭证包文件包含&#xff1a;身份证正面、身份证背面、拍照图片、身份证头像图片、联网核查文件、签名文件、签名轨迹文本、凭证json文件。 一、证件信息重复或者模糊。 1.提供业务流水号、证件信息。 2.将证件信息通过安全U盘导入生产机。 3.根据业务流水号前8位设备号及业务流…

电信及互联网行业数据安全内控审计建设实践 | 盾见

文|龚磊 伴随数据安全“五法一典”出齐&#xff0c;2021年成为我国数据安全元年。各地、各行业不断加快数据安全政策体系的完善与落地执行。政企机构不断强化数据安全建设&#xff0c;共同助力网络安全行业高景气度维系。 2021年6月&#xff0c;网络安全等保测评报告模板新版发…

计算机网络学习02

1、TCP 与 UDP 的区别&#xff1f; 是否面向连接 &#xff1a; UDP 在传送数据之前不需要先建立连接。而 TCP 提供面向连接的服务&#xff0c;在传送数据之前必须先建立连接&#xff0c;数据传送结束后要释放连接。是否是可靠传输&#xff1a; 远地主机在收到 UDP 报文后&…

《2023中国企业数智化转型升级服务全景图/产业图谱1.0版》重磅发布

‍ 数据猿出品 本次“数据猿2023年度三大媒体策划活动——《2023企业数智化转型升级服务全景图/产业图谱1.0版》”的发布&#xff0c;是数据猿在2022年3.0版本的基础上&#xff0c;迭代升级的2023开年的第一个版本。本年度下一次版本迭代将于2023年8月底发布2023年2.0版&#x…

Java学习18(Java内存区域详解)

对于 Java 程序员来说&#xff0c;在虚拟机自动内存管理机制下&#xff0c;不再需要像 C/C程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作&#xff0c;不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机&#xff0c;一…

前端web3入门脚本二:初探dex,在dex完成一笔swap

前言 现在市面上大多数去中心化交易所&#xff08;简称dex&#xff09;都是fork的uniswap的代码&#xff0c;名气比较大的如eth上的sushi 以及 bsc上的pancake。博主这里说的都是V2&#xff0c;uniswapV3在这里不做讨论。那么知道了他们的代码都是来自同一父亲之后&#xff0c;…

Python每日一练(20230428)

目录 1. 最长有效括号 &#x1f31f;&#x1f31f;&#x1f31f; 2. 矩阵中的最长递增路径 &#x1f31f;&#x1f31f;&#x1f31f; 3. 回文链表 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练…

考研操作系统2.3节 同步与互斥(这节有必要多复习)

2.2 实现缓冲区互斥的基本方法 软件实现方法 硬件实现方法 2.3.3 互斥锁 下面用互斥锁解决经典同步问题 2.3.4 信号量 经典同步问题&#xff08;做大题再看&#xff09; 2.3节选择题 皮特森算法&#xff1a;flag实现互斥&#xff0c;turn避免饥饿&#xff0c;选D x1 2 2 1 …