oraclesql表结构语句
① oracle怎么通过sql查看表的结构
分两种方法:
1、在命令窗口通过如下语句:
desc表名;
② 用SQL输出Oracle表结构(包括主键、外键)
with M as
(SELECT t.table_name,
t.column_NAME,
t.DATA_TYPE || '(' ||t.DATA_LENGTH || ')' datatype,
t1.COMMENTS
FROM User_Tab_Columnst,
User_Col_Comments t1,
USER_TABLES T2
WHERE t.table_name =t1.table_name
AND t.column_name = t1.column_name
AND T.TABLE_NAME = T2.TABLE_NAME
ORDER BY T1.table_name),
P as (select P.table_name,
C.column_name
from user_constraints P,
user_cons_columns C ,
USER_TABLES T
whereP.constraint_type='P'
andP.table_name = T.TABLE_NAME
andP.constraint_name=C.constraint_name),
R as
(Select a.Owner fowner,
a.Table_Name ftable,
c.Column_Name fcolumn,
b.Owner mowner,
b.Table_Name mtable,
d.Column_Name mcolumn,
c.Constraint_Name fname,
d.Constraint_Name mname
From User_Constraints a,
user_Constraints b,
user_Cons_Columns c,
user_Cons_Columns d
Where a.r_Constraint_Name =b.Constraint_Name
And a.Constraint_Type = 'R'
And b.Constraint_Type = 'P'
And a.r_Owner = b.Owner
And a.Constraint_Name = c.Constraint_Name
And b.Constraint_Name = d.Constraint_Name
And a.Owner = c.Owner
And a.Table_Name = c.Table_Name
And b.Owner = d.Owner
And b.Table_Name = d.Table_Name)
select M.table_name,
M.colUMN_NAME,
M.datatype,
M.comments,
(select count(*)
from P
where P.table_name=M.table_name
and P.column_name=M.column_name
) as是否主键,--0表示是非主键,非0表示是主键
(select mtable
from R
where R.ftable=M.table_name
and R.fcolumn=M.column_name
and rownum=1
) as外键表
from M;
③ 怎么用sql语句查询表的结构
下边是SQLSERVER查询数据字典的语法,如果相查某一个表,只需要加where条件一个表名的连接即可。
SELECT TOP 100 PERCENT --a.id,
CASE WHEN a.colorder = 1 THEN d.name ELSE '' END AS 表名,
CASE WHEN a.colorder = 1 THEN isnull(f.value, '') ELSE '' END AS 表说明,
a.colorder AS 字段序号, a.name AS 字段名, CASE WHEN COLUMNPROPERTY(a.id,
a.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 标识,
CASE WHEN EXISTS
(SELECT 1
FROM dbo.sysindexes si INNER JOIN
dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN
dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN
dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK'
WHERE sc.id = a.id AND sc.colid = a.colid) THEN '√' ELSE '' END AS 主键,
b.name AS 类型, a.length AS 长度, COLUMNPROPERTY(a.id, a.name, 'PRECISION')
AS 精度, ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) AS 小数位数,
CASE WHEN a.isnullable = 1 THEN '√' ELSE '' END AS 允许空, ISNULL(e.text, '')
AS 默认值, ISNULL(g.[value], '') AS 字段说明, d.crdate AS 创建时间,
CASE WHEN a.colorder = 1 THEN d.refdate ELSE NULL END AS 更改时间
FROM dbo.syscolumns a LEFT OUTER JOIN
dbo.systypes b ON a.xtype = b.xusertype INNER JOIN
dbo.sysobjects d ON a.id = d.id AND d.xtype = 'U' AND
d.status >= 0 LEFT OUTER JOIN
dbo.syscomments e ON a.cdefault = e.id LEFT OUTER JOIN
dbo.sysproperties g ON a.id = g.id AND a.colid = g.smallid AND
g.name = 'MS_Description' LEFT OUTER JOIN
dbo.sysproperties f ON d.id = f.
id AND f.smallid = 0 AND
f.name = 'MS_Description'
where d.name = '表名'---查询固定表,如果所有,去掉where条件
ORDER BY d.name, a.colorder
ORACLE数据库使用USER_TAB_COLUMNS表
select TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
DATA_LENGTH
from USER_TAB_COLUMNS
④ Oracle基本SQL语句
删除表:
drop table 表名
修改表结构:
删除列:
alter table 表名 drop column 列名
增加列:
alter table 表名 add(列名 数据类型, 列名 数据类型.....)
修改列的数据类型:
alter table 表名 modify(列名 数据类型)
主键(Primary Key--PK):主键在表中能够唯一表示一条记录的字段,主键唯一并且不能为空。
外键(Foreign Key--FK):外键主要用来维系多表之间的关联关系,一张表中的外键,必定是另一张表中的主键。
增加主键:
alter table 表名 add constraint 键名 primary key(列名)
删除键:
alter talbe 表名 drop constraint 键名
增加外键:
alter table 表名 add constraint 键名 foreign key(列名) references 关联表名(列名)
插入语句:
insert into 表名 (列1, 列2.....) values(值1, 值2.....)
如果要插入的是一个表中的全部字段数据:
insert into 表名 values(值1, 值2......)
更新表中数据:
update 表名 set 列=值, 列=值....... [where 条件]
删除表中数据:
delete from 表名 [where 条件]
删除表中数据还可以使用truncate
truncate table 表名
注意,在更新和删除数据时,一定要在后面写条件,除非要做删除全表数据或更新全表数据。
truncate和delete的区别:如果使用delete删除表中数据,会产生日志文件,删除的数据是可以恢复,所以相对来说删除速度慢,truncate正好相反,在删除表中数据时不会产生日志文件,数据不可恢复,所以相对来说删除速度快。
sysdate:表示当前的系统日期和时间
在Oracle中提供了一张叫做al表,它是一张临时表,主要用来做测试用。
在Oracle中默认的日期格式是:“日-月-年”
伪列:
rowid:表示一条记录在内存中的地址
rownum:行号,通常用来做分页
在查询表的时候还可以给表起别名,在表名后空一格,然后写别名,在查询表中字段时可以使用“表别名.字段名”的形式。
除了给表起别名外,还可以给列起别名,两种形式,可以在列名后用as来加入别名,也可以在列后空一格,然后写别名。
在查询的时候默认列名都是大写字母,可以在起别名的时候用双引号括起来,就可以加入小写字母的别名了。
在Oracle中的字符串连接符是“||”
在查询的时候还可以对列进行四则运算,
查询10年之后学生表中每名学生的年龄:
查询学生表中每名学生出生后一个月(假定一个月为30天)的日期:
在查询语句中还可以加入查询条件:
select 列名from 表名 where 查询条件
在条件中可以加入关系运算符:< > <= >= != =
查询班级号为“1”的所有学生信息:
还可以在条件中使用逻辑运算符:and or
查询数学成绩和英语成绩都及格的学生信息
在查询条件中还可以使用in来匹配查询条件
查询数学成绩为60,70,80的学生信息:
在查询条件中,可以使用between...and来限制查询范围
查询英语成绩在80到90之间的学生信息:
在查询条件中,还可以使用is null 和 is not null来判断是否为空值。
查询有数学成绩,并且英语成绩在80分以上的学生信息:
通配符:
_ 表示任意一个字符
% 表示0到n个任意字符
查询学生表中,姓张并且姓名是两个字的同学:
查询学生表中不姓张的同学信息:
⑤ oracle sql语句 分为哪些
Oracle SQL语句分类
SQL(Structured Query Language)即结构化查询语句,应用程序与数据库交互的接口
集数据操作、数据定义、数据控制等功能于一体
ANSI先后制定推出了SQL-89、SQL-92、SQL-99标准
oracle SQL 语句主要分为一下四类:
DML(Data Mannipulation Language)数据操纵语言:查询、操纵数据表资料行
SELECT : 检索数据库表或视图数据
INSERT : 将数据行新增至数据库表或视图中
UPDATE : 修改表或视图中现有的数据行
DELETE : 删除表或视图中现有的数据行
注意:DML语句不会自动提交事务!
DDL(Data Definition Language)数据定义语言:建立、修改、删除数据库中数据表对象
CREATE TABLE : 创建表
ALTER TABLE : 修改表
DROP TABLE : 删除表
注意:DLL语句会自动提交事务!所以:DML语句事务提交之前可以回滚,DDL语句不能回滚事务
DCL(Data Control Language)数据控制语言:用于执行权限授予与收回操作
GRANT : 给用户或角色授予权限
REVOKE : 收回用户或角色的所有权限
TCL(Transactional Control Language)事物控制语言:维护数据的一致性
COMMIT :提交已经进行的数据库改变
ROLLBACK : 回滚已经进行的数据改变
SAVEPOINT : 设置保存点,用于部分数据改变的取消
⑥ oracle建表语句例子有哪些
oracle数据库的建表语句,具体语法如下:
语法说明:
tablename:在数据库中需要创建的表的表名称,在同一个数据库中的表名称是不能重复的;
column_name:创建的表的列名称,列名称在一个表中也是不能重复的;
datatype:创建的表的列中存放数据的数据类型;
null,not null:允许该列为空或者不为空,默认情况下是不为空;
constraint:为表中的列设置约束,如主键约束,外键约束,唯一约束等。
(6)oraclesql表结构语句扩展阅读
逻辑结构
它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同义词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。
总之,逻辑结构由逻辑存储结构(表空间,段,范围,块)和逻辑数据结构(表、视图、序列、存储过程、同义词、索引、簇和数据库链等)组成,而其中的模式对象(逻辑数据结构)和关系形成了数据库的关系设计。
段(Segment):是表空间中一个指定类型的逻辑存储结构,它由一个或多个范围组成,段将占用并增长存储空间。
其中包括:
数据段:用来存放表数据;
索引段:用来存放表索引;
临时段:用来存放中间结果;
回滚段:用于出现异常时,恢复事务。
范围(Extent):是数据库存储空间分配的逻辑单位,一个范围由许多连续的数据块组成,范围是由段依次分配的,分配的第一个范围称为初始范围,以后分配的范围称为增量范围。
数据块(Block):
是数据库进行IO操作的最小单位,它与操作系统的块不是一个概念。oracle数据库不是以操作系统的块为单位来请求数据,而是以多个Oracle数据库块为单位。
⑦ oracle 查看表结构,表里的数据
1、首先,我们打开PLSQL工具连接到需要进行数据比对的ORACLE数据库。
⑧ Oracle 的SQL语句怎么编写
select a.类别 一级类别, b.类别 二级类别, c.类别 三级类别, d.类别 四 级类别 from 表名 a
join 表名 b on b.上级类别=a.类别
join 表名 c on c.上级类别=b.类别
join 表名 d on d.上级类别=c.类别
where a.类别 not in (select 上级类别 from 表名)
⑨ oracle数据库如何查询表结构
在sql*plus中可以用DESC命令显示表结构,例如:DESC EMP
在PL/SQL中,通过左边的浏览器查看就可以了,例如下图:
⑩ 怎样写批处理文件,导出oracle11 的所有表结构成sql语句!语句怎么写!
oracle 11.2版本不能导出空表 调整deferred_segment_creation参数
SQL> show parameter deferred
deferred_segment_creation 参数为true时无法导出空表,所以修改为false
SQL> alter system set deferred_segment_creation=FALSE;