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

    技术2022-05-11  61

    最近一直在学习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 /nologconn / as sysdbashow 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 设置行宽度为500set 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;


    最新回复(0)