|
二、SQL高级教程
1、SQL SELECT TOP
SELECT TOP 子句用于规定要返回的记录的数目。
SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。
注释:并非所有的数据库系统都支持 SELECT TOP 子句。
sql server|ms access语法
select top number|percent column_name from table_name;
mysql|oracle语法(与top等价)
select Column_name from table_name limit number;
mysql语法
select * from table_name limit number
select * from websites limit 2
oracle语法
select * from table_name where rownum 10)
)
alter table person4 add check(id>10)
alter table person4 drop check(...)
24、SQL DEFAULT
DEFAULT 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。
create table Persons(
id int primary key,
name varchar(20) default "zy"
)
create table orders(
id int primary key,
p_id int not null,
orderdate date default getdate(),
foreign key (p_id) references persons(id)
)
create table persons(
id int primary key,
name varchar(20) default 'zy'
)
alter table persons>
alter table persons>
25、SQL CREATE INDEX
CREATE INDEX 语句用于在表中创建索引。
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
您可以在表中创建索引,以便更加快速高效地查询数据。
用户无法看到索引,它们只能被用来加速搜索/查询。
注释:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
create index index_name on table_name(column_name)
create index index_name on persons(name)
在表上创建一个唯一的索引。不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。Creates a unique index
create unique index index_name on table_name(column_name)
创建多列索引
create index index_name on table_name(column_name)
26、SQL DROP
通过使用 DROP 语句,可以轻松地删除索引、表和数据库。
drop index index_name on table_name
删除表
drop table table_name
删除数据库
drop database database_name
如果我们仅仅需要删除表内的数据,但并不删除表本身,那么我们该如何做呢?
truncate table table_name
27、SQL> ALTER TABLE 语句用于在已有的表中添加、删除或修改列。
增加列
alter table_name add column_name datattype
修改列
alter table table_name modify column column_name datatype
删除列
alter table table_name drop column column_name
28、SQL AUTO INCREMENT
Auto-increment 会在新记录插入表中时生成一个唯一的数字。
要让 AUTO_INCREMENT 序列以其他的值起始,请使用下面的 SQL 语法:
要在 "Persons" 表中插入新记录,我们不必为 "ID" 列规定值(会自动添加一个唯一的值):
oracle的自增
create sequence seq_person
minvalue 1
start with 1
increment by 1
cache 10
29、SQL视图
SQL视图创建
SQL CREATE VIEW
create view view_name as select column_name(s) from table_name where ...
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
您可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。
SQL视图更新
SQL CREATE OR REPLACE VIEW
create or replace view view_name as select column_names from table_name where....
SQL视图删除
drop view view_name
30、SQL日期
当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。
只要您的数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间部分,情况就有点复杂了。
在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。
now() 返回当前的日期和时间
curdate() 返回当前日期
31、SQL NULL值
NULL 值代表遗漏的未知数据。
默认地,表的列可以存放 NULL 值。
本章讲解 IS NULL 和 IS NOT NULL 操作符。
如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。
NULL 值的处理方式与其他值不同。
NULL 用作未知的或不适用的值的占位符。
注释:无法比较 NULL 和 0;它们是不等价的。
无法使用比较运算符来测试 NULL 值,比如 =、< 或 。
我们必须使用 IS NULL 和 IS NOT NULL 操作符。
SQL IS NULL
SQL IS NOT NULL
32、SQL NULL函数
33、SQL通用数据类型
character(n) 字符/字符串.固定长度n.
varchar(n)或 character varying(n) 字符、字符串。可变长度。最大长度n。
binary(n) 二进制串。固定长度n。
boolean 存储TRUE或FALSE值。
varbinary(n)或 binary varying(n) 二进制串。可变长度。最大长度n。
integer(p) 整数(没有小数点)。精度p。
smallint 整数值(没有小数点)。精度5。
integer 整数值(没有小数点)。精度10。
bigint 整数值(没有小数点)。精度19。
decimal(p,s) 精确数值,精度p,小数点后位数s。列如:decimal(5,2)是小数点前有3位,小数点后有2位数的数字。
numeric(p,s)精确值,精度p,小数点后位数s。(与decimal相同)
float(p) 近似数值,尾数精度p。一个采用以10为基数的指数计数法的浮点数。该类型的size参数由一个指定最小精度的单一数字组成。
REAL近似数值,尾数精度 7。
FLOAT近似数值,尾数精度 16。
DOUBLE PRECISION近似数值,尾数精度 16。
DATE存储年、月、日的值。
TIME存储小时、分、秒的值。
TIMESTAMP存储年、月、日、小时、分、秒的值。
INTERVAL由一些整数字段组成,代表一段时间,取决于区间的类型。
ARRAY元素的固定长度的有序集合
MULTISET元素的可变长度的无序集合
XML存储 XML 数据
34、SQL DB数据类型
Microsoft Access 数据类型
MySQL 数据类型
在 MySQL 中,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。
SQL Server 数据类型
Number 类型:
|
|