Oracle基础

1、sql基础

1.1 基本概念

数据库对象:

1、表

2、约束条件:保证数据完整性

3、视图:虚表,命名的查询语句

4、索引:加速查询(加快查询的速度) create [unique] index idxname on tablename (col...)  ;   drop index idxname; 索引不可以更改,可删除重建

5、序列:一串连续递增或递减的数字,部长相同(代理键)

6、同义词:一个对象的另外一个叫法(对象的别名)

7、存储过程:用于操作

8、函数:用作复杂运算的,用于计算

9、触发器:由事件触发的存储过程

10、包

1.2 基本的sql语句

1、数据操作语言(DML)

  增: insert into  表名  (字段1, 字段2) values (值1, 值2)

  删:delete from 表名  where 条件

  改:update 表名 set  字段1=值1, 字段2=值2... where条件

2、事务控制语言:

  commit、rollback、savepoint存储点

3、数据定义语言(DDL):

  对对象操作。

  只对数据进行删除:

    truncate :清除表中所有数据 ,不能回滚,释放存储空间  【truncate table customer】; 

    delete    : 可以删除所有行数据,但可以回滚,不释放存储空间。【delete from customer where ...】;

  对表结构进行删除:

          drop : 删除表结构,把整个表都删了【drop table customer

     drop : 删除表字段, 只删除表中某个字段 【alter table customer drop column (字段1, 字段2, ...)

    增列: alter  table  表名  add (字段1   数据类型  [默认值 ], ...)

    修改列的类型和长度: alter table  表名 modify (字段1  类型  默认值)

    删除字段: alter table 表名  drop  column (字段1)

      删除表: drop table  表名  cascade;  删除关联

     rename dd to xx; 重命名表

   添加主键: Alter table tablename add primary key (col ) 

   删除主键: Alter table tablename drop primary key(col)

   

     alter table emp add constraint ename_pk primary key (id, enmae); 复合主键

     

4、权限控制语句(DCL)

  grant授予权限、revoke移除权限

1.3 常用函数:

1、 NVL(字段名,将要赋值的值)、in / not in 、like模糊匹配字符串的值、 is null \ is not null 、between ..and...、 通配符% -(单字符)、 distinct去重;

  逻辑操作符(先not、再and、最后or)、null值作为无穷大来处理、 rownum显示行数量。

   decode( 条件,比较值1,返回值1, ...  默认返回值)

   to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')

        to_date('2004-05-07','yyyy-mm-dd')

2、单行函数:对单行数据进行计算并返回一个值的函数

  initcap()、concat('', '')、length()、

  substr(str, a ,b );  从0开始,a是起始位置,b为长度

  instr(str1, str2, a, b); 返回str1中包含str2的位置

  lpad (列名, 数字,'要补上的字符') 左补

  ltrim()左截取

  replace(x, y [,z]) 返回X中的Y用Z替换后的结果,若没有z,则将X中的y删除

  translate(x, y, z)  将y串中的x替换为z

3、多行函数:对多行数据(一组数据)进行计算返回一个值的函数

-- number函数

  abs(x) 绝对值

  ceil(x) 向上取整、floor(x) 向下取整

  round(x [,y]) 保留y位小数,y位负数舍入到小数点左边相应的位上,y必须为整数 【四舍五入】

  trunc(x [,y])截取值函数,

-- 时间函数

  to_date( '2017-02-12', 'dd-mon-rr');      

  add_months(date, x); 

  sysdate系统时间、current_date 

  last_day() , 指定日期所在月份的最后一天的日期

  localTimeStamp() ;

  months_between(近日期, 以前的日期)

  next_day(日期, 周几)

-- 显示转换

  to_number(char, '')字符--数字;  to_date(char, '') 字符---日期;  to_char(date, '')  时间--字符

  YYYY   YEAR(年的拼写)

  MM     MONTH(月的全名) MON(月的前三个字符)

  DD     DAY(星期的全名) 

  HH24:MI:SS AM              HH12:MI:SS  PM

1.4 常用oracle数据库sql写法

 1 #region 更新客户日志信息
 2     public bool UpdateRecordeCutomerLog(string resultCode, string resultMsg, string Kunner)
 3     {
 4         try
 5         {
 6             string sql = @"update CUSTOMER_SAPLOG  set 
 7                             ishandled = '1', 
 8                             issuccess = :issuccess, 
 9                             resultdesc = :resultdesc, 
10                             handledate = :handledate 
11                           where 
12                             kunner = :kunner and
13                             ishandled = '0'";
14 
15             OracleParameter[] pars = {
16                 new OracleParameter(":issuccess",resultCode),
17                 new OracleParameter(":resultdesc", resultMsg ),
18                 new OracleParameter(":handledate", DateTime.Now),
19                 new OracleParameter(":kunner", Kunner )
20             };
21 
22             int count = DatabaseHelper.ExecuteSql(sql, pars);
23             return count > 0;
24         }
25         catch (Exception ex)
26         {
27             throw new Exception("更新客户日志信息出错:" + ex.Message);
28         }
29     }
30     #endregion
31 
32 
33  #region 查询客户信息
34     public int getCustomer(string cusName)
35     {
36         try
37         {
38             string strSQL;
39             strSQL = string.Format (@"SELECT CustomerName FROM Customer where CustomerName = '{0}'", cusName);
40             int count = DatabaseHelper.ExecuteInt(strSQL);
41             return count;
42         }
43         catch (Exception ex)
44         {
45             throw new Exception("查绚MES客户表发生异常,异常信息:" + ex.Message);
46         }
47 
48     }
49     #endregion
50 
51  #region 判断SalesOrder是否存在
52     public bool GetSalesOrder(string name)
53     {
54         try
55         {
56             string strSQL;
57             strSQL = @"SELECT SalesOrderName 
58                         FROM SalesOrder 
59                         where 
60                             SalesOrderName = '" + name + "'";
61             int count = DatabaseHelper.ExecuteInt(strSQL);
62             return count > 0;
63         }
64         catch (Exception ex)
65         {
66             throw new Exception("查绚SalesOrder表发生异常,异常信息:" + ex.Message);
67         }
68     }
69     #endregion
Sql写法

 

2 视图

视图概念

  1、视图是一张虚拟表,它表示一张表的部分数据或多张表的综合数据,其结构和数据是建立在对表的查询基础上
  2、视图在操作上和数据表没有什么区别,本质区别是:数据表是实际存储记录的地方,然而视图并不保存任何记录。
  3、相同的数据表,根据不同用户的不同需求,可以创建不同的视图(不同的查询语句)
  4、视图的目的是方便查询,一般情况下不能对视图进行增删改
  5、优点:
    - 筛选表中的行,降低数据库的复杂程度
    - 放置未经许可的用户访问敏感数据
  6、创建视图:
    create View vw_TblArea
    as 
    select
      t1.AreaId 城市编号,
      t1.AreaName 城市名称,
      t1.AreaName 省份名称
    from TblArea as t1
    inner join TblArea as t2 on t1.AreaId = t2.AreaPid
  7、使用视图:
    select * from vw_TblArea 或者
    select * from vw_TblArea where 城市编号 > 10; --注意这里只能用视图中显示的名称,如果有别名,只能用别名查询
  8、总结:视图就相当数据库的一个对象,存储这个sql语句;视图只能存储sql查询语句,存储过程可以写任何东西

普通视图

  并不存储数据(虚拟表),访问的是真实表中的数据;

  使用注意事项:1、视图查询不能用ordery by

 总结:  

posted on 2018-02-05 15:20  莫伊筱筱  阅读(183)  评论(0)    收藏  举报