Oracle数据库开发之sql基础

表空间是在数据库中开辟的一段空间,是数据库的逻辑存储空间

表空间与数据文件表空间

表空间的分类:永久性表空间和临时表空间和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工具紧密集成,具备可移植性、灵活性和安全性


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、 概念介绍: 数据库DATABASE、表TABLE、列COLUMN、行ROW、关键字PRIMARY KEY、索引INDEX 二、 数据类型: LONG RAM:超长大型数据(照片、图形、描述等不定长数据)。 DATE:包含日期和时间。 INTEGER:有符号全长二进制整数(31位精度)。 SMALLINT:有符号半长二进制整数(15位精度)。 DECIMAL (p[,q]): 有符号的封装了的十进制小数,最多有 p 位数,并假设有 q 位在小数点右边。 如果省略 q ,则认为是 0。 FLOAT:有符号双字浮点数。 CHAR(n): 长度为 n 的定长字符串。 VARCHAR(n): 最大长度为 n 的变长字符串。 CHAR (5) 和 VARCHAR2(5)的区别是 CHAR不足5位后面自动加上空格,VARCHAR2不加 三、 列的非空属性NOT NULL: 如果一个列具有非空属性,则在给该表增加、修改数据时必须保证该列有内容,否则会出错。 如果一个列允许为空,该列可以不放任何内容,即空值(在SQL中书写为NULL),空值不是空格。 如果一个列内容为空值,则该列不等于任何值(包括空值)。 例如:列SAGE1、SAGE2的内容为空,列SAGE3内容为20,则下面的逻辑表达式全部为NULL:SAGE1=SAGE2、SAGE1SAGE2、SAGE1=SAGE3、SAGE3>SAGE1。下面的逻辑表达式全部为真:SAGE1 IS NULL、SAGE3 IS NOT NULL。下列表达式全为空:sage1+100,sage2+sage3 四、 特殊约定: 1. 所有SQL语句以分号结束不是以回车换行结束。 2. 中扩号代表选项,就是其中的内容可有可无。 3. 下面讲的列名在很多情况下也可以是表达式。 4. 表名格式:[用户名.]表名,例如:user001.student,如果不注名用户,则说明是当前登陆的用户的表。 五、 建表或视图语句CREATE 格式: CREATE TABLE 表名 (列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL], 列名 类型 长度 [NOT NULL]); CREATE VIEW 视图名 AS SELECT ……; CREATE TABLE 表名 AS SELECT ……; Create table as 经常在修改一个表前备份该表,而且运行速度很快且不用提交 例如:Select table a_student as select * from student; Create table as 还可以用来复制表结构 例如:假设有三个表

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值