sql学习-INDEX、DROP、ALTER、 AUTO INCREMENT、VIEW、NULL

创建索引

介绍

在不读取整个表的情况下,索引能更加快速地查找数据。用户无法看到索引,他们只能被用来提高查询效率。更新一个带有索引的表比更新一个不带索引的表花费更多时间,这是由于索引本身也需要更新导致的。因此,理想的做法是仅在经常被搜索的表上创建索引。

语法

创建简单索引,允许重复

CREATE INDEX index_name
ON table_name (column_name);

创建简单索引(在多个列上),允许重复

CREATE INDEX index_name
ON table_name (column_name1, column_name2);
创建唯一索引,不允许重复,唯一索引意味着两个行不能拥有同一个索引值

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

实例

CREATE INDEX PIndex
ON Persons (LastName);
CREATE INDEX PIndex
ON Persons (LastName, FirstName);

DROP

介绍

通过DROP语句可以删除索引、表、数据库

语法1 撤销索引 DROP INDEX

(Oracle)
DROP INDEX index_name;

语法2 撤销表 DROP TABLE

DROP TABLE table_name;

语法3 撤销数据库 DROP DATABASE

DROP DATABASE database_name;

语法4 TRUNCATE TABLE语句

只删除表中内容,不删除表
TRUNCATE TABLE table_name;

ALTER TABLE

介绍

ALTER TABLE 语句用于在已有的表中 添加、删除 或 修改 各个列。

语法1 在表中添加列

ALTER TABLE table_name
ADD column_name data_type;

语法2 删除表中的列

ALTER TABLE table_name
DROP COLUMN column_name;

语法3 改变表中的数据类中

ALTER TABLE table_name
MODIFY column_name data_type;

举例Persons表

P_idLastNameFirstNameCity
1sanzhangBeiJing
2siliShangHai
3wuwangGuangZhou

实例1

"Persons" 表中添加一个名为 "DateOfBirth" 的列

ALTER TABLE Persons
ADD DateOfBirth date;

操作后的表如下:

P_idLastNameFirstNameCityDateOfBirth
1sanzhangBeiJing
2siliShangHai
3wuwangGuangZhou

实例2

改变 "Persons" 表中 "DateOfBirth" 列的数据类型
ALTER TABLE Persons
MODIFY DateOfBirth year;

实例3

删除 "Person" 表中的 "DateOfBirth"ALTER TABLE Persons
DROP COLUMN DataOfBirth;

操作后的表如下:

P_idLastNameFirstNameCity
1sanzhangBeiJing
2siliShangHai
3wuwangGuangZhou

AUTO INCREMENT 字段

介绍

我们通常希望在每次插入新记录时,自动地创建主键字段的值。
AUTO INCREMENT 字段可以在新记录插入到表中的时候生成一个唯一的数字

语法

在 Oracle 中,必须通过 sequence 对象(该对象生成数字序列)创建 AUTO INCREMENT 字段:

CREATE SEQUENCE seq_person
MINVALUE        1
START WITH      1
INCREMENT BY    1
CACHE           10

上面的代码创建一个名为 seq_person 的 sequence 对象,它以1起始且以 1 为单位递增。该对象缓存10个值以提高性能。cache选项规定了为了提高访问速度要存储多少个序列值。

实例

要在 "Persons" 表中插入新记录,我们必须使用 nextval 函数(该函数从 seq_person 序列中取回下一个值):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

上面的 SQL 语句会在 “Persons” 表中插入一条新记录。
“ID” 列会被赋值为来自 seq_person 序列的下一个数字,所以使用了nextval函数;
"FirstName"列 会被设置为 “Lars”;“LastName” 列会被设置为 “Monsen”。

VIEW(试图)

介绍

视图是可视化的表,下面主要介绍怎样创建、更新和删除视图

创建视图 CREATE VIEW

语法1 创建视图

视图是基于SQL语句的结果集的可视化的表。

视图包含行和列,像一个真实的表(实际上并不是)。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。

可以向视图添加WHERE语句、JOIN语句以及SQL函数,也可以呈现数据,就像这些数据来自于某个单一的表一样。

CREATE VIEW view_name AS -- 创建 -- 
SELECT column_name(s)    
FROM table_name
WHERE condition;

视图总是显示最新的数据,每次查询视图时,数据库引擎通过使用视图的SQL语句重建数据。

实例1 创建视图

视图 "Current Product List" 会从 "Products" 表列出所有正在使用的产品

CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName
FROM Products
WHERE Discontinued=No;

实例2 查询实例1中的视图

SELECT * 
FROM [Current Product List];

更新视图 REPLACE VIEW

语法2

CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition;

实例3

"Current Product List" 视图添加 "Category"CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName, Category
FROM Products
WHERE Discontinued=No 

撤销视图 DROP VIEW

语法

DROP VIEW view_name

NULL 值

介绍

NULL值代表遗漏的未知数据。表的列默认是可以存放NULL值的。
下面介绍 IS NULL 和 IS NOT NULL 操作符。

NULL 值

介绍

  • 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下,插入新记录或更新已有的记录。这意味着该字段将以 NULL值的形式来保存。

  • NULL 值的处理方式与其他值不同。

  • NULL 用作未知的 或 不适用 的 值 的 占位符。

  • 无法比较 NULL 和 0,因为它们不等价。

  • 也无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。

  • 必须使用 IS NULL 和 IS NOT NULL 操作符。

实例1 IS NULL

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NULL;

实例2 IS NOT NULL

SELECT LastName, FirstName, Address FROM Persons
WHERE Address IS NOT NULL;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值