面向对象告一段落,重新捡起来SQL server的知识,幸好数据库语言都差不多,让我重新学习Oracle的时候并没有想象中的费劲,只需要复习起来旧知识,再融合Oracle特有的语法就足矣。
废话不多说,进入正题,此文章按照网上的资料+个人理解编写,尽量做到通俗易懂,以便日后忘了能够见文知意。
- 数据类型
注:SQL语句本身不区分大小写,但是出于可读性的目的,我们通常会将SQL语句的关键字全部大写,非关键字小写。
- 数字类型
- NUMBER
NUMBER(P,S)
-P 表示数字的总位数。
-S 表示小数点后面的位数。
例: 如有sal列,定义如下
sal NUMBER(6,2)
表示sal列中的数据,整数位为4位,小数位为2位,最大值取9999.99。
- 字符类型
- CHAR
CHAR(N)
-N 表示占用的字节数。最大长度是2000字节。
例:ename列定义如下
ename CHAR(20)
表示ename列中最多可存储20个字节的字符串,并且占用的空间是固定的20字节。
- VARCHAR2
可变长度的字符类型,使用方式参考如上
根据其中保存的数据长度,占用的空间是变化的。
与CHAR的优缺点:
CHAR: 固定字节长度,读取速度快,占用空间大。
VARCHAR2:可变的字节长度,读取速度慢,占用空间小。
CHAR与VARCHAR2之间具体看项目要求进行取舍、
- DATE 日期时间型
用于定义日期时间的数据,长度为7个字节。
默认格式是:DD-MON-RR,例如:11-APR-71
例:有列horedate定义如下
hiredate DATE
表示hiredate列中存放的是日期数据。
- 数据定义语言(DDL)
- 创建数据表 CREATE
语法格式:
CREATE TABLE mytable(
id NUMBER(4);
name VARCHAR(20)
)
上述代码创建了一个表,其中有两个列,id列值为4位数字,name列为20字节的字符串。
- 查看表结构 DESC 表名
在此不赘述,没有特殊用法。
- 删除表 DROP TABLE 表名
删除整个表的操作。
- 默认值 DEFAULT (数据库中的所有数据类型的默认值都是NULL,可以通过DEFAULT子句给列指定默认值)
CREATE TABLE mytable(
sex CHAR(1) DEFAULT'M'
)
上述代码表示创建了一个表,表里有一个sex列,列的默认值为M。(字符串区分大小写)
- 非空 NOT NULL (约束条件,确保字段值不为空)
CREATE TABLE mytable(
sex CHAR(1) NOT NULL
)
上述代码表示创建了一个表,表里有一个sex列,列的值不能为空。
- 修改表
1.修改表名(RENAME)
RENAME 旧表名 TO 新表名
2.修改表结构(ALTER)
1)添加新的字段(列) 给表增加字段可以使用ALTER TABLE 的ADD子句实现
语法
ALTER TABLE 表名 ADD (列 数据类型)
例:给表mytable增加一列hiredate,并设置默认值为当前日期。
ALTER TABLE mytable (hiredate DATE sysdate)
2)删除字段 (列) 给表删除字段可以使用ALTER TABLE的DROP子句实现。
ALTER TABLE 表名 DROP 列名
3)修改字段(列) 修改字段烈性可以使用ALTER TABLE的MODIFY子句实现
语法
ALTER TABLE 表名 MODIFY(
列名 数据类型 约束&默认值
)
- 数据操纵语言(DML)
- 向表中插入数据 INSERT
语法
INSERT INTO 表名
(列名)
VALUES
(值)
注:
列名可无序,不填默认为给所有列插入数据,对应的值必须对应填写的列进行插入,如为填写列,则按照表中的列顺序进行填写。
- INSERT(续)
例1: 使用默认的日期格式插入记录
INSERT INTO mytable
(birth)
VALUES
('01-SEP-03')
例2:使用自定义日期格式插入记录
INSERT INTO matable
(birth)
VALUES
(TO_DATE('2009-09-01','YYYY,MM-DD'))
- 修改(更新)表中数据 UPDATE 表名 SET 列名=值 WHERE 条件
例:
UPDATE mytable SET salary = 6000 WHERE id = 1
注:修改表中数据要使用
WHERE添加过滤条件,这样才回只将满足条件的记录进行修改,否则则修改全表中的所有数据。可以一次性修改多列(字段)
- 删除表中数据(DELETE)
例:
DELETE FORM mytable WHERE id = 1
注:
字符串区分大小写!!