一、数据库简介
1.1 什么是数据库
1.2 数据库的发展历程
1.3 数据库的作用
1.4 有关数据库的基本概念
二、SQL的基础语句
2.1 SQL语句的概述和分类
2.2 SQL常用数据类型
2.3 模式的创建和删除
2.4 基本表的创建、修改和删除
2.5 数据记录的添加、修改和删除
2.6 数据查询的语法
三、总结
一、数据库简介
1.1 什么是数据库
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。
数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
在信息化社会,充分有效地管理和利用各类信息资源,是进行科学研究和决策管理的前提条件。数据库技术是管理信息系统、办公自动化系统、决策支持系统等各类信息系统的核心部分,是进行科学研究和决策管理的重要技术手段。常见的数据库管理系统包括MySQL、Oracle、Microsoft SQL Server、PostgreSQL等。
1.2 数据库的发展历程
-
文件系统:在计算机发展初期,数据存储通常采用文件系统的方式,即将数据存储在一个个磁盘文件中。这种方式的缺点是数据分散、共享性差、存取效率低下、容易出现数据冗余和不一致,数据独立性也较差。
-
层次数据库管理系统(Hierarchical DBMS):在20世纪60年代,IBM公司推出了层次数据库管理系统。它是以树形结构存储数据的,每个节点表示一个实体,子节点表示该实体的属性。这种方式解决了数据的存储问题,但是不够灵活,难以进行复杂的查询。
-
网状数据库管理系统(Network DBMS):在20世纪70年代,由于层次数据库管理系统的不足,网状数据库管理系统应运而生。它采用了图形结构存储数据,可以灵活地表示实体之间的关系。但是,它的查询语言比较复杂,难以使用。
-
关系数据库管理系统(Relational DBMS):在20世纪70年代末和80年代初,关系数据库管理系统逐渐成为主流。它采用了表格结构存储数据,每个表格对应一个实体,每个属性对应一列。关系数据库管理系统具有结构简单、易于操作、查询灵活等优点,成为了最广泛使用的数据库管理系统。下文介绍SQL语句时使用的MySQL就是关系数据库。
-
对象数据库管理系统(Object-Oriented DBMS):在20世纪80年代和90年代初,随着面向对象编程的发展,对象数据库管理系统应运而生。它采用了面向对象的方式存储数据,可以更好地表示实体之间的关系。但是,它的使用范围比较有限,目前还没有成为主流。
-
NoSQL数据库管理系统:随着互联网应用的发展,数据量逐渐增大,传统的关系数据库管理系统面临着存储和查询效率的瓶颈。为了解决这个问题,NoSQL数据库管理系统应运而生。它采用了非关系型的方式存储数据,可以更好地应对大数据、高并发等场景。目前,NoSQL数据库管理系统正在逐渐成为主流。
1.3 数据库的作用
1、实现数据共享:数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
2、减少数据的冗余度:同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。
3、保持数据的独立性:数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。
4、数据实现集中控制:文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
5、数据一致性和可维护性,以确保数据的安全性和可靠性:主要包括:安全性控制、完整性控制、并发控制,使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。
6、故障恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
1.4有关数据库的基本概念
字段:又可称作为列,是指某一个事物的一个特征,或者说是属性。
记录:又可以称作为元组,是指事物特征的组合,可以描述一个具体的事物,在数据库中表的一行就是一条记录。
表:多条记录就组成了一张表,表示同一类事物的组合。
主键:能唯一标识实体的属性。
二、SQL基础语句(以下例子均为数据库实验中写过的代码或课本中的例子)
2.1 SQL语句的概述和分类
1.SQL概述:
SQL,结构化查询语言的简称,它是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。其功能不仅仅是查询,而是包括数据库模式创建、数据库数据的插入与修改、数据库安全性完整性定义与控制等一系列功能。
2.分类:
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)
2.2SQL常用数据类型
续表:
2.3 模式的创建、修改和删除
1.模式的定义:
语句:CREATE SCHEMA <模式名> AUTHORIZATION <用户名>[<表定义子句>|<视图定义子句>|<授权定义子句>];(中括号后面的内容可写可不写)
例子:为用户WANG定义一个学生-课程模式S-T
CREATE SCHEMA "S-T" AUTHORIZATION WANG;
2.模式的删除
语句:DROP SCHEMA<模式名><CASCADE|RESTRICT>;
其中CASCADE和RESTICT两者必选其一。选择了CASCADE,表示在删除模式的同时把该模式所有的数据库对象全部删除;选择了RESTRICT,表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该语删除语句的执行。
2.4基本表的创建、修改和删除
1.表的创建:
语句:CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束条件],<列名><数据类型>[列级完整性约束条件],...<列名><数据类型>[列级完整性约束条件]);
例子:建立一个学生表
2.表的删除:
语句:DROP TABLE<表名>[RESTRICT|CASCADE];
这里的RESTRICT,在欲删除的基本表不能被其他表引用,不能有视图,不能有触发器,不能用存储过程或函数等时才能执行删除语句。
3.表的修改:
语句:ALTER TABLR<表名>
[ADD[CLUMN]<新列名><数据类型>[完整性约束]]
[ADD<表级完整性约束>]
[DROP[COLUMN]<列名>[CASCADE|RESTRICT]]
[DROP CONSTRAINT <完整性约束名>[RESTRICT|CASCADE]]
[ALTER COLUMN <列名><数据类型>];
ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件。
ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型。
DROP COLUMN子句用于删除表中的列。
例子:
2.5 数据记录的添加、修改和删除
1.数据记录的添加(插入):
语句:INSERT
INTO<表名>[(<属性列1>),(<属性列2>),...,(<属性列n>)]
VALUES(<常量1>,<常量2>,...,<常量n>);
例子:
2.数据记录的修改
语句:UPDATE<表名>
SET <列名>=<表达式>,...,<列名>=<表达式>
[WHERE<条件>];
例子:
UPDATE STUDENT
SET SAGE=22
WHERE SNO = '20190107';
3.数据记录的删除
语句:DELETE FROM <表名>[WHERE<条件>];
2.6 数据查询的语法
1.查询表中全部:
SELECT * FROM <表名>;
2.查询表中的若干列:
例子:SELECT SNO,SNAME FROM STUDENT;
3.查询满足条件的元组:
用WHERE子句实现,
例子:SELECT SNAME FROM STUDENT WHERE SAGE = '19';
常用的查询条件如下:
注:a.在查询的时候,我们有时需要查询出来的结果不重复,这时可以使用短语DISTINCT,以达到去重效果。
b.BETWEEN AND确定的范围是不包括两边的
c.IN后面的集合可以是直接('男','女'),也可以是一个子查询的结果
d.LIKE 用来字符匹配时,匹配串可以是一个完整的字符串,也可以是包含通配符%和_:
%代表任意长度的字符串;_代表任意单个字符。
4.分组查询:
分组查询依靠 GROUP BY子句,将查询结果按某一列或多列的值分组,值相等的为一组。
例子:
SELECT CNO,COUNT(SNO) FROM SC GROUP BY CNO;
需要注意的是,分组查询如果要根据某个条件查询的话,用的是HAVING短语而不是WHERE子句,两者的作用对象不同,HAVING短语作用于组,WHERE子句作用于基本表或视图,从中选择满足条件的元组。
分组查询通常还会和聚集函数一起使用,常用的聚集函数有:
5.嵌套查询:
在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询快的WHERE子句或HAVING短语的条件中的查询成为嵌套查询。
例子:
SELECT SNAME FROM STUDENT
WHERE SNO IN (SELECT SNO FROM SC WHERE CNO='2');
6排序语句:
用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排序,默认值为升序。
例子:
SELECT *
FROM STUDENT
WHERE CNO='3' ORDER BY SDEPT,SAGE DESC;
三、总结
数据库作为后端必不可少的一部分,它所包含的知识当然不止这么多啦,本文只是写了一些比较基础的知识和语法,还有链接查询、数据控制(GRANT、REVOKE)等知识并未涉及,还需要读者自己去进一步的学习和实践,可以参考菜鸟教程里的知识点,链接如下:https://www.runoob.com/sql/sql-datatypes-general.html
(本文为后端训练营结课作业,总结了后端训练营中教授的数据库相关知识,通过这些知识的学习,让我从一个小白,对数据库有了比较多的了解,也理解了数据库在后端开发中的重要意义,收获良多!)