SQLServer-Day5
UNION 操作符
UNION
操作符用于合并两个或多个SELECT语句的结果集
请注意,UNION
内部的SELECT
语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT
语句中的列的顺序必须相同。
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
Tips:默认地,UNION
操作符取不同的值,如果允许重复的值,需使用UNION ALL
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION
结果集中的列名总是等于UNION中
第一个SELECT
语句中的列名
原始表:
Employees_China:
E_ID | E_Name |
---|---|
01 | Zhang, Hua |
02 | Wang, Wei |
03 | Carter, Thomas |
04 | Yang, Ming |
Employees_USA:
E_ID | E_Name |
---|---|
01 | Adam, John |
02 | Bush, George |
03 | Carter, Thomas |
04 | Gates, Bill |
例:
列出所有在中国和美国的不同的雇员名
1 | SELECT E_Name |
结果:
E_Name |
---|
Zhang, Hua |
Wang, Wei |
Carter, Thomas |
Yang, Ming |
Adam, John |
Bush, George |
Gates, Bill |
注释:这个命令无法列出在中国和美国的所有雇员,因为UNION
命令只会选取不同的值。
SELECT INTO语句
用于创建表的备份复件
SELECT INTO
语句从一个表中选取数据,然后把数据插入另一个表中
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
例:下面的例子会制作“Persons”表的备份复件
1 | SELECT * |
IN子句可用于向另一个数据库中拷贝表:
1 | SELECT * |
如果我们希望拷贝某些域,可以在SELECT语句后列出这些域:
1 | SELECT LastName, FIrstName |
带有WHERE子句:
1 | SELECT LastName, FirstName |
表示从“Pesons”表中提取居住在“Beijing”的人的信息,创建了一个带有两个列的名为“Persons_backup”的表
被连接的表
1 | SELECT Persons.LastName, Orders.OrderNo |
表示创建一个名为“Persons_Order_Backup”的新表,其中包含了从Persons和Orders两个表中的内容。
CREATE DATABASE 语句
用于创建数据库
CREATE DATABASE database_name
例:创建一个名为my_db的数据库
1 | CREATE DATABASE my_db |
可以通过CREATE TABLE
来添加数据库表
CREATE TABLE 语句
用于创建数据库中的表
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
…
)
数据类型(data_type) 规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型
数据类型 | 描述 |
---|---|
interger(size) int(size) smallint(size) tinyint(size) |
仅容纳整数,在括号内规定数字的最大位数 |
decimal(size, d) numeric(size, d) |
容纳带有小数的数字 “size”规定数字的最大位数。“d”规定小数点右侧的最大位数 |
char(size) | 容纳固定长度的字符串(可容纳字母、数字以及特殊字符) 在括号中规定字符串的最大长度 |
varchar(size) | 容纳可变长度的字符串(可容纳字母、数字以及特殊字符) 在括号中规定字符串的最大长度 |
date(yyyymmdd) | 容纳日期 |
例:
创建”Persons”表,其中包含5个列,列明分别是“Id_P”, “LastName”, “FirstName”, “Address”以及“City”
1 | CREATE TABLE Persons |
空的表类似这样
Id_P | LastName | FirstName | Address | City |
---|---|---|---|---|
可使用INSERT INTO语句向空表写入数据
SQL 约束(Constraints)
约束用于限制加入表的数据的类型
可以在创建表时规定约束(通过CREATE TABLE
语句),或者在表创建之后也可以(通过ALTER TABLE
语句)
主要有以下几种约束:
- NOT NULL
- UNIQUE
- PRIMARY KEY
- FOREIGN KEY
- CHECK
- DEFAULT
NOT NULL约束
NOT NULL
约束强制列不接受NULL
值
NOT NULL
约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录
1 | CREATE TABLE Persons |