SQL概述及数据定义

简介: SQL概述及数据定义

一、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;
相关文章
|
6天前
|
SQL 存储 缓存
SQL Server 数据太多如何优化
11种优化方案供你参考,优化 SQL Server 数据库性能得从多个方面着手,包括硬件配置、数据库结构、查询优化、索引管理、分区分表、并行处理等。通过合理的索引、查询优化、数据分区等技术,可以在数据量增大时保持较好的性能。同时,定期进行数据库维护和清理,保证数据库高效运行。
|
21天前
|
SQL 移动开发 Oracle
SQL语句实现查询连续六天数据的方法与技巧
在数据库查询中,有时需要筛选出符合特定时间连续性条件的数据记录
|
28天前
|
SQL 存储 关系型数据库
添加数据到数据库的SQL语句详解与实践技巧
在数据库管理中,添加数据是一个基本操作,它涉及到向表中插入新的记录
|
29天前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
1月前
|
SQL 监控 数据处理
SQL数据库数据修改操作详解
数据库是现代信息系统的重要组成部分,其中SQL(StructuredQueryLanguage)是管理和处理数据库的重要工具之一。在日常的业务运营过程中,数据的准确性和及时性对企业来说至关重要,这就需要掌握如何在数据库中正确地进行数据修改操作。本文将详细介绍在SQL数据库中如何修改数据,帮助读者更好
143 4
|
1月前
|
SQL 关系型数据库 MySQL
SQL批量插入测试数据的几种方法?
SQL批量插入测试数据的几种方法?
78 1
|
30天前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
35 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
79 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
34 0
|
1月前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
44 0