数据库语言(二):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用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...
随机推荐
- 01-01-01【Nhibernate (版本3.3.1.4000) 出入江湖】配置文件
默认配置文件名称是:hibernate.cfg.xml 放置在应用程序集的根目录下 <?xml version="1.0" encoding="utf-8" ...
- 关于C#和ASP.NET中对App.config和Web.config文件里的[appSettings]和[connectionStrings]节点进行新增、修改、删除和读取相关的操作
最近我做的一些项目,经常需要用到对应用程序的配置文件操作,如app.config和web.config的配置文件,特别是对配置文件中的[appSettings]和[connectionStrings] ...
- JMeterPluginCMD命令行工具使用详解
MeterPluginCMD命令行工具生成png图片和csv统计文件 Jmeter是个纯java的开源的轻量级性能测试工具,功能强大.因为是轻量级的,与loadrunner相比,报告统计的相对较少.不 ...
- mapreduce程序编写(WordCount)
折腾了半天.终于编写成功了第一个自己的mapreduce程序,并通过打jar包的方式运行起来了. 运行环境: windows 64bit eclipse 64bit jdk6.0 64bit 一.工程 ...
- 无法将 grub-efl-amd64-signed 软件包安装/target/ 中
64位win7下U盘安装64位ubuntu12.04,出现[无法将 grub-efl-amd64-signed 软件包安装/target/ 中]的错误 1. 已经确认为 12.04.2 的 Bug B ...
- cojs 疯狂的粉刷匠 疯狂的斐波那契 题解报告
疯狂的斐波那契 学习了一些奇怪的东西之后出的题目 最外层要模p是显然的,然而内层并不能模p 那么模什么呢,显然是模斐波那契的循环节 那么我们可以一层层的求出每层的斐波那契循环节 之后在从内向外用矩阵乘 ...
- Project Euler 81:Path sum: two ways 路径和:两个方向
Path sum: two ways In the 5 by 5 matrix below, the minimal path sum from the top left to the bottom ...
- [mock]7月25日
1. 将一个数组分成左右两部分,使得右边的某个连续子段和减去左边的某个连续字段和最小[7,8,9,|3,5,-1] sum right - sum left minimal 想到左右分一刀,O(n), ...
- Linux基础---开关机与帮助
1.X window与文字模式的切换 通常我们也称文字模式为 终端机接口, terminal或console!Linux预设的情况下, 会提供六个Terminal来让使用者登入,切换的方式为: [Ct ...
- iOS 开发-- Runtime 1小时入门教程
1小时让你知道什么是Objective-C Runtime,并对它有一定的基本了解,可以在开发过程中运用自如. 三.Objective-C Runtime到底是什么东西? 简而言之,Objective ...