oracle学习笔记(一)------oracle基础知识和基本sql语句

最近一直在学习oracle,总结了一些学习笔记,我会陆续贴出来,和网友交流 ,希望能给一些初学者提供帮肋,也希望能有高手指点。

 

oracle数据库逻辑结构
  包括 表空间,段,区间和数据块
    表空间:所有的表的集合,分为System系统表空间,Users用户表空间,Temp临时表空间,tools工具表空间
    段:把表空间进一步划分成段,不同的段存放的数据不同,如,数据段,临时段,回滚段,索引段等
    区间:将段进一步划分成区间,区间是分配单元,对数据进行分配
    块:区间中又划分成块,

从逻辑上讲,一个数据库由若干个表空间组成,每个表空间中有若干个表,每个表又可以分为数据库段(Data Segment)和索引段,每个段中

又可以分为若干个数据库区间(Extent),每个数据区间由若干个数据块组成。由此可见,数据块是最基本的存储单位,而表空间,表,段,区

间以及模式对象则是逻辑组织的构成成员 
 
------------------
SQL语言的命令通常分为四类
1、数据定义语言(DDL)
创建、修改或删除数据库中各种对象,包括表、视图、索引等。
命令:CREATE TABLE , CREATE VIEW, CREATE INDEX、ALTER TABLE ,
DROP TABLE , DROP VIEW, DROP INDEX

2、查询语言(QL)
按照指定的组合、条件表达式或排序检索已存在的数据库中数据,
不改变数据库中数据。
命令:SELECT…FROM…WHERE…

3、数据操纵语言(DML)
对已经存在的数据库进行元组的插入、删除、修改等操作
命令:INSERT、UPDATE、DELETE

4、数据控制语言(DCL)
用来授予或收回访问数据库的某种特权、
控制数据操纵事务的发生时间及效果、对数据库进行监视
命令:GRANT、REVOKE、COMMIT、ROLLBACK
  
-----------------------------------
用户名scott/tiger 可进行式例数据库的操作
-----------------------------------
select table_name from user_tables; 查看有那些用户表
  (最后的分号是结束并执行)
-----------------------------------
修改用户密码

在dos下输入D:/>sqlplus /nolog
conn / as sysdba
show user;
alter user sys identified by oracle; 
最后这条语句是修改sys账户的密码为oracle

insert into aa(id,name,birthday)
values (01,'lily',SYSDATE);
SYSDATE 当前系统时间日期函数,oracle中函数中如果没有参数,后面的括号可省略
-----------------
insert into aa(id,name,birthday)
values (01,'lily',TO_DATE('2006-5-6','yyyy-MON-DD'));
TO_DATE('日期的字符串','日期时间的格式') 添加指定日期字段,必须用这个日期转换函数
-----------------

set linesize 500 设置行宽度为500
set pagesize 100 设置每页显示100行
run 执行刚才最后执行的sql语句 (可简写为r或/)

alter session set nls_date_format='YYYY-MM-DD';
         修改会话,使表中存储日期的格式是 YYYY-MM-DD
 
desc 表名 :查看表结构 
ed: 如果用户输入sql语句有错误,可以输入ed打开一个afiedt.buf文件,里面存放着上一回输入的sql语句
    修改后,输入/可重复执行刚才改过的sql语句
------------------
使用绑定变量,给数据库中插入多个记录
insert into aa(id,name,sal)
values (&employeeno,'&employeename',&employeesal);
  回车后会提示给这三个变量输入值
然后用run或r或/可重复执行给表中插入记录的操作
-----------------------------------
从其它表中复制数据
 insert into aa(id,name,address)
      select id,name,address
      from bb where address='jl';
----------------------------------
更新
update aa set name='zhangsan' where address='jl';
----------------------------------
clear screen 清屏
----------------------------------
commit; 提交事务
rollback; 回滚事务

当第一条sql(DML:数据操纵语言)语句被执行时,事务便开始了
当出现下面的事件时,事务便结束:
-commit or rollback被执行时,把前面的事务提交,事务结束
-DDL(数据定义语言) or DCL(数据控制语言) 被执行时(自动提交)
-用户退出
-系统中止

事务保存点:可以有选择的返回到事返的某个保存点
比如,执行一条sql语句, update......
   savapoint 事务保存点名1
    执行其它sql语句
   rollback to 事务保存点名1   (回滚到“事务保存点名1”)
----------------------------------
null值在算术表达式中的使用
 如果在查询中,进行运算时,在运算中的字段有空值,它的结果为空
  select id,name, sal*10+comm form s
       这里假如某人的comm字段的值为空,它运算的结果就为空
  解决办法是这种运算用函数去做
------------------
select id||''||name as employees form emp
  这里的||和sqlserver中的+一样,字符串连接符,功能是两个字段连接在一起
------------------------------------
select * from s where name='AA';
  这里的where中的查询条件的内容必须为大写,不然找不到任何结果

select name address sal from aa where sal between 1000 and 1500;

select name address sal from aa where sal in(1000,1200,1500);

select name address sal from aa where name like 'Z%';   (%代表多个字符)

select name address sal from aa where name like 'Z_';   (_代表一个任意字符)

select name address sal from aa where address is null;  (显示所有address为空的记录)

限制重复行
select distinct name from aa;

你可能感兴趣的:(oracle,sql,数据库,sqlserver,insert,语言)