SQL概述及数据定义

news2024/11/28 19:06:46

文章目录

  • 一、SQL概述
    • 1.简介
    • 2.特点
    • 3.组成
    • 4.SQL分类
    • 5.书写规范
  • 二、数据定义
    • 1.模式的定义与删除
      • ①定义模式
      • ②删除模式
    • 2.基本表的定义、删除与修改
      • ①定义基本表
      • ②数据类型
      • ③模式与表
      • ④修改基本表
      • ⑤删除基本表
    • 3.索引的建立与删除
      • ①建立索引
      • ②删除索引

一、SQL概述

1.简介

SQL (Structured Query Language) 是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利,数据库管理系统应充分利用SQL语言提高计算机应用系统的工作质量与效率。SQL语言不仅能独立应用于终端,还可以作为子语言为其他程序设计提供有效助力,该程序应用中,SQL可与其他程序语言一起优化程序功能,进而为用户提供更多更全面的信息。

2.特点

  1. 综合统一
  2. 高度非过程化
  3. 面向集合的操作方式
  4. 以同一种语法结构提供两种使用方法
  5. 语言简洁,易学易用

3.组成

  1. 一个SQL数据库是(Table)的集合,它由一个或多个SQL模式定义。
  2. 一个SQL表由行集构成,一行是列的序列(集合),每列与行对应一个数据项。
  3. 一个表或者是一个基本表或者是一个视图。基本表是实际存储在数据库的表,而视图是由若干基本表或其他视图构成的表的定义
  4. 一个基本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储上一个物理文件对应。
  5. 用户可以用SQL语句对视图和基本表进行查询等操作。在用户角度来看,视图和基本表是一样的,没有区别,都是关系(表格)。
  6. SQL用户可以是应用程序,也可以是终端用户。SQL语句可嵌入在宿主语言的程序中使用,宿主语言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada语言等。SQL用户也能作为独立的用户接口,供交互环境下的终端用户使用。

4.SQL分类

  1. DDL:数据定义语言。包括CREATE / ALTER / DROP / RENAME / TRUNCATE
  2. DML:数据操作语言。包括INSERT / DELETE / UPDATE / SELECT
  3. DCL:数据控制语言。包括COMMIT / ROLLBACK / SAVEPOINT / GRANT / REVOKE

5.书写规范

  • 数据库名、表名、表别名、字段名、字段别名等都小写
  • SQL关键字、函数名、绑定变量等都大写

学习技巧:大处着眼,小处着手!


二、数据定义

功能包括模式定义、表定义、视图和索引的定义。

1.模式的定义与删除

①定义模式

模式定义语句

CREATE SCHEMA <模式名> AUTHORIZATION <用户名> [<表定义子句> | <视图定义子句> | <授权定义子句>]

  1. 如果没有指定<模式名>,那么其隐含为<用户名>
  2. 要创建模式,调用该指令的用户必须拥有DBA权限
  3. 定义模式实际上定义了一个命名空间,在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
  4. 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。

②删除模式

模式删除语句

DROP SCHEMA <模式名> <CASCADE | RESTRICT>

  1. CASCADE 和 RESTRICT两者必选其一
  2. 前者表示级联,表示在删除模式的同时把该模式中所有的数据库对象全部删除
  3. 后者表示限制,表示如果该模式中已经定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。

2.基本表的定义、删除与修改

①定义基本表

定义格式

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

名词解释

  • <表名>:所要定义的基本表的名字
  • <列名>:组成该表的各个属性(列)
  • <列级完整性约束条件>:涉及相应属性列的完整性约束条件
  • <表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

②数据类型

在这里插入图片描述

③模式与表

每一个表都属于一个模式,一个模式包含多个基本表。

定义基本表所属的模式的方法

  1. 在表名中明显的给出模式名
  2. 在创建模式语句中同时创建表
  3. 设置所属的模式,这样在创建表名时不必给出模式名

当用户创建基本表时,没有指定模式,系统根据搜索路径来确定该对象所属的模式。
搜索路径包含一组模式列表,RDBMS会使用模式列表中第一个存在的模式作为数据库对象的模式名。若搜索路径中的模式名都不存在,系统将给出错误。

显示当前的搜索路径

SHOW search_path;

默认值:$user, PUBLIC

设置搜索路径(DBA用户)

SET search_path TO "S-T",PUBLIC;

定义基本表

CREATE TABLE Student();

建立S-T.Student基本表。因为RDBMS发现搜索路径中第一个模式名S-T存在,就把该模式作为基本表Student所属的模式

④修改基本表

语句格式

ALTER TABLE <表名>
[ADD <新列名> <数据类型> [完整性约束]]
[DROP <完整性约束名>]
[ALTER COLUMN <列名> <数据类型>];
  • <表名>:要修改的基本表
  • ADD子句:增加新列和新的完整性约束条件;
  • DROP子句:删除指定的完整性约束条件;
  • MODIFY子句:用于修改列名和数据类型;

⑤删除基本表

语句格式

DROP TABLE <表名> [RESTRICT|CASCADE]
  1. RESTRICT:删除表是有限制的。要删除的表不能被其他表的约束所引用。若存在依赖该表的对象,则此表不能被删除。
  2. CASCADE:删除该表没有限制。在删除基本表的同时,相关的依赖对象一起删除。

3.索引的建立与删除

建立索引是加快查询速度的有效手段。建立索引由DBA或表的属主(即建立表的人)根据需要建立。

①建立索引

语句格式

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

名词解释

  • <表名>:要建索引的基本表的名字;
  • 索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔;
  • <次序>:指定索引值的排列次序,升序:ASC,降序:DESC,默认升序;
  • UNIQUE表明此索引的每一个索引值只对应唯一的数据记录
  • CLUSTER表示要建立的索引是聚簇索引。指索引项的顺序与表中记录的物理顺序一致的索引组织

聚簇索引

  1. 经常查询的列上建立聚簇索引可以提高查询效率。
  2. 最多只能建立一个聚簇索引

②删除索引

删除索引时,系统会从数据字典中删去有关该索引的描述。无需用户干预

DROP INDEX Stusname;

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

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

相关文章

使用IDA查看汇编代码上下文去辅助排查C++软件异常问题

目录 1、概述 2、汇编指令能最直接反映异常崩溃的原因 2.1、查看异常Code码及对应的异常类型 2.2、查看发生崩溃的那条汇编指令 3、阅读汇编代码上下文需要掌握一定的基础汇编知识 4、Windbg中显示的函数调用堆栈中的C代码行号&#xff0c;和最新的代码对不上了 5、Wind…

openGL学习之GLFW和GLAD的下载和编译

背景:为什么使用GLFW和GLADOPenGL环境 目前主流的桌面平台是GLFW和GLAD之前使用的GLUT和Free GLUT已经基本淘汰了&#xff0c;所以记录一下如何下载GLFW和GLAD并且编译.GLFW下载:An OpenGL library | GLFW复制到你想存放的位置,我这里就存放到C盘Libaray文件夹下了,这里是我存放…

算法训练营 day37 贪心算法 K次取反后最大化的数组和 加油站 分发糖果

算法训练营 day37 贪心算法 K次取反后最大化的数组和 加油站 分发糖果 K次取反后最大化的数组和 1005. K 次取反后最大化的数组和 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标…

Eclipse 版本升级记录

前言 Eclipse 不是不能在线升级&#xff0c;至少没有找对方法&#xff0c;下面就让我来一步一步带你学会它、使用它吧! 一、概念 Eclipse主要分为两个概念&#xff0c;一个是在线升级 Eclipse 新版本&#xff0c;另一个是在线升级 Eclipse 插件&#xff0c;这两个是有很大区…

【记录】ChatGPT使用记录

文章目录2023年02月08日数学哲学Java其他2023年02月09日ChatGPT网络根据对话的日期、问题的类型进行整理 2023年02月08日 数学 感想&#xff1a;数学应该没啥问题&#xff0c;感觉只要自然语言没理解错了&#xff0c;剩下就不是事 积分 代数 哲学 哲学问题的回答就属于模棱…

JetpackCompose从入门到实战学习笔记7—Dialog的简单使用

JetpackCompose从入门到实战学习笔记7—Dialog的简单使用 1.Dialog对话框 Dialog的参数如下: Composable fun Dialog(onDismissRequest: (() -> Unit)?, //关闭对话框的回调properties: DialogProperties! DialogProperties(), //自定义对话框的属性content: ( Compose…

智能无障碍轮椅——汇总

文章目录一、设计内容二、控制理论三、材料列表四、控制图五、硬件介绍1、TB6612FNG电机驱动模块2、DX-BT04 2.0蓝牙模块3、MPU6050陀螺仪模块4、电源模块5、520编码器直流减速电机六、PID理论与算法控制七、代码解析八、参考博文一、设计内容 使用 STM32 作为主处理器进行开发…

Web3.0:互联网新阶段

Web3.0 定义&#xff1a;从后端生产关系革新开始。 Web3.0 是结合了去中心化和代币&#xff08;Token&#xff09;经济学等概念&#xff0c;基于区块链技术的全新的互联网迭代方向&#xff0c;意在解决 Web2.0 带来的生态不平衡、发展不透明等问题。与 AR/VR 等前端创新相比&am…

oracle外键约束、级联删除

根据约束名称查询&#xff1a;select * from user_constraints t where t.CONSTRAINT_NAME 约束名称举例&#xff1a;字段解析&#xff1a;1、CONSTRAINT_NAME&#xff1a;约束名称。2、CONSTRAINT_TYPE&#xff1a;约束类型。3、TABLE_NAME&#xff1a;约束所在的表。4、R_CO…

FreeModbus RTU 移植指南

FreeModbus 简介 FreeModbus 是一个免费的软件协议栈&#xff0c;实现了 Modbus 从机功能&#xff1a; 纯 C 语言支持 Modbus RTU/ASCII支持 Modbus TCP 本文介绍 Modbus RTU 移植。 移植环境&#xff1a; 裸机Keil MDK 编译器Cortex-M3 内核芯片&#xff08;LPC1778/88&…

Intel x86_64 PMU简介

文章目录前言一、性能监控概述二、CPUID information三、架构性能监控3.1 架构性能监控 Version 13.1.1 架构性能监控 Version 1 Facilities3.1.2 预定义的体系结构性能事件3.1.3 cmask demo测试参考资料前言 Intel 64 和 IA-32 架构提供了 PMU&#xff08;Performance Monito…

Oracle Data Guard Apply服务

1. Apply服务介绍 Apply服务自动应用redo到备数据库来保持与主数据库的同步和允许事务一致性访问数据。 缺省情况下&#xff0c;Apply服务等待备redo日志文件进行归档&#xff0c;然后再应用归档日志文件包含的redo。然而&#xff0c;可以启用实时Apply&#xff0c;允许当前的…

CentOS8基础篇2:文件系统

一、文件系统概述 1.文件系统的基本概念 操作系统中负责管理和存储文件信息的软件机构称为文件管理系统&#xff0c;简称文件系统。它规定了文件的存储方式及文件索引方式等信息。文件系统主要由三部分组成&#xff0c;分别是与文件管理相关的软件、被管理的文件和实施文件管…

ip-guard如何查看客户端连接的服务器IP地址?

在客户端上通过“运行”输入win.ini打开文件(在目录C:\\Windows\\),可以从里面找到一个字段SIP,比如SIP=3232237616 再将其换算成16进制数为c0a80830

每天10个前端小知识 【Day 8】

前端面试基础知识题 1. Javascript中如何实现函数缓存&#xff1f;函数缓存有哪些应用场景&#xff1f; 函数缓存&#xff0c;就是将函数运算过的结果进行缓存。本质上就是用空间&#xff08;缓存存储&#xff09;换时间&#xff08;计算过程&#xff09;&#xff0c; 常用于…

在CANoe/CANalyzer中给CAN Log.asc/blf文件“瘦身”

案例背景&#xff08;共7页精讲&#xff09;&#xff1a; 该篇博文将告诉您&#xff0c;如何给离线文件CAN Log.asc/blf文件“瘦身”&#xff1a;批量删除/过滤 CAN Log中&#xff0c;不需要的CAN ID和CAN channel。 目录 1 准备工作 2 插入CAN Filter 3 保存“瘦身” 后的…

一种RK3399+MIPI+FPGA的高速工业相机的设计方案(一)

目 前 &#xff0c; 嵌 入 式 相 机 逐 渐 代 替 了 传 统 相 机 进 入 大 众 的 视 野 &#xff0c; 应 用 在 公 安 刑 侦 、 生 物 医 学和 文 物 保 护 等 诸 多 领 域 。 但 是 随 着 人 们 对 图 像 视 觉 成 像 质 量 追 求 的 提 升 &#xff0c; 图 像 传 感 器 的 特…

ESP32S3系列--SPI主机驱动详解(一)

一、目的SPI是一种串行同步接口&#xff0c;可用于与外围设备进行通信。ESP32S3自带4个SPI控制器外设&#xff08;Master&#xff09;&#xff0c;其中SPI0/SPI1内部专用,共用一组信号线,通过一个仲裁器访问外部Flash和PSRAM&#xff1b;SPI2/3各自使用一组信号线&#xff1b;开…

【C++】二叉树的前序中序后序非递归实现

文章目录二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历总结二叉树的前序遍历 前序遍历的顺序是根、左、右。任何一颗树都可以认为分为左路节点&#xff0c;左路节点的右子树。先访问左路节点&#xff0c;再来访问左路节点的右子树。把访问左路节点的右子树看成一个子问题…

VUE3 插件的开发和使用

在构建 Vue 项目的过程中&#xff0c;离不开各种开箱即用的插件支持&#xff0c;用以快速完成需求&#xff0c;避免自己造轮子。 在 Vue 项目里&#xff0c;可以使用针对 Vue 定制开发的专属插件&#xff0c;也可以使用无框架依赖的通用 JS 插件&#xff0c;插件的表现形式也是…