您的位置:首页 > 数据库 > Oracle

Oracle数据库开发之sql基础

2017-03-29 13:54 507 查看
表空间是在数据库中开辟的一段空间,是数据库的逻辑存储空间

表空间与数据文件表空间

表空间的分类:永久性表空间和临时表空间和undo表空间

查看用户表空间:dba_tablespaces、user_tablespaces数据字典      

                                 dba_users、user_users数据字典

desc  dba_tablespaces;

select  tablespaces_name  from  dba_tablespaces;

desc  user_tablespaces;

select  tablespaces_name  from  user_tablespaces;

select  default_tablespaces,temporary_tablespace  from dba_users  where  username='system';
ALTER USER  system  DEFAULT  TABLESPACES  system;

创建表空间:永久表空间:create tablespace  test1_tablespace

                                                datafile  'testfile.dbf'  size 10m;

                        临时表空间:create temporary  tablespace  temptest1_tablespace

                                                 tempfile 'tempfile.dbf'  size 10m;

desc  dba_data_files

select  file_name  from  dba_data_files  where  tablespace_name='TEST1_TABLESPACE';

select  file_name  from  dba_temp_files  where  tablespace_name='TEMPTEST1_TABLESPACE';

修改表空间的状态:设置连机或脱机状态
ALTER  TABLESPACE tablespace_name  ONLINE|OFFLINE;

select status from dba_tablespaces where tablespace_name='TEST1_TABLESPACE';

 修改表空间的状态:设置只读或可读写状态

ALTER  TABLESPACE tablespace_name  READ ONLY|READ WRITE; 

 添加数据文件:alter tablespace  test1_tablespace  add datafile 'test2_file.dbf'  size  10m;    

 select  file_name from dba_data_files where tablespace_name='TEST1_TABLESPACE';        

删除数据文件:alter tablespace  test1_tablespace  drop datafile 'test2_file.dbf';

删除表空间:drop tablespace test1_tablespace including contents;

=======================================================================================

表:

二维结构

约定:每一列数据必须具有相同的数据类型

            列名唯一

            每一行数据的唯一性

字符型、数值型、日期型、其他类型

char类型定长,有可能浪费空间;nvarchar2和varchar2都可以表示可变长度的字符,其中nvarchar2用于存储Unicode格式的数据,更适合存储中文数据。

number(p,s)类型,p是有效位数,保留s位小数,float(n)存储二进制数

date类型:日期类型

BLOB类型,CLOB类型

创建表:

create  table  userinfo

( id number(6,0),

   username  varchar2(20),

   userpwd  varchar2(20),

   email  varchar2(20),

    regdate  date );    

 desc userinfo 

添加字段:ALTER  TABLE  table_name  ADD  column_name  datatype;

更改字段的数据类型 :ALTER  TABLE  table_name  MODIFY  column_name  datatype;

删除字段:ALTER  TABLE  table_name  DROP  COLUMN  column_name;

 修改字段名:ALTER  TABLE  table_name  RENAME  COLUMN  column_name TO  new_column_name;

修改表名:RENAME  table_name  TO  new_table_name;            

删除表中的全部数据:TRUNCATE  TABLE  table_name;也叫截断表,并不删除表,速度很快

删除表:DROP  TABLE  table_name;使表不存在

操作表中的数据:

添加数据:INSERT  INTO  table_name(column1,column2,......)VALUES(value1,value2,......);

复制表数据:在建表时创建:CREATE  TABLE  table_new  as  SELECT  column1,...|* FROM  table_old;

                        在添加时复制:INSERT  INTO  table_new(column,....)SELECT  column1,....|* FROM  table_old;

修改表数据:UPDATE语句:UPDATE  table_name  SET  column1=value1,....WHERE  conditions;无条件更新与有条件更新

删除数据:无条件删除:DELETE  FROM  table_name;                         

                    有条件删除:DELETE  FROM  table_name  WHERE  列名=‘?’;

================================================================================================

约束:定义规则,确保完整性

主键约束:列内容不能重复,且不能为空
外键约束:内容必须是所关联主键的值其中的值
空值约束:不能为空
默认约束:当插入时没有赋值,会使用默认值
唯一约束:列的内容都是唯一的,不以重复
检查约束:列的内容必须符合要求。如CHECK (JOB IN(‘Engineer’,’Sales’,’Manager’));

 

非空约束:

在创建表时设置非空约束:CREATE  TABLE table_name(column_name datatype NOT NULL,...);

在修改表时添加非空约束:ALTER  TABLE  table_name  MODIFY  column_name  datatype  NOT  NULL;

在修改表时去除非空约束:ALTER  TABLE  table_name  MODIFY  column_name  datatype  NULL;

主键约束:

在创建表时设置主键约束:CREATE  TABLE  table_name(column_name datatype PRIMARY KEY,....);  CREATE  TABLE  userinfo_p1(id number(6,0),username varchar2(20),userpwd varchar2(20), CONTRAINT  pk_id_username primary key(id,username));

在修改表时添加主键约束:ALTER  TABLE  table_name  ADD  CONSTRAINT  constraint_name  PRIMARY  KEY(column_name1,.....);

更改约束的名称:ALTER  TABLE  table_name  RENAME  CONSTRAINT  old_name  TO  new_name;

删除主键约束:禁用 | 启用约束:ALTER  TABLE  table_name DISABLE | ENABLE  CONSTRAINT  constraint_name;

                                     删除约束:ALTER  TABLE  table_name  drop  constraint  new_pk_id;

                                                         ALTER  TABLE  table_name  DROP  PRIMARY  KEY[CASCADDE];

 外键约束:

在创建表时设置外键约束:CREATE  TABLE table1(column_name datatype REFERENCES table2(column_name),.....);

                                             CONSTRAINT  constraint_name  FOREIGN  KEY(column_name)  REFERENCES  table_name(column_name) [ON DELETE CASCADE];

在修改表时添加外键约束:ALTER  TABLE  table_name ADD  CONSTRAINT  contraint_name  FOREIGN  KEY(column_name) REFERENCES table_name(column_name)[ON DELETE CASCADE];

删除外键约束: ALTER  TABLE  table_name DISABLE | ENABLE  CONSTRAINT  constraint_name;

                             ALTER  TABLE  table_name   DROP  CONSTRAINT  constraint_name;

唯一约束:在创建表时设置唯一约束:列级设置唯一约束:CREATE TABLE table_name(column_name datatype UNIQUE,....);

                                                                    表级设置唯一约束:CONSTRAINT  constraint_name  UNIQUE(column_name);

                    在修改表时添加唯一约束:ALTER  TABLE  table_name ADD  CONSTRAINT  constraint_name  UNIQUE(column_name);

                          删除唯一约束:禁用:ALTER  TABLE  table_name DISABLE | ENABLE  CONSTRAINT  constraint_name;

                                                      删除:ALTER  TABLE  table_name  DROP CONSTRAINT  constraint_name;

检查约束:

在创建表时设置检查约束:列级设置检查约束:CREATE  TABLE  table_name(column_name  datatype  CHECK(expressions),...);

                                                表级设置检查约束:CONSTRAINT  constraint_name  CHECK(expressions);

在修改表时添加检查约束:ALTER  TABLE  table_name  ADD  CONSTRAINT  constraint_name  CHECK(expressions);

删除检查约束:禁用:ALTER  TABLE  table_name  DISABLE | ENABLE  CONSTRAINT  constraint_name;

                            删除:ALTER  TABLE  table_name  DROP CONSTRAINT  constraint_name;

==============================================================================================================

查询:

基本查询语句:

COLUMN column_name HEADING new_name

COLUMN column_name FORMAT dataformat

COLUMN column_name CLEAR

distinct关键字:去除列中重复的记录

表达式=操作数+运算符

算数运算符(+,-,*,/)

比较运算符(>,>=,<,<=,=,<>)

逻辑运算符(and,or,not)

模糊查询:

通配符的使用:(_,%)

 使用like查询:   一个_只能代表一个字符

                          %可以代表0到多个任意字符

范围查询:BETWEEN.....AND

                    IN/NOT IN

对查询结果进行排序:ORDER BY....DESC/ASC;

case....when语句:1.CASE column_name WHEN value1 THEN result,.....[ELSE result] END

                                    2.select username,case when username='aaa'  then '计算机部门'

                                                                                  when username='bbb' then '市场部门' else ‘其他部门’end as 部门

                                                                  from users;

select user,case when salary<800 then '工资低'

                                when salary>5000 then '工资高' end as 工资水平

                    from users;

===========================================================================================

decode函数的使用:

decode(column_name,value1,result1,....defaultvalue);

select username,decode(username,'aaa','计算机部门','bbb','市场部门','其他') as 部门 from users;

==============================================================================================================

pl/sql是过程语言(Procedural  Language)与结构化查询语句(sql)结合而成的编程语言

pl/sql是对sql的扩展

支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构

可用于创建存储过程、触发器和程序包,给sql语言的执行添加程序逻辑

与Oracle服务器和Oracle工具紧密集成,具备可移植性、灵活性和安全性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: