第8章 SQL语言(一)
1、SQL(Structured Query Language),结构化查询语言,1974年Boyce和Chhamberlin提出,是一种通用的、功能强大的关系数据库的标准语言
2、SQL包含数据查询、数据操纵、数据定义、数据控制功能
3、基本表:实际存储在数据库中的表(真实的表)
4、视图:由若干个基本表或其他视图导出的表,是一个虚表(虚表)
数据库语言概述
1、任何一个数据库系统都应向用户提供一种数据库语言,包含数据定义语言和数据操纵语言(不同的数据库有自己的数据库语言,例如:mysql数据库的SQL语言,oracle数据库的SQL语言,大部分是相同的,但是部分地方存在“方言”差异,标注SQL也就是保证了大部分语法的相似)
2、SQL语言是集数据定义和数据操纵为一体的典型数据库语言
3、数据定义语言(Data Definition Language,DDL),用来定义数据库模式。包含数据库模式定义、数据库存储结构和存取方法定义,数据库模式的修改和删除功能
4、数据操纵语言(Data Manipulation Language,DML),用来表示用户对数据库的操作请求,主要包含增删改查(也是开发人员最常使用到的),其中,最核心的就是数据的查询
5、SQL特点
- 综合统一
- 高度非过程化:进行数据操作时,只需要说做什么,无需指出怎么做
- 面向集合的操作方式
- 两种使用方式:用于在终端输入sql命令对数据库进行操作(也称为自含式语言),将sql语言嵌入到高级语言程序中(嵌入式语言)
- 语言简洁,易学易用,核心动词9个,包含如下4类:
(1)数据查询:select,用于查询数据,使用最多的一个动词(查询)
(2)数据定义:create、drop、alter,用于创建新表、删除表、修改表(表结构)
(3)数据操纵:insert、update、delete,用于数据的插入、修改和删除(对表中的数据)
(4)数据控制:grant、revoke,用于数据库对象访问的权限授权和收回授权(赋予权限和收回权限)
6、SQL支持三级模式结构:外模式(视图)、模式(基本表)、内模式(存储文件)
7、SQL的基本组成
- 数据定义语言:提供定义关系模式和视图、删除关系和视图、修改关系模式的命令
- 交互式数据操纵语言:增删改查的命令
- 事务控制:事务开始和结束的命令
- 嵌入式sql和动态sql:高级语言中混合sql命令
- 完整性:数据满足完整性约束条件,不满足条件则无法执行
- 权限管理:数据定义中包含对关系和视图的访问权限
8、SQL支持的内部域类型(SQL数据类型)
类型 | 说明 |
char(n) | 固定长度字符串,表示n个字符的固定长度字符串 |
varchar(n) | 可变长度字符串,表示最多可以有n个字符的字符串 |
int | 整型,也可以用integer |
smallint | 短整型 |
numerical(p,d) | 定点数p为整数位,d为小数位 |
real | 浮点型 |
double | 双精度浮点型 |
float(n) | n为浮点型 |
boolean | 布尔型 |
date | 日期型 |
time | 时间型 |
9、创建表(create table)
语法格式:create table 表名(列名1 数据类型 列级完整性约束条件,列名2 数据类型 列级完整性约束条件,...,表级完整性约束条件)
列级完整性约束条件主要有:非空、取值唯一等。表约束主要有外键等
【题外话:感觉mysql做得挺好,依据help create,看着给出的提示都能写出SQL代码,还无需记忆太多,但关键动词还是要自己能记忆】
例题:建立一个供应商、零件数据库。其中关系供应商S(Sno,Sname,Status, City)属性名分别表示供应商代码、供应商名、供应商状态和供应商所在城市;关系零件P(Pno,Pname, Color,Weight,City)属性名分别表示零件号、零件名、颜色、重量及产地。该数据库要满足如下:
(1)供应商代码不能为空,且值是唯一的,供应商的名也是唯一的。
(2)零件号不能为空,且值是唯一的;零件名不能为空。
(3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。
分析:
1、首先,根据题意,存在两个基本表,分别是供应商表和零件表,表名和列名都给出了,建表的时候需要注意一下约束条件即可,这两个表的创建基本没有什么问题
2、根据(3),说明供应商和零件之间是多对多的关系,那么应该建立一个联系表,表名为SP,使用基本表的名字来构成联系表,应该没有什么问题,哪个供应商供应哪一个型号的零件,故需要Sno和Pno来构成联系表的主码,且分别又是基本表中的,所以还要设置外码约束,这点应该也没有什么问题,最难的是:联系表中还有其他的属性,供应商在哪些城市进行零件生产,这是零件的产地,也应该算一个属性;其次是供应商状态,对该种零件的供应状况。
经过分析,创建表的时候需要注意单词不要写错,如:foreign primary references unique create这几个看起来比较长的单词,还有就是经常使用电脑,自己手写的时候容易写错,要多练习练习。
第8章 SQL语言(一)相关推荐
- PostgreSQL 10.1 手册_部分 I. 教程_第 2 章 SQL语言
第 2 章 SQL语言 目录 2.1. 引言2.2. 概念2.3. 创建一个新表2.4. 在表中增加行2.5. 查询一个表2.6. 在表之间连接2.7. 聚集函数2.8. 更新2.9. 删除 本文转自 ...
- 【学习笔记】数据库系统原理 第三章 SQL语言
以下内容为参考课件和<数据库系统概论>(第5版,王珊等著)的个人整理,若有错误欢迎指出 第三章 SQL语言 文章目录 第三章 SQL语言 一.概述 二.数据查询功能 1.查询语句 2.连接 ...
- oracle中值集限定词为灰色,《Oracle从入门到精通》读书笔记第四章 SQL语言基础之一...
4.1 SQL语言概述 4.1.1 SQL语言的特点 1.集合性 2.统一性 3.易于移植性 4.1.2 SQL语言的分类 1.数据查询语言(DQL)- select语句,查询数据 2.数据操纵语言( ...
- 部分 I. 教程_第 2 章 SQL语言_2.2. 概念
2.2. 概念 PostgreSQL是一种关系型数据库管理系统 (RDBMS).这意味着它是一种用于管理存储在关系中的数据的系统.关系实际上是表的数学术语. 今天,把数据存储在表里的概念已经快成了固有 ...
- 《Oracle从入门到精通》读书笔记第四章 SQL语言基础之二
4.7 事务处理 4.7.1 事务概述 事务的4种属性:acid (1)原子性(atomic):事务是一个整体的工作单元,要么全部执行,要么全部取消. (2)一致性(consistency):所有的数 ...
- 二级计算机vf里的sql,计算机等级考试二级VF考点:SQL语言
第4章 SQL语言(数据查询) 一.投影:SELECT 字段 FROM 表名 题目:1. 对职工表进行查询,显示职工的职工号. 2. 对职工表进行查询,显示所有信息(即所有字段). 二.选择:SELE ...
- 第九章 Mysql语言
#[例9.1] 使用RAND()函数求3个随机值. #[例9.2] 求3和4的平方根. #[例9.3] 求7.2和-7.2的绝对值. #[例9.4] 求小于或等于-3.5或6.8的最大整数,大于或等于 ...
- 【SQL语言】数据库原理与设计
目录 第五章 SQL语言 5.3 简单查询(对一个表) 5.4 连接查询 5.5 聚集函数 5.6 嵌套查询 5.7 集合运算 5.8 视图的创建和使用 5.9 更新操作 第六章 高级SQL语言 6. ...
- PostgreSQL修炼之道之SQL语言入门(四)
目录 第三章 SQL语言入门(二) 3.4 查询语句 3.4.1 单表查询语句 3.4.2 过滤条件的查询 3.5 其他SQL语句 3.5.1 INSERT INTO... SELECT语句 3.5. ...
最新文章
- SharedPreferences的工具类,使用起来方便、快捷
- js处理json和字符串示例
- SQL Server 2008带字段注释导入Power Designer 9.5
- 堆(Heap)大根堆、小根堆
- uClinux下移植Ne2000兼容的网卡驱动程序(转)
- 【Flink】Flink SQL Cannot instantiate user function cannot assign instance LinkedMap FlinkKafkaConsum
- Java程序运行时间的计算
- 3389服务器信息是什么意思,服务器3389端口监控问题
- 30天React Native从零到IOS/Android双平台发布总结
- SAP: Query创建教程
- bzoj:1922: [Sdoi2010]大陆争霸 (luogu 2446)
- 搬运:PHOTOSHOP存储为 Web 所用格式的选项|处理PNG图像透明度时的仿色选项
- 【新手福音】分享一个自己制作的机器学习工具集合
- 什么是Receptive Field
- 手机游戏开发现状分析
- Android下载网上图片
- R语言统计与绘图:生存曲线的两两比较
- 如何查看电脑开关机记录
- Super Unicode Editor(十六进制编辑器)v3.01中文版
- 百度云盘群组下载,细节操作让你摸不着头脑?
热门文章
- bzoj 3055礼物运送 floyed + 状压DP
- jquery和zepto的扩展方法extend
- hdu 1233 还是畅通工程(最小生成树的Prim和Kruskal两种算法的c++实现)(prim算法详解)...
- 快速了解 MySQL 的性能优化
- HR--上载信息类型的长文本的样例代码
- 30kJava程序员升为全栈架构师的晋升之路
- python logging模块使用总结
- 《从0到1学习Flink》—— Apache Flink 介绍
- Bless You Autocorrect!
- Oracle-11g 从表空间删除数据文件