数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅰ)

1.SQL概述

SQL(Structured Query Language)结构化查询语言,是关系数据库的标准语言

SQL是一个通用的、功能极强的关系数据库语言

SQL的动词

基本概念

基本表 :本身独立存在的表; SQL中一个关系就对应一个基本表; 一个(或多个)基本表对应一个存储文件 ;一个表可以带若干索引。

存储文件 :逻辑结构组成了关系数据库的内模式; 物理结构是任意的,对用户透明。

视图: 从一个或几个基本表导出的表; 数据库中只存放视图的定义而不存放视图对应的数据 ;视图是一个虚表; 用户可以在视图上再定义视图。

2.数据定义

关系数据库系统支持三级模式结构,其模式、外模式、和内模式 中的基本对象有表、视图、和索引。因此SQL的数据定义功能包括: 模式定义、表定义、视图和索引的定义

模式:现代关系数据库管理系统提供了一个层次化的数据库对象命名机制

一个关系数据库管理系统的实例(Instance)中可以建立多个数据库, 一个数据库中可以建立多个模式, 一个模式下通常包括多个表、视图和索引等数据库对象。

master为数据库,新建的数据库会在该数据库的目录之下。

1.模式定义

定义模式实际上定义了一个命名空间 。

在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。

创建新数据库

CREATE DATABASE 数据库名 /*该系统不区分大小写*/
go   /*开始运行*/

进入数据库

USE 数据库名
GO

将会从mater位置,转移到刚刚所建立数据库的位置。以下所有操作都在新建数据库下进行。

2.基本表的基本操作

以下以此表作为实例建立数据库

1.定义基本表

		CREATE TABLE <表名>(<列名> <数据类型>[ <列级完整性约束条件> ][,<列名> <数据类型>[ <列级完整性约束条件>] ] …[,<表级完整性约束条件> ] );

<表名>:所要定义的基本表的名字

<列名>:组成该表的各个属性(列)

<列级完整性约束条件>:涉及相应属性列的完整性约束条件

<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

CREATE TABLE Student          (Sno   CHAR(8) PRIMARY KEY,       /*Sno为主码*/                                               Sname VARCHAR(20) UNIQUE,       /*Sname取唯一值*/ Ssex    CHAR(6),Sbirthdate Date,Smajor  VARCHAR(40)); CREATE TABLE  Course(Cno       CHAR(5) PRIMARY KEY,Cname  VARCHAR(40) NOT NULL,      /*Cname不为空*/      Ccredit  SMALLINT,Cpno     CHAR(5),FOREIGN KEY (Cpno) REFERENCES  Course(Cno)  /*Cpno是外码,被参照表是Course,被参照列是Cno*/); CREATE TABLE SC(Sno CHAR(8),Cno CHAR(5),Grade SMALLINT,            Semester CHAR(5),          Teachingclass CHAR(8),     PRIMARY KEY (Sno,Cno),    	/* 主码由两个属性构成,必须作为表级完整性进行定义*/FOREIGN KEY (Sno) REFERENCES Student(Sno),/* 表级完整性约束条件,Sno是外码,被参照表是Student */FOREIGN KEY (Cno) REFERENCES Course(Cno)/* 表级完整性约束条件, Cno是外码,被参照表是Course*/
);

SQL中域的概念用数据类型来实现

定义表的属性时, 需要指明其数据类型及长度 ,选用哪种数据类型 ,取值范围 ,要做哪些运算。

字符数据类型

精确数值数据类型

近似数数据类型

二进制数据类型

日期和时间数据类型

2.数据录入

INSERT INTO Student
values 
('20180001','李勇','男','2004-3-8','信息安全'),
('20180002','刘晨','女','2003-9-1','计算机科学与技术'), 
('20180003','王敏','女','2005-8-1','计算机科学与技术'),
('20180004','张立','男','2004-1-8','计算机科学与技术'),
('20180005','陈新奇','男','2005-11-1','信息管理与信息系统'),
('20180006','赵明','男','2004-6-12','数据科学与大数据技术'),
('20180007','王佳佳','女','2002-12-7','数据科学与大数据技术'),
('20180008','刘莎莎','女','2003-10-5','信息安全')INSERT INTO Course
values 
('81001','程序设计基础与C语言',4,NULL),
('81002','数据结构',4,'81001'),
('81003','数据库系统概论',4,'81002'),
('81004','信息系统概论',4,'81003'),
('81005','操作系统',4,'81001'),
('81006','Python语言',3,'81002'),
('81007','离散数学',4,NULL),
('81008','大数据技术概论',4,'81003'),
('81009','DB_Design',2,'81003')INSERT INTO SC
values 
('20180001','81001',85,'20192','81001-01'),
('20180001','81002',96,'20201','81002-01'),
('20180001','81003',87,'20202','81003-01'),
('20180002','81001',80,'20192','81001-02'),
('20180002','81002',98,'20201','81002-01'),
('20180002','81003',71,'20202','81003-02'),
('20180003','81001',81,'20192','81001-01'),
('20180003','81002',76,'20201','81002-02'),
('20180004','81001',56,'20192','81001-02'),
('20180004','81002',97,'20201','81002-02'),
('20180005','81003',68,'20202','81003-01'),
('20180006','81001',null,'20192','81001-02')

3.修改基本表

ALTER TABLE <表名>
[ ADD  <新列名> <数据类型> [ 完整性约束 ] ]
[ ADD <表级完整性约束>]
[ DROP  COLUMN <列名>]
[ DROP CONSTRAINT<完整性约束名>
[ALTER COLUMN <列名><数据类型> ] ;

<表名>是要修改的基本表

ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件

DROP COLUMN子句用于删除表中的列

DROP CONSTRAINT子句用于删除指定的完整性约束条件

ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型

不管基本表中原来是否已有数据,新增加的列一律为空值

4.删除基本表

DROP TABLE <表名>

若表上建有视图,表不能删除

5.索引的建立与删除

建立索引的目的:加快查询速度

关系数据库管理系统中常见索引: 顺序文件上的索引; B+树索引; 散列(hash)索引; 位图索引

特点: B+树索引具有动态平衡的优点; HASH索引具有查找速度快的特点

谁可以建立索引 :数据库管理员 或 表的属主(即建立表的人)

谁维护索引 :关系数据库管理系统自动完成

使用索引 :关系数据库管理系统自动选择合适的索引作为存取路径,用户不必也不能显式地选择索引

建立索引:

CREATE [UNIQUE] [CLUSTERED] INDEX <索引名> 
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);

<表名>:要建索引的基本表的名字

索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔

<次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC

UNIQUE:此索引的每一个索引值只对应唯一的数据记录

CLUSTERED:表示要建立的索引是聚簇索引

CREATE CLUSTERED INDEX Stusname            
ON   Student(Sname);

 在Student表的Sname(姓名)列上建立一个聚簇索引

在最经常查询的列上建立聚簇索引以提高查询效率

一个基本表上最多只能建立一个聚簇索引 ,经常更新的列不宜建立聚簇索引。

CREATE UNIQUE INDEX  Stusno ON Student(Sno);
CREATE UNIQUE INDEX  Coucno ON Course(Cno);
CREATE UNIQUE INDEX  SCno ON SC(Sno ASC,Cno DESC);

 Student表按学号升序建唯一索引      

Course表按课程号升序建唯一索引      

SC表按学号升序和课程号降序建唯一索引

删除索引

DROP INDEX <索引名> ON <表名>;

删除索引时,系统会从数据字典中删去有关该索引的描述。

DROP INDEX Stusname on student;

删除Student表的Stusname索引

6.数据字典

数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有定义信息: 关系模式定义; 视图定义 ;索引定义 ;完整性约束定义 ;各类用户对数据库的操作权限 ;统计信息等。

关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息。

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

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

相关文章

SecureCRT:高效安全的远程连接工具

SecureCRT是一款功能强大的终端仿真工具&#xff0c;主要用于连接和运行包括Windows、UNIX和VMS在内的远程系统。它支持多种协议&#xff0c;如SSH1、SSH2、Telnet、SFTP、Rlogin、Serial、SCP等&#xff0c;确保用户与目标设备之间的通信安全&#xff0c;并防止网络攻击和窥探…

HTTP系列之HTTP缓存 —— 强缓存和协商缓存

文章目录 HTTP缓存强缓存协商缓存状态码区别缓存优先级如何设置强缓存和协商缓存使用场景 HTTP缓存 HTTP缓存时利用HTTP响应头将所请求的资源在浏览器进行缓存&#xff0c;缓存方式分两种&#xff1a;强缓存和协商缓存。 浏览器缓存是指将之前请求过的资源在浏览器进行缓存&am…

安卓findViewById 的优化方案:ViewBinding与ButterKnife(一)

好多小伙伴现在还用findViewById来获取控件的id, 在这里提供俩种替代方案&#xff1a;ViewBinding与ButterKnife&#xff1b; 先来说说ButterKnife ButterKnife ButterKnife是一个专注于Android系统的View注入框架&#xff0c;在过去的项目中总是需要很多的findViewById来查…

java 实现发送邮件功能

今天分享一篇 java 发送 QQ 邮件的功能 环境&#xff1a; jdk 1.8 springboot 2.6.3 maven 3.9.6 邮件功能依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId>&…

idea打包war包部署到tomcat以及访问路径问题

idea将web项目打包成war最重要的是配置atrificats。 首先打开file -》 project structure 创建之后&#xff0c;output directory即为输出war包的路径。Name可以随意&#xff0c;之后点击绿色&#xff0c;打开directory content 选择webapp目录&#xff0c;记得勾选include in…

(C语言)浮点数在内存中的存储详解

1. 浮点数 常见的浮点数&#xff1a;3.14159、 1E10等 &#xff0c;浮点数家族包括&#xff1a; float、double、long double 类型。 浮点数表示的范围&#xff1a; float.h 中定义. 2. 浮点数的存储 我们先来看一串代码&#xff1a; int main() {int n 9;float* pFloa…

安全工具介绍 SCNR/Arachni

关于SCNR 原来叫Arachni 是开源的&#xff0c;现在是SCNR&#xff0c;商用工具了 可试用一个月 Arachni Web Application Security Scanner Framework 看名字就知道了&#xff0c;针对web app 的安全工具&#xff0c;DASTIAST吧 安装 安装之前先 sudo apt-get update sudo…

嵌入式数据库--SQLite

目录 1. SQLite数据库简介 2. SQLite数据库的安装 方式一&#xff1a; 方式二&#xff1a; 3. SQLite的命令用法 1.创建一个数据库 2.创建一张表 3.删除表 4.插入数据 5. 查询数据 6.删除表内一条数据 7.修改表中的数据 8.增加一列也就是增加一个字段 1. SQLite数据库…

LeetCode每日一题——统计桌面上的不同数字

统计桌面上的不同数字OJ链接&#xff1a;2549. 统计桌面上的不同数字 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 这是一个很简单的数学问题&#xff1a; 当n 5时&#xff0c;因为n % 4 1&#xff0c;所以下一天4一定会被放上桌面 当n 4…

Linux系统 安装docker

安装&#xff1a; 1、Docker要求CentOS系统的内核版本高于 3.10 &#xff0c;通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2、更新yum包&#xff1a; sudo yum -y update 3、安装需要的软件包&#xff0c;yum-util 提供yum-config-manager功能&#xff0c;另外…

kvm虚拟化

kvm虚拟化 1. 虚拟化介绍 虚拟化是云计算的基础。简单的说&#xff0c;虚拟化使得在一台物理的服务器上可以跑多台虚拟机&#xff0c;虚拟机共享物理机的 CPU、内存、IO 硬件资源&#xff0c;但逻辑上虚拟机之间是相互隔离的。 物理机我们一般称为宿主机&#xff08;Host&…

深度学习pytorch——多层感知机反向传播(持续更新)

在讲解多层感知机反向传播之前&#xff0c;先来回顾一下多输出感知机的问题&#xff0c;下图是一个多输出感知机模型&#xff1a; 课时44 反向传播算法-1_哔哩哔哩_bilibili 根据上一次的分析深度学习pytorch——感知机&#xff08;Perceptron&#xff09;&#xff08;持续更新…

数学(算法竞赛、蓝桥杯)--快速幂

1、B站视频链接&#xff1a;G01 快速幂_哔哩哔哩_bilibili 题目链接&#xff1a;P1226 【模板】快速幂 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc.h> using namespace std; typedef long long LL; int a,b,p; int quickpow(LL a,int n,int p){…

Wear-Any-Way——可控虚拟试衣一键试穿,可自定义穿着方式

概述 Wear-Any-Way 是阿里巴巴最新推出的虚拟试衣技术&#xff0c;它不仅可以让用户在虚拟环境中试穿衣服&#xff0c;还可以根据需要自定义衣服的样式&#xff0c;比如卷起袖子、打开或拖动外套等。这种技术的引入旨在帮助消费者更好地了解衣服在不同穿着方式下的效果&#x…

2024年国内彩妆行业市场数据分析:增长机会在哪?

从伊蒂之屋、菲诗小铺等平价韩妆的退出&#xff0c;到全球第一眉妆贝玲妃的落幕&#xff0c;曾经的“网红”-“全网断货选手”纷纷退出中国市场。 有人认为是国内彩妆市场不景气&#xff1f;事实上&#xff0c;国内彩妆市场线上市场规模仍在持续扩大。根据鲸参谋数据统计&…

短视频矩阵系统源头技术开发--每一次技术迭代

短视频矩阵系统源头开发3年的我们&#xff0c;肯定是需求不断的迭代更新的&#xff0c;目前我们已经迭代了3年之久&#xff0c;写技术文章已经写了短视频矩阵系统&#xff0c;写了3年了&#xff0c;开发了3年了 短视频矩阵获客系统是一种基于短视频平台的获客游戏。短视频矩阵系…

提升质量透明度,动力电池企业的数据驱动生产实践 | 数据要素 × 工业制造

系列导读 如《“数据要素”三年行动计划&#xff08;2024—2026年&#xff09;》指出&#xff0c;工业制造是“数据要素”的关键领域之一。如何发挥海量数据资源、丰富应用场景等多重优势&#xff0c;以数据流引领技术流、资金流、人才流、物资流&#xff0c;对于制造企业而言…

ctfshow-web入门-反序列化

web254 先看题 <?php/* # -*- coding: utf-8 -*- # Author: h1xa # Date: 2020-12-02 17:44:47 # Last Modified by: h1xa # Last Modified time: 2020-12-02 19:29:02 # email: h1xactfer.com # link: https://ctfer.com*/error_reporting(0); highlight_file(__FIL…

抖音视频关键词批量采集工具|视频无水印爬虫下载软件

抖音视频关键词批量采集工具&#xff1a; 最新推出的抖音视频关键词批量采集工具&#xff0c;为您提供一种便捷的方式通过关键词搜索和提取符合条件的视频内容。以下是详细的操作说明和功能解析&#xff1a; 操作说明&#xff1a; 进入软件后&#xff0c;在第一个选项卡页面…

Vue 3 + TypeScript + Vite的现代前端项目框架

随着前端开发技术的飞速发展&#xff0c;Vue 3、TypeScript 和 Vite 构成了现代前端开发的强大组合。这篇博客将指导你如何从零开始搭建一个使用Vue 3、TypeScript以及Vite的前端项目&#xff0c;帮助你快速启动一个性能卓越且类型安全的现代化Web应用。 Vue 3 是一款渐进式Jav…