(二)数据库的创建和操作

本文以Oracle为例,详细介绍了如何创建表,包括用户方案、默认值、列约束和表约束;修改表的ADD、MODIFY和DROP子句;删除表的操作;插入记录的INSERT和MERGE语句;删除记录的DELETE和TRUNCATE TABLE语句;以及如何修改记录。内容全面,适合数据库初学者和开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以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';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值