数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_SQL语言介绍&数据库的定义和删除

发布于:2025-08-18 ⋅ 阅读:(11) ⋅ 点赞:(0)

前言

        "<数据库原理及应用>(MySQL版)".以下称为"本书"中2.1节和2.2节第一部分内容

引入

        本书P40:SQL(Structure Query Language结构化查询语言)是一种在关系数据库中定义和操纵数据的标准语言,是用户和数据库之间进行交流的接口.

        ---SQL是一种语言,是一种工具,值得欣慰的是如何实现它不用写应用的程序员去关心,会用即可

MySQL8.0安装的两个细节

        要操作SQL语言,先安装一个MySQL.某度搜索"MySQL8.0安装",根据其步骤实操有两个地方要注意:

      1.在最后finish阶段,"Starting the server 失败"

        解决方法:

        ---不要关闭错误页面:出现红色感叹号时,保持安装界面打开,不要点击取消或关闭按钮。
        ---打开服务管理界面:
                右键点击“计算机”(或“此电脑”),选择“管理”。
                在左侧导航栏中依次展开“服务和应用程序”→“服务”,找到名称为“MySQL80”(不同版本可能略有差异,通常以MySQL开头)的服务。

        ---配置MySQL服务属性: 

                右键点击“MySQL80”服务,选择“属性”。

                在弹出的窗口中切换到“登录”选项卡。

                勾选“允许服务与桌面交互”,点击“应用”保存设置

        重新执行安装:返回MySQL安装界面,点击“Execute”按钮重新尝试安装,此时“Starting the server”步骤大概率会成功

注:内容为转载,原帖MySQL安装时Starting the server 失败的问题_mysql8.0安装后starting the server不成功-CSDN博客

        2.首次登陆mysql的问题

        按照常规方法在控制台输入:mysql -u root -p,老是显示错误登陆不成功.原因是此时未设置密码---登陆密码和安装mysql输入的密码不一样.第一次登陆方法:mysql -u root,回车即可登陆.进入sql后可以修改登陆密码

2.1 SQL语言介绍

        SQL是一种国际标准

2.1.1SQL数据库的体系结构

图2-1 SQL数据库的体系结构图1-4的具体表达,在"模式"中添加了索引,内模式有了具体表示.

使用SQL的关系数据库的特点,主要有两点:

1.SQL用户可以是应用程序,也可以是终端用户.它可以独立使用,也可以被嵌入宿主语言如C++,Java等.

2.视图是一个虚表.

        ---前面提到过"视图"是一个搜索请求,它的结果是一张表.

其余内容了解即可

2.1.2 SQL的特点,是一些文字描述

2.1.3 SQL语言的组成

        数据定义语言DDL,数据操纵语言DML和数据控制语言DCL

2.2 数据定义

        对数据的概念回顾:前面提到过在数据库中,把"表"看作是数据库的基本数据.而在"表"定义时,"属性"是表的基本单位.综合来说,数据库的基本单位是"属性",利于后面的"数据类型"的理解.

2.2.1数据库的定义和删除

数据库的数据结构分析

        本书P42原话:数据库是存放数据的容器,在设计一个应用系统时必须先设计数据库.在MySQL中一个数据库服务器可以包含多个数据库,每个数据库存放在以数据库名字命名的文件夹中,用来存放该数据库中的各种表数据文件.

        ---这段话有一定信息量,数据库服务器→数据库→表数据文件,简单表示如下图:

        笔者写这个的目的是尝试站在高级语言描述:数据库的数据结构.以加深对数据库的理解

/*以下为伪代码*/
//数据库服务器类型定义
struct DataServer{
    vector<DataBase> dbs;
}

//数据库类型定义
struct DataBase{
    vector<Table> tbs;
    Folder fdr;                //文件夹对象
}

//表类型定义
struct Table{
    vector<Attribute> abs;     //属性的动态数组
}

        说明如下:

        1.根据"每个数据库都存放在以数据库名字命名的文件夹中(本书原话)",定义一个Folder类型表示数据库对象包含一个Folder对象(但没有去实现它).实现的效果可以类比Windows文件夹的效果---再深入一点,文件夹实际上是一个矩阵图形类对象(笔者之前分析过),从效果上来说,相当于未实现的前端.

        注意:每个表是单独的数据文件,在使用mysql的一些IDE中,常常能看见"名称.表名"格式的数据.例如"1.stu"---表示写了一个stu类型的表,并命名为1的数据文件.如果按照该格式建立若干表,则表示有若干个数据文件.表和数据文件是一一对应关系.这点很方便操作,数据物理独立性的表现.

        2.属性类型Attribute是一个"数据类型的类型",Java中有反射机制似乎能表达它,但C++没有(笔者也不知道底层是怎么实现,所以是伪代码).在<深入理解计算机系统>这本书中有提到,简单想一想:底层有专门的区域来表示数据类型,用指针指向该区域(表示第一个类型),并计算每个类型占用空间,然后指针偏移所占空间的大小,指向下一个类型(第二个类型)---底层都是二进制数,支持指针

        回到前面的问题:数据库的数据结构是什么?类似于高度为3的一棵树.为什么高度是3,设计成4可不可以?对应着图2-1把"表空间"单独列为1层.(这段属于笔者个人看法,有待商榷)

=============================内容分割线↓===================================

        目前为止,和树相关的几种数据结构:1文件树(Linux),2对象树(Qt),3身份证和4数据库的树.

        这些数据结构有一些区别:3和4并不算"树".只是他们的样子长得像树.其中身份证的数据结构归于散列表,要先设计散列算法,根据算法设定了层高.

        1,2是真正意义的"树",他们支持递归(递进).树还有二叉树,哈夫曼树等数据结构.

        3,4可称为"类树"(类似于树的数据结构).3,4的数据结构有细微差别,笔者以后做个专题分析.

=============================内容分割线↑===================================

数据库的三个指令

        本书P43:

        建立数据库        CREATE DATABASE 数据库名

        选择数据库         USE 数据库名

        删除数据库          DROP DATABASE 数据库名

小结

        数据库数据结构的分析,数据库定义和删除的指令.


网站公告

今日签到

点亮在社区的每一天
去签到