本人超级菜鸟,在网上看到了这个: oracle命令建立主键外键 1、创建一张学生表 [sql] SQL> create table t_stu( 2 stuid number(10) primary key, 3 stuname varchar2(20) not null, 4 stusex varchar2(2) default '男' check(stusex in('男','女'))); Table created Executed in 0.547 seconds 2、创建一张课程表 [sql] SQL> create table t_couse( 2 couseid number(10) primary key, 3 cousename varchar2(20) not null, 4 cousetype varchar2(4)); www.2cto.com Table created Executed in 0.062 seconds 3、创建一张学生课程成绩表(包括主外键) [sql] SQL> create table t_score( 2 scoreid number(10) primary key, 3 stuid number(10) references t_stu(stuid), 4 couseid number(10), 5 constraint fk_couseid foreign key(couseid) 6 references t_couse(couseid) 7 on delete cascade); Table created 请问:第三张表中的 3 stuid number(10) references t_stu(stuid), 这一行的作用是什么??? 和接下来的 4 couseid number(10), 5 constraint fk_couseid foreign key(couseid) 6 references t_couse(couseid) 7 on delete cascade); 有什么区别?? 第七行 7 on delete cascade 的作用是什么??? 为什么不能我把 4 couseid number(10), 5 constraint fk_couseid foreign key(couseid) 6 references t_couse(couseid) 写在同一行中会出现错误:此处不允许约束条件说明。 如:couseid number(10) constraint fk_couseid foreign key(couseid) references t_couse(couseid) , 谢谢!!!
获取表的主键列名 SQL
select * from user_cons_columns
where constraint_name = (select constraint_name from user_constraints
where table_name = ‘BST_FAVORITE‘ and constraint_type =‘P‘);
记住:表名要大写
执行试试,该表所有主键都查出来了,主键列名就在第四列
获取表的所有列名 SQL
select * from table_name where rownum=1
这条sql语句相信大家都知道什么意思.
用jdbc编程查主键列名,可以通过以上第一条语句来查询.
还有一种方法可以查询表的主键列名,是使用jdbc编程方式,代码如下:
DatabaseMetaData dbmd= conn.getMetaData();
rs = dbmd.getPrimaryKeys(null,null,tableName.toUpperCase()); //要将表名转为大写才能正确取出主键来
while (rs.next()) {
columnName=rs.getString(4);
System.out.println(columnName);
}
用jdbc获取表的所有列名,也可以通过以上第二条sql语句来获取,具体代码如下:
String sql="select * from table_name where rownum=1";
stm=conn.createStatement();
rs=stm.executeQuery(sql);
rs.next();
ResultSetMetaData metadata=rs.getMetaData();
for(int i=1;i<=metadata.getColumnCount();i++) {
System.out.println(metadata.getColumnName(i)); }