(SQL是一门语言,基础不好的同学建议还是详细去看书,我这里主要进行一个总结。)
SQL标准由美国国家标准学会订立。主要用于存取数据及查询、更新和管理关系数据库系统。现行所有数据库基本都支持SQL语言,但又对各自SQL语言进行了改进。ORACLE使用的是PL\SQL语言。
a)定义要在数据库存储那些信息的数据库定义语言(DDL)
b)对数据库中的表进行操作的数据操纵语言(DML)
c)对数据库中的表进行检索的数据查询语言(DQL)
d)对数据库中的对象进行权限管理的数据控制语言(DCL)
数据类型 | 取值范围(字节) | 说明 |
---|---|---|
Varchar2 | 0~4000 | 可变长度的字符串 |
Nvarchar2 | 0~1000 | 用来存储Unicode字符集的变长字符串 |
char | 0~2000 | 用于描述定长的字符型数据 |
nchar | 0~1000 | 用来存储Unicode字符集的定长字符串 |
long | 0~2GB | 用来存储变长的字符串 |
2. 数字型
数据类型 | 取值范围(字节) | 说明 |
---|---|---|
Number(p,s) | P最大精度是38位(十进制) | P代表精度,s代表的是保留的小数位数;可以用来存储定长的证书和小数 |
float | 用来存储126位数据(二进制) | 存储的精度是按二进制计算的,精度 |
3. 日期类型
数据类型 | 说明 |
---|---|
date | 用来存储时间和日期,范围在公元前4712年1月1日到公元9999年12月 |
timestamp | 用来存储日期和时间,与date类型的区别就是在显示日期和时间时更精确,date类型的时间精确到秒,而timestamp的数据类型可以精确到小数秒。此外,使用timestamp存放日期和时间还能够显示当前是上午还是下午 |
4. 其他数据类型
数据类型 | 取值范围(字节) | 说明 |
---|---|---|
blob | 最多可以存放4GB | 存储二进制数据 |
clob | 最多可以存放4GB | 存储字符串数据 |
bfile | 大小与操作系统有关 | 用来把非结构化的二进制数据存储在数据库以外的操作系统文件中 |
CREATE TABLE table_name
(
column_name datatype [null|not null]
column_name datatype [null|not null]
...
[constraint]
)
说明:
table_name:在数据库中创建的数据表的名称,在一个数据库中数据表名是不能重复的。
column_name:表中的列名,列名在一个表中也是不能重复的。
datatype:该列存放数据的数据类型。
[null|not null]:允许该列为空或者不允许为空,创建表时默认为不允许。
[constraint]为表中的列设置约束。
ALTER TABLE table_name
ADD column_name | MODIFY colmun_name | DROP COLUMN column_name;
说明:
ADD:用于向表中添加列。
MODIFY:用来修改表中已经存在的列的信息。
DROP COLUMN:删除表中的列,在删除表中的列时经常要加上CASCADE CONSTRAINTS,是要把与该列有关的约束也一并删除掉。
DROP TABLE table_name;
主键约束在每个表中只有一个,但是一个主键约束可以有数据表中多个列组成。
create table categoryinfo
(CategoryId varchar2(10),
CategoryName varchar2(30),
CategoryName varchar2(30),
primary key(CategoryId));
ALTER TABLE table_name
ADD CONSTRAINTS constraint_name PRIMARY KEY (column_name);
说明:
constraint_name:约束的名称。
column_name:主键约束指定数据表中的列名。
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;
说明:
constraint_name:要移除的约束名称,这个约束可以是在表中任意约束的名称。
所有约束移除的方法相同,以下省去。
外键约束可以保证使用外键约束的数据库列与其所引用的主键约束的数据库列一致。在一个数据表中可以有多个。
CONSTRAINT constraint_name FROEIGH KEY (column_name)
REFERENCE table_name (column_name)
ON DELETE CASCADE;
说明:
constraint_name:创建的外键约束名字。
FROEIGH KEY (column_name):指定外键约束的列名。
PEFERENCE:要引用的表名(列名)。
ON DELETE CASCADE:设置级联删除。当主键的字段被删除时外键也被同时删除。
ADD CONSTRAINT constraint_name FOREIGN KEY (column_name)
REFERENCE table_name (column_name)
ON DELETE CASCADE;
CHECK约束是检查约束,能够规定一个列能够输入的值,以保证数据的正确性。
CONSTRAINT constraint_name CHECK(condition);
ADD CONSTRAINT constraint_name CHECK(condition);
UNIQUE约束称为唯一约束,可以设置在表中输入的字段值都是唯一的。
- 创建:CONSTRAINT constraint_name UNIQUE(column_name);
- 修改:ADD CONSTRAINT constraint_name UNIQUE(column_name);
称为非空约束
NOT NULL
; CREATE TABLE table
(a1 varchar2(10),
a2 varchar2(10) NOT NULL);
ALTER TABLE table_name
MODIFY column NOT NULL;
INSERT INTO table_name(column_nmae1,column_name2,...) VALUE (data1,data2...);
INSERT INTO table_name1 (column_nmae1,column_name2,...) select column_name2... FROM table_name2;
CREATE TABLE table_name AS SELECT column_name1, column_name2,... From source_table;
UPDATE table_name SET column_name1=data1,column_name=data2,...[where condition];
DELETE FROM table_name [where condition];
SELECT column_name1, column_name2,... FROM table_name WHERE [condition];
TRUNCATE TABLE table_name;
MERGE [INTO] table_name1
USING table_name2
ON ( condition )
WHEN MATCHED THEN merge_update_clause
WHEN NOT MATCHED THEN merge_insert_clause;
说明:
table_name1:要修改或添加的表。
table_name2:参照的更新的表。
Condition:table_name1和table_name2之间的一些关系,或其他的一些条件。
Merge_update_clause:如果和参照表table_name2中的一些条件匹配,那么就执行的更新操作SQL语句。
merge_insert_cluse:如果条件不匹配,就执行增加操作的SQL语句。
类似于WIN的复制粘贴功能的“覆盖”,即如果有了就覆盖,如果没有就增加,这样的操作。但是可以通过省略 merge_update_clause或merge_insert_clause中的一个来达到其他的目的。