SQL基础(3)
SQL FULL JOIN
(1)SQL FULL JOIN关键字
只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
(2)语法
SELECT column_name(s)
FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name注释:在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN。
(3)实例
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
FULL JOIN Orders
ON Persons.Id_P=Orders.Id_P
ORDER BY Persons.LastName
2.SQL UNION 和SQL UNION ALL
(1)SQL UNION操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
(2)SQL UNION语法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
(3)SQL UNION ALL语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
(4)使用SQL UNION命令
SELECT E_Name FROM Employees_China
UNIONSELECT E_Name FROM Employees_USA
(5)UNION ALL
UNION ALL命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。
SQL Statement 1
UNION ALL
SQL Statement 2
(6)使用UNION ALL命令
SELECT E_Name FROM Employees_China
UNION ALLSELECT E_Name FROM Employees_USA
3.SQL SELECT INTO
SQL SELECT INTO 语句可用于创建表的备份复件。
(1)SELECT INTO 语句
SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
(2)SELECT INTO 语法
您可以把所有的列插入新表:
SELECT *
INTO new_table_name [IN externaldatabase]
FROM old_tablename
或者只把希望的列插入新表:
SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_tablename
(3)SELECT INTO 实例-制作备份复件
下面的例子会制作 "Persons" 表的备份复件:
SELECT*INTOPersons_backup
FROM Persons
IN 子句可用于向另一个数据库中拷贝表:
SELECT*INTOPersonsIN'Backup.mdb'
FROM Persons
如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:
SELECTLastName,FirstNameINTOPersons_backup
FROM Persons
(4)SELECT INTO 实例-带有WHERE子句
我们也可以添加 WHERE 子句。
下面的例子通过从 "Persons" 表中提取居住在 "Beijing" 的人的信息,创建了一个带有两个列的名为 "Persons_backup" 的表:
SELECTLastName,FirstnameINTOPersons_backup
FROM PersonsWHERECity='Beijing'
(5)SELECT INTO 实例-被连接的表
从一个以上的表中选取数据也是可以做到的。
下面的例子会创建一个名为 "Persons_Order_Backup" 的新表,其中包含了从 Persons 和 Orders 两个表中取得的信息:
SELECTPersons.LastName,Orders.OrderNoINTOPersons_Order_BackupFROMPersonsINNER JOINOrdersONPersons.Id_P=Orders.Id_P
4.SQL CREAT DATABASE
(1)CREAT DATABASE 语句
CREATE DATABASE 用于创建数据库。
(2)SQL CREAT DATABASE 语法
CREATE DATABASE database_name
(3)SQL CREAT DATABASE 实例
CREATE DATABASE my_db
可以通过 CREATE TABLE 来添加数据库表。
5.SQL CREAT TABLE
(1)CREAT TABLE 语句
CREAT TABLE语句用于创建数据库中的表。
(2)CREAT TABLE 语法
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:
| 数据类型 | 描述 |
|---|---|
|
仅容纳整数。在括号内规定数字的最大位数。 |
|
容纳带有小数的数字。 "size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。 |
| char(size) |
容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。 在括号中规定字符串的长度。 |
| varchar(size) |
容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。 在括号中规定字符串的最大长度。 |
| date(yyyymmdd) | 容纳日期。 |
(3)CREAT TABLE 实例
本例演示如何创建名为 "Person" 的表。
该表包含 5 个列,列名分别是:"Id_P"、"LastName"、"FirstName"、"Address" 以及 "City":
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符。
空的 "Persons" 表类似这样:
| Id_P | LastName | FirstName | Address | City |
|---|---|---|---|---|
可使用 INSERT INTO 语句向空表写入数据。
6.SQL CONSTRAINTS
(1)SQL 约束
约束用于限制加入表的数据的类型。
可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。
我们将主要探讨以下几种约束:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
在下面的章节中,我们会详细讲解每一种约束。
7.SQL NOT NULL 约束
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 语句强制 "Id_P" 列和 "LastName" 列不接受 NULL 值:
CREATE TABLE Persons
(
Id_P intNOT NULL,
LastName varchar(255)NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
8.SQL UNIQUE 约束
(1)SQL UNIQUE约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
(2)SQL UNIQUE CONSTRAINT ON CREAT TABLE
下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 UNIQUE 约束:
MYSQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),UNIQUE (Id_P))
MYSQL/SOL Server/Oracle/MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULLUNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用下面的 SQL 语法:
MYSQL/SOL Server/Oracle/MS Access:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName))
(3)SQL UNIQUE CONSTRAINT ON ALTER TABLE
当表已被创建时,如需在 "Id_P" 列创建 UNIQUE 约束,请使用下列 SQL:
MYSQL/SOL Server/Oracle/MS Access:
ALTER TABLE PersonsADD UNIQUE (Id_P)
- 如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:
ALTER TABLE PersonsADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
(4)撤销UNIQUE 约束
如需撤销 UNIQUE 约束,请使用下面的 SQL:
MYSQL:
ALTER TABLE PersonsDROP INDEX uc_PersonID
SOL Server/Oracle/MS Access:
ALTER TABLE PersonsDROP CONSTRAINT uc_PersonID
SQL基础(3)的更多相关文章
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- 第一章 SQL基础
第一部分:SQL基础1. 为什么学习SQL自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献.档案.资料.数据等):在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到 ...
- SQL基础--> 约束(CONSTRAINT)
--============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...
- SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)[转]
--====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY ...
随机推荐
- 【P2405】方格取数问题加强版(费用流)
考虑如何建图.还是老样子先拆点,然后把每两个点之间连接两条边,一条流量为1,费用为-点权,处理是否走这个点.一条流量无限,没有费用,因为哪怕一个点选过了,它的地方还是可以重复走过去的. 然后把经由一个 ...
- review15
不同区域的星期格式 不同国家的星期的简称或全称有很大的不同.如果想用特定地区的星期格式来表示日期中的星期,可以用format的重载方法: format(Locale locale, 格式化模式,日期列 ...
- OSGi类加载问题
项目中遇到的JVM难点 ——启动OSGi容器时,出现永久代内存不够.内存泄露 ——OSGi找不到类路径问题. ——线程死锁问题. 问题一:OSGi类内存问题 其次,从内存用量来看, ...
- C++中++i与i++
#include "stdafx.h" #include "string" #include "iostream" #include &qu ...
- github-如何设置SSH Key
设置SSH Key 在注册好github账号后,打开你的电脑桌面上的一个文件夹,这就建立了一个本地工作库,在里面点击鼠标右键,找到你的git bash here-点击开,如图所示:进行下面操作: 输入 ...
- python中常用的文件和目录操作(一)
常用的文件操作 1. 打开文件 open,它是一个内置函数,可以直接调用 语法:file object = open(file_name, [access_mode]),这里我们会创建一个file对象 ...
- IntelliJ IDEA配置tomcat【全程详解】
相关博客:IntelliJ IDEA创建Maven+SSM+Tomcat+Git项目[全程详解] 创建好web项目后,需要将项目部署到Tomcat中运行. 接下来,图文解析IntelliJ IDEA如 ...
- 识别设备是IOS还是安卓
var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > - ...
- python--*args和**kwargs可变参数
先来看个例子: #! /usr/bin/env python #coding=utf-8 def foo(*args, **kwargs): print('args=',args) print('kw ...
- xml获取指定节点的路径
引用自http://www.w3school.com.cn/xpath/xpath_syntax.asp XPath 语法 Previous Page Next Page XPath 使用路径表达式来 ...