以oracle为例
一、创建表
CREATE TABLE [<用户方案名>.] <表名>
(
<列名1> <数据类型> [DEFAULT <默认值>] [<列约束>]
<列名2> <数据类型> [DEFAULT <默认值>] [<列约束>]
[,…n]
<表约束>[,…n]
)
[AS <子查询>]
(1)<用户方案名>:用户方案是指该表所属的用户,如果省略则默认为当前登录的用户。
(2)DEFAULT:关键字DEFAULT指定某一列的默认值。默认值的数据类型必须与该列的数据类型相匹配,列的长度必须足以容纳这一表达式值。
(3)<列约束>:定义一个完整性约束作为列定义的一部分,该子句的语法为:
[NOT] NULL
[UNIQUE]
[ PRIMARY KEY] 例如:PRIMARY KEY(<列名1>, <列名2>[,…n])
[ REFERENCES [<用户方案名>.] <表名>(<列名>)]
[CHECK(<条件表达式>)]
(4)<表约束>:定义一个完整性约束作为表定义的一部分。
(5)AS <子查询>:表示将由子查询返回的行插入到所创建的表中
/*例子*/
CREATE TABLE XSB
(
学号 char(6) NOT NULL PRIMARY KEY,
姓名 char(8) NOT NULL,
性别 char(2) DEFAULT '男' NOT NULL,
出生时间 date NOT NULL,
专业 char(12) NULL,
总学分 number(2) NULL,
备注 varchar2(200) NULL
);
/*创建XSB表中计算机专业学生的记录备份表,表名为XS_JSJ*/
CREATE TABLE XS_JSJ
AS SELECT *
FROM XSB
WHERE 专业= '计算机' ;
二、修改表
ALTER TABLE [<用户方案名>.] <表名>
[ ADD(<新列名> <数据类型> [DEFAULT <默认值>][列约束],…n) ] /*增加新列*/
[ MODIFY([ <列名> [<数据类型>] [DEFAULT <默认值>][列约束],…n) ] /*修改已有列属性*/
[<DROP子句> ]
说明:
(1)ADD子句:用于向表中增加一个新列,新的列定义和创建表时定义列的格式一样,一次可添加多个列,中间用逗号隔开。
(2)MODIFY子句:用于修改表中某列的属性(数据类型、默认值等)。在修改数据类型时需要注意,如果表中该列所存数据的类型与将要修改的列类型冲突,则会发生错误。例如,原来char类型的列要修改为number类型,而原来列值中有字符型数据“a”,则无法修改。
(3)DROP子句:该子句用于从表中删除指定的字段或约束,语法格式为:
DROP {
COLUMN <列名>
∣PRIMARY [KEY]
∣UNIQUE (<列名>,…n)
∣CONSTRAINT <约束名>
∣[ CASCADE ]
}
ALTER TABLE XS_JSJ
ADD (奖学金等级 number(1),
等级说明 varchar2(40) DEFAULT '奖金1000元');
ALTER TABLE XS_JSJ
ADD (CONSTRAINT "PK_JSJ" PRIMARY KEY(学号) );
ALTER TABLE XS_JSJ
MODIFY (等级说明 DEFAULT '奖金800元' );
ALTER TABLE XS_JSJ
DROP COLUMN 奖学金等级;
ALTER TABLE XS_JSJ
DROP COLUMN 等级说明;
三、删除表
DROP TABLE [<用户方案名>.] <表名> /*删除表*/
DROP TABLE XS_JSJ;
四、插入记录
1、INSERT语句
/*1、*/
INSERT INTO <表名>[(<列名1>,<列名2>,…n)]
VALUES(<列值1>,<列值2>,…n)
INSERT INTO XSB(学号, 姓名, 性别, 出生时间, 专业, 总学分)
VALUES('151114', '周何骏', '男',TO_DATE('19980925','YYYYMMDD'), '计算机', 90);
/*2、*/
CREATE TABLE test
(
姓名 char(20) NOT NULL,
专业 varchar2(30) DEFAULT('计算机'),
年级 number NOT NULL
);
//用INSERT向test表中插入一条记录:
INSERT INTO test(姓名, 年级) VALUES('周何骏', 3);
/*3、*/
INSERT INTO <表名>
<结果集>
/*例子*/
INSERT INTO XSB1
SELECT 学号, 姓名, 专业
FROM XSB
WHERE 姓名= '王林';
2、MERGE语句
在Oracle 12c中有MERGE语句,用于根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在一个表中找到的差异在另一个表中插入、更新或删除行,这种方法可以对两个表进行信息同步。
MERGE INTO <目标表名>
USING <源表名> ON (<条件表达式>)
WHEN MATCHED THEN { UPDATE SET…| DELETE…}
WHEN NOT MATCHED THEN INSERT(…) VALUES(…)
MERGE INTO a
USING XSB ON (a.XH=XSB.学号)
WHEN MATCHED
THEN UPDATE SET a.XM=XSB.姓名, a.XB=XSB.性别, a.CSSJ=XSB.出生时间,
a.ZY=XSB.专业, a.ZXF=XSB.总学分, a.BZ=XSB.备注
WHEN NOT MATCHED
THEN INSERT VALUES(XSB.学号,XSB.姓名,XSB.性别,XSB.出生时间,XSB.专业,XSB.总学分, XSB.备注);
五、删除记录
1、DELETE语句
该语句的功能为从指定的表中删除满足条件的行,若省略WHERE子句,表示删除所有行。
DELETE FROM <表名>
[WHERE <条件表达式>]
/*例子*/
DELETE FROM XSB
WHERE ZXF < 50;
2、TRANCATE TABLE语句
如果确实要删除一个大表里的全部记录,可以用TRUNCATE TABLE语句,它可以释放占用的数据块表空间,此操作不可回退。【谨慎使用!】
TRUNCATE TABLE <表名>
六、修改记录
UPDATE语句可以用来修改表中的数据行
UPDATE <表名>
SET <列名>={<新值>|<表达式>} [,…n]
[WHERE <条件表达式>]
UPDATE XSB
SET 备注='辅修计算机专业'
WHERE 学号='151114';