一、今日内容
- SQL UNION 操作符
- SQL SELECT INTO 语句
- SQL INSERT INTO ... SELECT语句
- SQL CREATE DATABASE 语句
- SQL CREATE TABLE 语句
- SQL约束
- SQL CREATE INDEX 语句
- SQL DROP
二、具体内容
-
SQL UNION 操作符
SQL UNION操作符用于合并两个或多个SELECT语句的结果。
注:UNION 内部的每个SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个SELECT语句中的列的顺序必须相同。
-
SQL UNION语法
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
注释:默认地,UNION操作符选取不同的值。如果允许重复的值,请使用UNION ALL。
-
SQL UNION ALL语法
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2; 注释:UNION结果集中的列名总是等于 UNION 中第一个SELECT语句中的列名。
-
-
SQL SELECT INTO 语句
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
注:
MYSQL数据库不支持SELECT ... INTO 语句,但支持INSERT INTO ... SELECT语句。 也可以使用以下语句来拷贝表结构及数据: CREATE TABLE 新表 AS SELECT * FROM 旧表
SQL SELECT INTO 语法:
- 复制所有的列插入到新表中:
SELECT * INTO newtable [IN externaldb] FROM table1;
- 只复制希望的列插入到新表中:
SELECT column_name(s) INTO newtable [IN externaldb] FROM table1;
-
SQL INSERT INTO ... SELECT语句
INSERT INTO ... SELECT语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。
SQL INSERT INTO ... SELECT 语法:
-
从一个表中复制所有的列插入到另一个已存在的表中:
INSERT INTO table2 SELECT * FROM table1;
-
只复制希望的列插入到另一个已存在的表中:
INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1;
-
-
SQL CREATE DATABASE 语句
SQL CREATE DATABASE 语句用于创建数据库。
- SQL CREATE DATABASE 语法:
CREATE DATABASE dbname;
-
SQL CREATE TABLE 语句
SQL CREATE TABLE 语句用于创建数据库中的表。
表由行和列组成,每个表都必须有个表名。
-
SQL CREATE TABLE 语法:
CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), ... ) #column_name 参数规定表中列的名称。 #data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等) #size参数规定表中列的最大长度。
-
-
SQL约束
SQL约束用于规定表中的数据规则。
如果存在违反约束的数据行为,行为会被约束终止。
约束可以在创建表时规定(通过CREATE TABLE 语句),或者在表创建之后规定(通过ALTER TABLE 语句)。
-
SQL CREATE TABLE +CONSTRAINT语法:
CREATE TABLE table_name ( column_name1 data_type(size) constraint_name, column_name2 data_type(size) constraint_name, column_name3 data_type(size) constraint_name, .... );
在SQL中,我们有如下约束:
-
NOT NULL - 指示某列不能存储 NULL 值
NOT NULL约束 强制列不接受NULL值。
NOT NULL约束强制字段始终包含值,这就意味着,如果不向字段添加值,就无法插入新纪录或者更新记录
-
添加NOT NULL约束
在一个已创建的表的“Age”字段中添加 NOT NULL约束,如下:
ALTER TABLE Persons MODIFY Age int NOT NULL;
-
删除NOT NULL约束
在一个已创建的表的“Age”字段中删除NOT NULL约束,如下:
ALTER TABLE Persons MODIFY Age int NULL;
-
-
UNIQUE - 保证某列的每行必须有唯一的值。
-
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
-
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
-
CHECK - 保证列中的值符合指定的条件。
-
DEFAULT - 规定没有给列赋值时的默认值。
-
-
SQL CREATE INDEX 语句
CREATE INDEX 语句用于在表中创建索引,,以便更加快速高效地查询数据。
用户无法看到索引,他们只能被用来加速搜索/查询。
-
SQL CREATE INDEX 语法:
在表上创建一个简单的索引,允许使用重复的值:
CREATE INDEX index_name ON table_name (column_name)
-
SQL CREATE UNIQUE INDEX 语法:
在表上创建一个唯一的索引,不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。
CREATE UNIQUE INDEX index_name ON table_name (column_name)
注释:用于创建索引的语法在不同的数据库中不一样。因此,检查您的数据库中创建索引的语法。
-
-
SQL DROP
通过使用DROP语句,可以轻松地删除索引、表和数据库。
-
DROP INDEX 语句
DROP INDEX 语句用于删除表中的索引。
-
用于MS Access的DROP INDEX语法:
DROP INDEX index_name ON table_name
-
用于MS SQL Server 的DROP INDEX语法:
DROP INDEX index_name.index_name
-
用于DB2/Oracle的DROP INDEX语法:
DROP INDEX index_name
-
用于Mysql的DROP INDEX语法:
ALTER TABLE table_name DROP INDEX index_name
-
-
DROP TABLE 语句
DROP TABLE用于删除表。
DROP TABLE table_name
-
DROP DATABASE 语句
DROP DATABASE 语句用于删除数据库。
DROP DATABASE database_name
-
TRUNCATE TABLE 语句
如果仅仅需要删除表内的数据,但并不删除表本身,请使用TRUNCATE TABLE语句:
TRUNCATE TABLE table_name
-