数据库语言(二):SQL语法实例整理
连接表达式:
select *
from student join takes on student.ID = takes.ID;
通过on后面的谓词作为连接条件,相同的属性可以出现两次,也就是等价于:
select *
from student, takes
where student.ID = takes.ID;
内连接:inner join
只保留匹配的元组,会去除新表中的重复属性。
tips: 外连接和关键字 on 共同使用, 内连接和关键字 using 共同使用。
natural join:指明了两表进行自然连接,并且连接是基于两表中所有同名字段的。两个表同名的列不能超过1个。
join...using:用于两表有同名字段但数据类型不同,或者使用多个同名字段中的某一个做等值连接
join...on :最为灵活,可以指明连接的条件。
新加入字段导致自然连接的条件发生变化,修改后变为了指定字段的等值连接。像这种项目中的类似问题,还是不要使用自然连接的好,最开始就使用join...using或join...on避免他人因修改表结构造成的错误。[2]
外连接:outer join
包含 左外连接 右外连接 全外连接
select *
from student natural left outer join takes
where course_id is null;
全外连接:full outer join
select *
from (select *
from student
where dept_name = "Computer Science")
natural full outer join
(select *
from takes
where year = 2015);
视图:
视图也是一个关系。视图的定义和with子句定义关系是类似的,在定义的时候,并不执行sql语句(当然对于物化视图而言,定义的时候就会执行并保存结果),仅仅是如函数一样定义了一个生成表的过程,在实际调用这个过程的时候,再来生成新的表。
create view faculty as
select ID, name, dept_name
from instructor;
对于查询语句,视图符合关系的所有特征,但是视图不一定是可更新的 updatable。
定义关系时的完整性约束
check:在定义关系的时候,check 后面的谓词用于检查表中的记录,任何时刻每条记录都要满足此谓词。
unique:表示后面的属性集合构成候选码。
cascade:级联删除,用于维持参照完整性,也就是一个关系中某个属性的取值集合是另一个关系某个属性的取值集合的子集。
not null: 非空约束
default : 设置默认值
create table course
(ID varchar(15),
dept_name varchar(15),
semester varchar(10) default 'Spring',
primary key(ID),
foreign key(dept_name) references department
on delete set null
on update cascade,
check ( semester in ('Spring', 'Summer','Fall','Winter')) );
创建索引:
create index student_ID_index on student(ID);
数据类型:
除了在(一)中有的类型,还有其他类型:[1]
date:日期 '2015-9-28'
time :一天中的时间 '22:09:00'
timestamp:两者结合 '2015-9-28 22:09:00'
clob(10KB) :大的字符数据
blob(2GB) :大的二进制数据
[1] http://www.cnblogs.com/xinchrome/p/4843137.html
[2] http://blog.csdn.net/chenjinlin1/article/details/6570419
数据库语言(二):SQL语法实例整理的更多相关文章
- 数据库语言(一):SQL语法实例整理
数据库系统以一些语句作为输入,并返回一些输出,例如sql查询总是返回一张表,我们定义:具有相同格式的记录的集合是一张表. 考虑大学数据库系统: SQL中的数据类型: char(n) 字符串长度为n ...
- 网络安全从入门到精通 (第二章-2) 后端基础SQL—MySQL数据库简介及SQL语法
本文内容: 什么是数据库 常见数据库 数据库的基本知识 基本SQL语法 1,什么是数据库? 数据库就是将大量数据保存起来,通过计算机加工,可以高效访问的数据聚合. 数据库就是长期存储在计算机内,有组织 ...
- SQL语法粗整理
1.在同一张表中,对前一条数据进行更新性插入操作,即:
- tn文本分析语言(二) 基本语法
tn是desert和tan共同开发的一种用于匹配,转写和抽取文本的语言.解释器使用Python实现,代码不超过1000行. 本文主要介绍tn的基本语法.高级内容可以参考其他篇章.使用这样的语法,是为了 ...
- PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
1. 首先要得到该数据库中有哪些表,所用函数 mysql_list_tables(),然后可以将获取的所有表名存到一个数组.----------------该函数由于被弃用 用show table ...
- access 数据库创建表SQL语法
create table R_CAIFA_B13 ( ID AUTOINCREMENT PRIMARY KEY, XB varchar(255), C1 varchar(50), C2 varchar ...
- 整理的一些数据库不容易想到的SQL语句实例一
1.行转列SQL语句 SELECT * FROM ( SELECT [FID] , [Weeks] , [Qty] FROM dbo.TempTable where Weeks is not null ...
- 数据库SQL语法到MySQL实操
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 ...
- {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句
MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
随机推荐
- The 2014 ACM-ICPC Asia Mudanjiang Regional First Round
The Himalayas http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5341 签到 #include<cstdio& ...
- error X3025:global variables are implicitly constant, enable compatibility mode to allow modification
global variables are implicitly constant, enable compatibility mode to allow modification http://xbo ...
- hlsl 和cg 涉及 mul 左乘 右乘
error: 1. mul' implicit truncation of vector type 2. matrixXXX: array dimensions of(unknown scope en ...
- JavaScript高级---装饰者模式设计
一.设计模式 javascript里面给我们提供了很多种设计模式: 工厂.桥.组合.门面.适配器.装饰者.享元.代理.观察者.命令.责任链 在前面我们实现了工厂模式和桥模式 工厂模式 : 核心:为了生 ...
- 【WCF--初入江湖】目录
[WCF--初入江湖]目录 [WCF--初入江湖]01 WCF编程概述 [WCF--初入江湖]02 WCF契约 [WCF--初入江湖]03 配置服务 [WCF--初入江湖]04 WCF通信模式 [WC ...
- Web App之一
JSP/HTML/CSS---------View(不包含任何的数据,只作为基本的layout) JS------------------------Data(update JSP/HTML)
- windowopen
1.最基本的弹出窗口代码] <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.html') --> ...
- Zabbix 安装及微信短信提醒
Zabbix简介 Zabbix 近几年得到了各大互联网公司的认可,当然第一点归功与它强大的监控功能,第二点免费开源也得到了广大用户的青睐.Zabbix 能将操作系统中的绝大部分指标进行监控,比如(CP ...
- UVA 133 The Dole Queue(报数问题)
题意:一个长度为N的循环队列,一个人从1号开始逆时针开始数数,第K个出列,一个人从第N个人开始顺时针数数,第M个出列,选到的两个人要同时出列(以不影响另一个人数数),选到同一个人就那个人出列. 思路: ...
- cojs 疯狂的魔法树 疯狂的颜色序列 题解报告
疯狂的魔法树 一个各种操作大杂烩的鬼畜数据结构题目 首先我们注意到树的形态是半随机的 我们可以树分块,对树分成若干个块 对于每个块我们维护一个add标记表示增量 维护一个vis标记表示覆盖量 注意标记 ...