数据库系统概念:基础的SQL
public class DataBase {
public static void main() {
}
}
/*
3.1 SQL查询语言概览
SQL语言有一下几个部分:
数据定义语言:提供定义关系模式,删除关系以及修改关系模式的命令
数据操纵语言:提供从数据库中查询信息,以及在数据库中插入元组,删除元组,修改元组的能力
完整性:定义完整性约束的命令
视图定义:
事务控制:定义事务的开始和结束的命令
嵌入式SQL和动态SQL:嵌入式和和动态SQL定义SQL语如何嵌入到通用编程语言
授权:定义了包括对关系和视图的访问权限命令
*/
/*
3.2.1 基本类型
SQL标准支持多种固有类型:
char(n)
varchar(n)
int
smallint
numeric(p,d):定点数,精度由用户指定。
float(n):精度至少为n位的浮点数
read,double precision:浮点数与双精度浮点数,精度与机器相关
将一个char类型与varchar类型进行比较的时候,由数据库系统决定要不要在varchar后加
上空格,以使长度一致。作者建议,我们始终使用varchar类型来避免这种情况。
*/
/*
3.2.3 基本模式定义
create table department
(dept_name varchar(20),
building varchar(15),
budget numeric(12.2),
primary key(dept_name));
*/
/*
3.3.2 多关系查询
select name, instructor, dept_name, building
from instructor, department
where instructor.dept_name = department.dept_name
通过from字句定义了一个在该字句中所列出关系的笛卡尔积。笛卡尔积运算从两个关系中
合并元组,但不同于连接运算的是,其结果也包含两个关系的所有对,无论它们的属性是
否匹配。
通常说来,一个SQL查询的含义可以理解如下:
1.为from字句中列出的关系产生笛卡尔积。
2.在步骤1的结果上应用where字句中指定的谓词。
3.对于步骤2结果中的每个元组,输出select子句中指定的属性(或表达式的结果)
*/
/*
3.3.3 自然连接
自然连接运算作用与两个关系,并产生一个关系作为结果。不同于两个关系的笛卡尔积,自然连接
只考虑那些在两个挂你模式中都出现的属性上取值相同的元组对。
原代码:
select name, course_id
from instructor, teaches
where instructor.Id = teaches.ID
改进为:
select name,course_id
from instructor natural join teachers
代码分析:
select name, title
from instructor natural join teachers, course
where teachers.course_id = course_course_id;
先计算出instructor和teachers的自然连接,然后计算该结果和course的笛卡尔积
为了发扬自然连接的优点,同时避免不必要的相等属性带来的危险,SQL提供了一种自然连接
的构造形式,允许用户来指定需要哪些列相等。
select name, title
from (instructor natural join teaches)join course using(course_id)
*/
/*
3.4 附加的基本运算
3.4.1 更名运算
3.4.2 字符串运算
SQL允许在字符串上有多种函数,如串联、提取字串、计算字符串长度、大小写转换、去掉字符串后面的空格等
在字符串上可以使用立刻操作符来实现模式匹配,我们使用两个特殊的字符来
描述模式:
%:匹配任意字串
_:匹配任意字符
为了使模式中能够包含特殊模式的字符(%与_),SQL允许定义转义字符。转义字符直接放在特殊
字符的前面。我们在like运算中使用escape关键词来定义转义字符。
like 'ab\%cd%' escape '\' //匹配以ab%cd开头的字符串
SQL 允许使用not like比较运算符搜寻不匹配项。
*/
/*
3.4.3 select子句中的属性说明
3.4.4 排列元素的显式次序
排序可以在多个属性上进行。
select *
from instructor
order by salary desc, name asc
3.4.5 where子句谓词
select name
from instructor
where salary between 90000 and 100000
还可以使用not between
SQL允许我们使用记号(v1,v2,v3)来表示一个分量值分别为v1,v2,v3的n维元组。
在元组上应用比较运算符,按字典顺序进行比较运算。
select name, course_id
from instructor, teaches
where (instructor.ID,dept_name) = (teaches.ID,"Biology');
*/
数据库系统概念:基础的SQL的更多相关文章
- 【JAVA编码专题】JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
这两天抽时间又总结/整理了一下各种编码的实际编码方式,和在Java应用中的使用情况,在这里记录下来以便日后参考. 为了构成一个完整的对文字编码的认识和深入把握,以便处理在Java开发过程中遇到的各种问 ...
- Spring Security 概念基础 验证流程
Spring Security 概念基础 验证流程 认证&授权 认证:确定是否为合法用户 授权:分配角色权限(分配角色,分配资源) 认证管理器(Authentication Manager) ...
- 基础篇 - SQL 的约束
基础篇 - SQL 的约束 约束 一.实验简介 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性.唯一性.本节实验将在实践操作中熟悉 MySQL 中的几种约束. 二 ...
- 第87节:Java中的Bootstrap基础与SQL入门
第87节:Java中的Bootstrap基础与SQL入门 前言复习 什么是JQ? : write less do more 写更少的代码,做更多的事 找出所有兄弟: $("div" ...
- Unicode,GBK,GB2312,UTF-8概念基础(转载)
第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础本部分采用重用,转载一篇文章来完成这部分的目标.来源:holen'blog 对字符编码与Unicode,IS ...
- JAVA字符编码一:Unicode,GBK,GB2312,UTF-8概念基础
第一篇:JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础 来源:holen'blog 对字符编码与Unicode,ISO 10646,UCS,UTF8,UTF16, ...
- C#-概念-基础类库:基础类库
ylbtech-C#-概念-基础类库:基础类库 基础类库 (BCL) 是微软所提出的一组标准库可提供.NET Framework所有语言使用. 随着 Windows 以及 .NET Framework ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- 《数据库系统概念》1-数据抽象、模型及SQL
DBMS(database-management system)包括数据库和用于存取数据的程序,DBMS的基本目标是为数据的存取提供方便.高效的方式,此外对大多数企业来说,数据是非常重要的,所以DB ...
随机推荐
- Winform 点击TreeView控件节点的CheckBox不触发NodeMouseClick事件的做法
private void Tv_areainfo_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (!e.Node. ...
- ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第一章_引言 - ArcGIS知乎-新一代ArcGIS问答社区 1 引言 1.1 读者定位 我们假设用户在阅读本指南前应已具备以下知识: · 熟悉W ...
- C# SQL数据库的访问类
/// <summary> /// SQL数据库的访问类 /// </summary> public class SQLHelper { /// <summary> ...
- Qt for windows消息循环、libqxt分析和wince快捷键处理
Qt for windows消息循环.libqxt分析和wince快捷键处理 利用Qt做windows图形界面开发和MFC相比,个人感觉还是比较简单好用的:首先利用Designer工具搞个ui文件:然 ...
- QT5.8 VS2017 编译教程(可以使用VS2017 XP兼容包)
1.下载QT5.8源码 这个我不做过多解释. 2.安装使用的环境 visual studio 2017 Python Perl Ruby 安装好,并配置好环境PATH变量. 3.修改错误代码 错误 ...
- Twitter的分布式自增ID算法snowflake(雪花算法) - C#版
概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的.有些时候我们希望能使用一种简 ...
- python Trojan 模块(我忘记几了)—— 通信隧道建立
0X01 SSH的建立 我想,第一步先实现简单的ssh通信再说,类似其他那种高端的C&C将逐步研究 对于ssh,python有个module叫paramiko,对没错看起来像日语单词 The ...
- spring 5.x 系列第9篇 —— 整合mongodb (xml配置方式)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 配置文件位于resources下,项目以单 ...
- laravel配置不同环境的配置文件
//在入口bootstrap/App.php中 $env = $app->detectEnvironment( function () use ($app) { $uname = php_una ...
- 【HDU - 2181】哈密顿绕行世界问题(dfs+回溯)
-->哈密顿绕行世界问题 Descriptions: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input 前2 ...