当前位置:文档之家› sql总结个人心得

sql总结个人心得

第一范式:如果关系模式R中的每一个关系r的属性值都是不可分的,那么称R是第一范式。简称R是INF。
第二范式:所有表必须符合第一范式。
表中所有非主属性都是完全函数依赖于任一候选键。
即将产生部分依赖的非主属性和它所以来的主属性单独组成一个关系模式,其余的属性 构成另一个关系模式。
第三范式:表中每一个非主属性都不传递依赖于任何候选键。
注意:部分依赖和传递依赖是产生冗余和异常的两个重要原因。
ORACLE:数据库主要由三种类型的文件组成:数据文件(.DBF)、日志文件(.LOG)、和控制文件(.CTL)、另外还包括一些参数文件。
连接数据库:connect system/gxa
Distinct:在需要删除查询结果中相同的行时使用关键字DISTINCT,即只允许在查询结果集中出现不同的值:当需要返回查询结果中的所有行时使用关键字ALL。
*:检索所有的列的符号。
count:返回找到的记录数。 select count(*) from 表名
注意:*表示查询表中所有记录数.
select count(列名) from 表名。
select count(distinct 列名) from 表名
group by:在group by 字句中还可以使用运算符:ROLLUP 和CUBE 他们都是将查询结果中返回 附加摘要值。两者之间的主要不同之处在于CUBE运算符返回的信息要比ROLLUP运算符 多。
理解Having:select 语句中的子句处理顺序:where 只能接收FROM 子句输出的数据,而Having子句则可以接收来自Group by ,where 或from 子句的输入。
字符串函数:
SUBSTR 该函数可以从一个字符串截取制定的一段字符来生成一个新的字符串。
例子:select 客户姓名,客户地址,SUBSTR(客户地址,1,3) as 所在城市 from 客户信息表
例子2:select 客户姓名,客户地址, 所在城市 from 客户信息表 where '朝阳区'=SUBSTR( 客户地址,4,3)
LOWER把指定的字符串或表达式转换成小写字母。
upper把指定的字符串或表达式转换成大写字母。
例子:select lower('ABC') as 小写, upper('abc') as 大写 from dual




数字函数:
SQL> select abs(-12) from dual; //返回指定数值的绝对值。

ABS(-12)
----------
12

SQL> select ceil(12.3) from dual;//返回大于或等于VALUE的最小整数。

CEIL(12.3)
----------
13

SQL> select floor(12.1) from dual;//返回小于或等于VALUE的最大整数。

FLOOR(12.1)
-----------
12

SQL> select cos(23) from dual;//求余弦值

COS(23)
----------
-.53283302

SQL> select cosh(23) from dual;//求反余弦值

COSH(23)
----------
4872401723
SQL> select exp(23) from dual;返回以e为底的指数值

EXP(23)
----------
9744803446

SQL> select ln(23) from dual;返回va

lue的自然对数

LN(23)
----------
3.13549422

SQL> select log(23) from dual;
select log(23) from dual
*
第 1 行出现错误:
ORA-00909: 参数个数无效


SQL> select log(12,10) from dual;//返回value的以10为底的对数

LOG(12,10)
----------
.926628408

文件操作命令:
SAVE 命令是用于用户输入的SQL语句或Pl/SQL程序保存到一个文件中,当用户瑕疵需要时,可直接使用该文件,而不需要重新输入。
例子:save d:\xiang.txt 将查询的语句保存在这个文件中:
@ d:\xiang.txt 调用这个文件中的SQL语句。
get:使用get可以把一个命令文件的 内容放进缓冲区。
例子; sql>get d:\xiang.txt;
1* select ename,job from scott.emp
sql>run 就可以执行上面的sql语句
sql>start d:\xiang.txt 也是执行文件里面的SQL语句。

其它命令:sql>clear screen;清除显示屏
用户:create user xiang //创建用户名
identified by chang;//创建用户密码
查看数据库版本:select instance_name,host_name,version,archiver from v$instance;
查看系统中所有的用户:select username,created from dba_users;
表:
alter table xiang drop column name;//修改表的机构,把列名未name的删除了。表中就 不存在name这个字段。
alter table xiang set unused (列名) 在表中把某一列设置成无用。
rename xiang to yumin;//把表名字(xiang)修改成yumin
//添加注释:
SQL> comment on table yumin is 'wo ai ni qin ai d ';

注释已创建。//在表yumin 添加注释。


sql>select comments from user_col_comments where table_name='yumin' and column_name='adress';//查询在表yumin的adress的列上添加注释。
________________________________________________
以&开始的替代变量
SQL> select empno ,ename,sal from scott.emp where sal >=&v_salary;
输入 v_salary 的值: 1500
原值 1: select empno ,ename,sal from scott.emp where sal >=&v_salary
新值 1: select empno ,ename,sal from scott.emp where sal >=1500
sql>edit d:\job.txt;//编辑
______________________________________________________
以&&开始的替代变量sek
SQL> select ename,job,&&v_col from scott.emp
2 order by &v_col;
输入 v_col 的值: sal
原值 1: select ename,job,&&v_col from scott.emp
新值 1: select ename,job,sal from scott.emp
原值 2: order by &v_col
新值 2: order by sal

ENAME JOB SAL
---------- --------- ----------
SMITH CLERK 800
JAMES CLERK 950
ADAMS CLERK 1100
WARD SALESMAN 1250
MARTIN SALESMAN 1250
MILLER CLERK 1300
TURNER SALESMAN 1500
ALLEN SALESMAN 1600
CLARK

MANAGER 2450
BLAKE MANAGER 2850
JONES MANAGER 2975

ENAME JOB SAL
---------- --------- ----------
SCOTT ANALYST 3000
FORD ANALYST 3000
KING PRESIDENT 5000

--------------------------------------
accept hide 命令的格式和选项
ACCEPT PW PROMPT '提示语言:' hide select ename,sal,job from scott.emp where '&pw'='MANAGER'
pw:为变量名
prompt:正文
format:格式模式
hide:系统不显示用户输入的值。 }
-------------------------------------------------
表维护:
创建索引:create index empcon_ename_idx on empcon(ename);
empcon:表名
ename:列名
idx:对象类型
select index_name,index_type,table_name,uniqueness from user_indexes;//查询索引。
select index_name,table_name,column_name,column_position from user_ind_columns;//查询索引基于哪些表基于哪 些列。
约束:alter table 表名 drop constraint 约束名
外键:FOREIGN KEY
alter table xiang add constraint xiang_studentno_fk foreign key (studentno)
references yumin(classno);
修改xiang这张表,给这张表增加一个外键,在xiang这张表的studentno字段添加外键
,引用第二张表yumin中字段classno 作为关联。
alter table empcon drop constraint empcon_deptno_fk 删除表(empcon)中的外键。
外键(foreign key)后可以跟两个子句:on delete set null 和 on delete cascade 子句.
约束的维护: alter table xiang disable constraint xiang_classno_fk cascade;(关闭 约束)
其中:CASCADE 子句用来关闭存在有完整性关系的约束。
DISABLE 子句既可以用在create table 语句中,也可以用在alter table 语句中。
打开约束的命令:
alter table xiang enable constraint 约束名 ;
查看所操作过的约束相关信息:
SQL> select owner,constraint_name,constraint_type,table_name,
r_constraint_name,status from
2 user_constraints where table_name='deptcon';
删除相关约束:alter table 表名 drop constranint 约束名 cascade;

----------------------------------------------------------------------------------
视图:
视图是用所看到的(数据)图像,这个图像并不是真正的数据。
例子:
create view salary_limit
as
select * from scott.emp
where sal>=800
with check option constraint salary_limit_ck;
with check option constraint(子句含义:所有通过该视图进行的DML操作都不能 违反了在创建视图时用where子句所限定的条件

。)
------------------------------------------------------------------------------
序列号:

SQL> create sequence supplier_s_code //在supplier这张表的s_code这个字段创建序列号
2 start with 2000 //开始创建序列号从2000开始
3 increment by 10 //以10 的累加
4 maxvalue 20000 //序列号最大值
5 nocache //说明将没有序列号被Oracle 服务器预分配和保存在内存中
6 nocycle; //当序列号达到最大值和最小值后将不再产生序列号
删除序列号:
drop sequence 序列号的名;



---------------------------------------------------------
同义词:
create synonym s for xiang;//未xiang这张表创建同义词s
创建同义词的格式:
create [public] synonym 同义词名 for 对象名;
public:系统中所有的用户都可以访问所创建的同义词。
删除同义词:drop synonym s;格式:drop synonym 同义词的名字;
-----------------------------------------------------------------
用户管理:
创建用户以及口令:
create user 用户名 identified by 口令;
数据库管理系统中的权限:
常用的系统权限:
create user :创建其他用户
drop user : 删除其他用户
select any table:查询任何用户的表和视图的权力
drop any table: 删除任何模式中所创建的表
create session:连接数据库
create table:在用户自己的模式中创建表
create view:在用户自己的模式中创建视图
create sequence:在用户自己的模式中创建序列号
create procedure:在用户自己的模式中创建过程co
怎样将系统权限授予用户:
grant create session to dog;//给用户dog授权连接数据库(登陆)<必须切换到system用户下>
grant select any table,create table,create view to yumin,cat;
(向yumin和cat 两个用户授权)
select tablespace_name from dba_tablespaces;查看数据库中有几个表空间。

SQL> alter user cat default tablespace users
2 quota 20m on users;//修改用户cat在默认表空间给users下,并且cat用户最多可以在表 空间users上使用20M的磁盘空间.


怎样查看用户具有的系统权限:
select * from session_privs;//查看用户拥有的全部系统权限sele


撤销yumin和cat两个用户的授权(revoke): revoke select any table,create table,create view ,create session from yumin,cat;
创建角色:create role 角色名(animal)//创建animal角色
grant select any table,create table,create view to animal ;
//授权给角色animal
grant animal to yumin,cat,pig;

再以角色animal分别给cat,yumin,pig用户授权


相关主题
文本预览
相关文档 最新文档