连接表达式:

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语法实例整理的更多相关文章

  1. 数据库语言(一):SQL语法实例整理

    数据库系统以一些语句作为输入,并返回一些输出,例如sql查询总是返回一张表,我们定义:具有相同格式的记录的集合是一张表. 考虑大学数据库系统: SQL中的数据类型: char(n) 字符串长度为n   ...

  2. 网络安全从入门到精通 (第二章-2) 后端基础SQL—MySQL数据库简介及SQL语法

    本文内容: 什么是数据库 常见数据库 数据库的基本知识 基本SQL语法 1,什么是数据库? 数据库就是将大量数据保存起来,通过计算机加工,可以高效访问的数据聚合. 数据库就是长期存储在计算机内,有组织 ...

  3. SQL语法粗整理

    1.在同一张表中,对前一条数据进行更新性插入操作,即:

  4. tn文本分析语言(二) 基本语法

    tn是desert和tan共同开发的一种用于匹配,转写和抽取文本的语言.解释器使用Python实现,代码不超过1000行. 本文主要介绍tn的基本语法.高级内容可以参考其他篇章.使用这样的语法,是为了 ...

  5. PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)

    1. 首先要得到该数据库中有哪些表,所用函数 mysql_list_tables(),然后可以将获取的所有表名存到一个数组.----------------该函数由于被弃用   用show table ...

  6. access 数据库创建表SQL语法

    create table R_CAIFA_B13 ( ID AUTOINCREMENT PRIMARY KEY, XB varchar(255), C1 varchar(50), C2 varchar ...

  7. 整理的一些数据库不容易想到的SQL语句实例一

    1.行转列SQL语句 SELECT * FROM ( SELECT [FID] , [Weeks] , [Qty] FROM dbo.TempTable where Weeks is not null ...

  8. 数据库SQL语法到MySQL实操

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname 3.说明:备份sql server--- 创建 ...

  9. {MySQL数据库初识}一 数据库概述 二 MySQL介绍 三 MySQL的下载安装、简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 初识sql语句

    MySQL数据库初识 MySQL数据库 本节目录 一 数据库概述 二 MySQL介绍 三 MySQL的下载安装.简单应用及目录介绍 四 root用户密码设置及忘记密码的解决方案 五 修改字符集编码 六 ...

随机推荐

  1. 字符串匹配--kmp算法原理整理

    kmp算法原理:求出P0···Pi的最大相同前后缀长度k: 字符串匹配是计算机的基本任务之一.举例,字符串"BBC ABCDAB ABCDABCDABDE",里面是否包含另一个字符 ...

  2. 【EntityFramwork--处理数据并发问题】

    EntityFramwork--处理数据并发问题时支持乐观并发,即假定最佳场景(这里是指数据在更新过程中没有发生变化) 具体看<Beginning ASP.NET 4.5 Databases&g ...

  3. uva 11235

    数据结构 RMQ算法   左右左右   写得有点晕了 ..... /****************************************************************** ...

  4. 数组对象Vector用法

    import java.util.Vector; public class VectorTesting { public static void main(String[] args) { Vecto ...

  5. hdu 4699 Editor 模拟栈

    思路:刚开始用STL中的栈,一直RE……,之后改为手动模拟栈操作,在注意点细节就可以了!!! 代码如下: #include<cstdio> #include<cstring> ...

  6. MySQL.. ERROR! The server quit without updating PID file问题解决

    不小心将服务器OS给重启了,再启动数据库的时候,出现了很奇怪的问题 [root@dev run]# service mysql restart ERROR! MySQL server PID file ...

  7. 2016年2月---Javascript

    How to Learn JavaScript Properly 如何正确学习JavaScript Learn Intermediate and Advanced JavaScript 书籍: < ...

  8. lintcode 中等题:permutations II 重复数据的全排列

    题目 带重复元素的排列 给出一个具有重复数字的列表,找出列表所有不同的排列. 样例 给出列表 [1,2,2],不同的排列有: [ [1,2,2], [2,1,2], [2,2,1] ] 挑战 使用递归 ...

  9. lintcode:Remove Nth Node From End of Lis 删除链表中倒数第n个节点

    题目: 删除链表中倒数第n个节点 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点.  样例 给出链表1->2->3->4->5->null和 n = 2. 删除 ...

  10. net中使用母版页

    .net中使用母版页的优点 母版页提供了开发人员已通过传统方式创建的功能,这些传统方式包括重复复制现有代码.文本和控件元素:使用框架集:对通用元素使用包含文件:使用 ASP.NET 用户控件等.母版页 ...