sql ,oracle语法
2013-04-27 15:28
197 查看
完整性规则:
实体完整性和引用完整性 实体完整性是指:主键不能为空。 引用完整性是指,引用要么为空要么必须是引用表的主键;
投影就是从一张表中去我们自己想要的数据属性之 如: TABLE_A =PART(DESC,DEPTNO);在part这张表中只取desc 和 deptno 这两个字段的值就行了。
E-R 图:
entiy-relations:
完全依赖:一个非键列完全依赖于主键;
部分依赖:一个非键列依赖于部分主键 ;
传递依赖:一个非键列依赖于另一个非键列;
处理数据冗余用范式:
第一范式:
第二范式:
满足第一范式:
不从在部分依赖:
第三范式:
满足第二范式:
不从在传递依赖:
在数据表中不建议定义年龄这样的列,可以选择出生日期这样的字段。
列约束: 列约束级别只适合一列,他的定义于列同时进行。出外键和复合主约束外是他约束均可以在列级别上。
colum datatype 【constraint constraint_name】 constration type
ename varchar2(20) not null;
表级别约束: 所有的列级别定义完才能定义表级别的约束,但是除了非空之外。
【constraint constraint_name】 constrint_type(colum,...)
not null(ename,...)
constraint student faulty_id_fk FOREIGN KEY(faulty_id) references faulty(faulty_id);( on delete cascade )
NOT NULL 非空约束不能再表级别出现输入,name varchar2(20) not null;// 没有约束名,
unique 复合唯一键约束只能在表级别上建立。
oracle 隐式的在为一列上创建索引。
检查约束定义了每一行都满足的条件. 表空间 tablespace 定义中的storage 子句的定义。例子:
tablespace TB
pctfree 10 // 空闲百分比
initrans 1
maxtrans 255
storage
(
initial 80
minextents 1
maxextents unlimited
)
ORACLE 中查看用户的表名: select *from USER_TABLES;
默认情况下oracle会为主键添加非空约束; 为表添加注释:
comment on table tablename is '';
comment on column SYS.USER_TABLES.AVG_ROW_LEN is 'The average row length, including row overhead';
向已经存在数据的表中添加心列:
alter table tablename add columname datatype;
修改格式:
alter table tablename modify columname datatype;
删除一列:
alter table tablename drop colum columname;
重新命名一列:
alter table tablename rename colum oldname to newname ;
表的删除:
drop table tablename [cascade constraint ];重新命名数据表:
rename oldtablename to newtablename ;
截断一张表的语法:
truncate table tablename ;
只有delete table 权限的表才能有这个权限:
截断操作会释放表的所有空间:
操作数据表:数据的检索和管理:
用DML语言来操作添加数据 (insert,update,delete);
如果一个语句中有一个引号的话,那么要在其中在加一个引号,作为转意字符,distinct 关键字是取消重复的值:
别名中想保留那个大写字母或者空格的话就用引号.
column 命令:
coulum columname format ...;
运算符: not null /between...and.../like/ in /and /or/
通配符
用途
%
代表0个或者多个字符
-
代表一个字符
如果一个之中本身含有通配符那么,在定义的时候就用escape来转义 where colum ‘%%_’escape '/';
desc 表示降序,asc 升序排列。
case when condition then
when condition then
.....
else
end;
操作数据表:函数的分组
字符操作函数:
upper(); select upper('oracle') from dual; Lower(); substr(colum,expression,r,y)....
ltrim('000222','0')-----'222'
substr('hello',2,3)----- ell
LPAD(str,number,'s');---- 用s 充填str直到总长度为number;
数字函数:
Round(,) round(34.5634,2)-----34.56 round(25.465,-1)----30;
trunc()函数 :
trunc(25.456,2)----25.45
trunc(25.464,-1) ---- 20
abs(-12) = 12 返回绝对值
floor(values)--返回小于等于此值的最大值;
ceil(values)-- 返回大于等于辞职的最小值;
select to_char(sysdate,'dd-mm-yyy') from dual; 把当前日期转化成字符形式 date1-date2 是日数;
日期函数:
MONTHS_BETWEEN(DATA1,DATA2)----返回两个日期之间的月数;
add_months(date,m); add_months('10-MAY-2001',3)--- 10-AUG-2001
NVL 函数将空值转换为由参数指定的实际值。如果是date/char/varchar2/数据类型充当第二个参数时则要将他们放在单引号中;
commiss 是空值 nvl(commiss,0)用0 代替空值commiss
操作数据表:函数的分组
字符操作函数:
upper(); select upper('oracle') from dual; Lower(); substr(colum,expression,r,y)....
ltrim('000222','0')-----'222'
substr('hello',2,3)----- ell
LPAD(str,number,'s');---- 用s 充填str直到总长度为number;
sun(colum) 返回一列中所有值的总值 avg(colum) 返回一列中的所有值的平均值 max(column) 返回最大值 ,min(column) 返回最小值
count() 参数如果是* 则用来计算行数包括非空值,如果是列或是表达式则计算非空值。 所以用它计算是当参数是列是一定要注意,要小心的去用它。
数据表中的行可以被分成不同的组,以便对每个组进行处理. 当查询中有一个分组函数和group by 子句时,select 语句中出现的单个列,必须出现在group by 的子句 中;(很重要,不要写错了!) where可以限制数据但是不可以限制组。 列别名不能出现在group by 子句中。
当一列出现在select子句,且select子句中有分组函数则,分组列必须也要出现在group by子句中,要不然,就会出错。
select DEPTNO,COUNT(*) AS TOTAL FROM EMP WHERE COUNT(*)>2 GROUP BY DEPTNO; 这样写对吗? 当然不对了,切记 where 子句中一定不能限制分组函数。 那么怎么才能限制组了,我们可以用having 来限制。
实体完整性和引用完整性 实体完整性是指:主键不能为空。 引用完整性是指,引用要么为空要么必须是引用表的主键;
投影就是从一张表中去我们自己想要的数据属性之 如: TABLE_A =PART(DESC,DEPTNO);在part这张表中只取desc 和 deptno 这两个字段的值就行了。
E-R 图:
entiy-relations:
完全依赖:一个非键列完全依赖于主键;
部分依赖:一个非键列依赖于部分主键 ;
传递依赖:一个非键列依赖于另一个非键列;
处理数据冗余用范式:
第一范式:
第二范式:
满足第一范式:
不从在部分依赖:
第三范式:
满足第二范式:
不从在传递依赖:
在数据表中不建议定义年龄这样的列,可以选择出生日期这样的字段。
列约束: 列约束级别只适合一列,他的定义于列同时进行。出外键和复合主约束外是他约束均可以在列级别上。
colum datatype 【constraint constraint_name】 constration type
ename varchar2(20) not null;
表级别约束: 所有的列级别定义完才能定义表级别的约束,但是除了非空之外。
【constraint constraint_name】 constrint_type(colum,...)
not null(ename,...)
constraint student faulty_id_fk FOREIGN KEY(faulty_id) references faulty(faulty_id);( on delete cascade )
NOT NULL 非空约束不能再表级别出现输入,name varchar2(20) not null;// 没有约束名,
unique 复合唯一键约束只能在表级别上建立。
oracle 隐式的在为一列上创建索引。
检查约束定义了每一行都满足的条件. 表空间 tablespace 定义中的storage 子句的定义。例子:
tablespace TB
pctfree 10 // 空闲百分比
initrans 1
maxtrans 255
storage
(
initial 80
minextents 1
maxextents unlimited
)
ORACLE 中查看用户的表名: select *from USER_TABLES;
默认情况下oracle会为主键添加非空约束; 为表添加注释:
comment on table tablename is '';
comment on column SYS.USER_TABLES.AVG_ROW_LEN is 'The average row length, including row overhead';
向已经存在数据的表中添加心列:
alter table tablename add columname datatype;
修改格式:
alter table tablename modify columname datatype;
删除一列:
alter table tablename drop colum columname;
重新命名一列:
alter table tablename rename colum oldname to newname ;
表的删除:
drop table tablename [cascade constraint ];重新命名数据表:
rename oldtablename to newtablename ;
截断一张表的语法:
truncate table tablename ;
只有delete table 权限的表才能有这个权限:
截断操作会释放表的所有空间:
操作数据表:数据的检索和管理:
用DML语言来操作添加数据 (insert,update,delete);
如果一个语句中有一个引号的话,那么要在其中在加一个引号,作为转意字符,distinct 关键字是取消重复的值:
别名中想保留那个大写字母或者空格的话就用引号.
column 命令:
coulum columname format ...;
运算符: not null /between...and.../like/ in /and /or/
通配符
用途
%
代表0个或者多个字符
-
代表一个字符
如果一个之中本身含有通配符那么,在定义的时候就用escape来转义 where colum ‘%%_’escape '/';
desc 表示降序,asc 升序排列。
case when condition then
when condition then
.....
else
end;
操作数据表:函数的分组
字符操作函数:
upper(); select upper('oracle') from dual; Lower(); substr(colum,expression,r,y)....
ltrim('000222','0')-----'222'
substr('hello',2,3)----- ell
LPAD(str,number,'s');---- 用s 充填str直到总长度为number;
数字函数:
Round(,) round(34.5634,2)-----34.56 round(25.465,-1)----30;
trunc()函数 :
trunc(25.456,2)----25.45
trunc(25.464,-1) ---- 20
abs(-12) = 12 返回绝对值
floor(values)--返回小于等于此值的最大值;
ceil(values)-- 返回大于等于辞职的最小值;
select to_char(sysdate,'dd-mm-yyy') from dual; 把当前日期转化成字符形式 date1-date2 是日数;
日期函数:
MONTHS_BETWEEN(DATA1,DATA2)----返回两个日期之间的月数;
add_months(date,m); add_months('10-MAY-2001',3)--- 10-AUG-2001
NVL 函数将空值转换为由参数指定的实际值。如果是date/char/varchar2/数据类型充当第二个参数时则要将他们放在单引号中;
commiss 是空值 nvl(commiss,0)用0 代替空值commiss
操作数据表:函数的分组
字符操作函数:
upper(); select upper('oracle') from dual; Lower(); substr(colum,expression,r,y)....
ltrim('000222','0')-----'222'
substr('hello',2,3)----- ell
LPAD(str,number,'s');---- 用s 充填str直到总长度为number;
sun(colum) 返回一列中所有值的总值 avg(colum) 返回一列中的所有值的平均值 max(column) 返回最大值 ,min(column) 返回最小值
count() 参数如果是* 则用来计算行数包括非空值,如果是列或是表达式则计算非空值。 所以用它计算是当参数是列是一定要注意,要小心的去用它。
数据表中的行可以被分成不同的组,以便对每个组进行处理. 当查询中有一个分组函数和group by 子句时,select 语句中出现的单个列,必须出现在group by 的子句 中;(很重要,不要写错了!) where可以限制数据但是不可以限制组。 列别名不能出现在group by 子句中。
当一列出现在select子句,且select子句中有分组函数则,分组列必须也要出现在group by子句中,要不然,就会出错。
select DEPTNO,COUNT(*) AS TOTAL FROM EMP WHERE COUNT(*)>2 GROUP BY DEPTNO; 这样写对吗? 当然不对了,切记 where 子句中一定不能限制分组函数。 那么怎么才能限制组了,我们可以用having 来限制。
相关文章推荐
- 比较常用的Oracle的SQL语句语法
- ORACLE分页查询SQL语法——最高效的分页
- Oracle 学习笔记 15 -- PL/SQL基本语法、流程控制
- ORACLE分页查询SQL语法——最高效的分页
- ORACLE分页查询SQL语法
- ORACLE SQL Loader的详细语法
- ORACLE 常用的SQL语法和数据对象
- Oracle实现分页查询的SQL语法汇总
- 【Oracle】一个SQL语法分析
- ORACLE 常用的SQL语法和数据对象
- ORACLE 多表关联查询SQL 语法结构梳理
- ORACLE 常用的SQL语法和数据对象
- Oracle pl/sql 基础入门语法
- Oracle PL/SQL语法
- ORACLE和SQL语法区别归纳
- ORACLE 常用的SQL语法和数据对象
- ORACLE 常用的SQL语法和数据对象
- ORACLE分页查询SQL语法
- oracle sqlplus及sql语法
- oracle常用sql语法集合