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

Oracle基本语法知识点

2016-03-14 19:54 232 查看

解锁scott用户:alter user  scott account unlock

重新给scott用户修改密码:alter user scott identified by 123456

 

DML:增加  删除  
修改  
查询 (CRUD)

单行注释:   --  

多行注释:  /*   */

 

查询 :                            select          *         from        表名 
      
【where +条件表达式】

                                          查询    全部数据     从      哪个表中        满足条件的(可不写)

                                                   (可换成列名)



多条件查询:               select    *    from    表名    where   条件1
   and/or   条件2    and/or   条件3;

                                                                                                           and: 并且   or: 或者

修改数据库数据:      update     表名   set       字段名(列名)
 = 值    where     字段名 =值;

                                                                    设置           哪一列     的值为          满足条件的

增加一行的数据:      insert      into     表名(字段名1,字段名2,字段名3)
    values(值1,值2,值3); 

                                       可只加入对应字段的值,若不写字段名则必须加入所有字段值,没有的用null代替

 

删除一行数据:         delete     from     表名      where  字段名 =

                                        删除                                      满足条件的字段

 

 

DDL:(数据库定义语言):表的定义

创建一张表:    create   table    表名( 列名1
 数据类型  约束,   列名2 数据类型  
约束);

 

删除表:             drop      table    表名

 

修改表:

增加列:           alter    table  表名  add(列名数据类型
[默认值] [约束],列名数据类型..);

修改列属性:   alter   table  表名   modify (列名  数据类型约束,列名  数据类型  约束)

修改字段名:   alter   table  表名   rename   column   旧名字   to   新名字

删除多列:       alter   table 表名  
drop (列名1,列名2)

删除单列:       alter   table  表名   drop【column列名】/【(列名)】  任意一种

SQL 查询(复杂查询)
排序:         select    *    from    表名    [条件]     order
by
                     列名                      [排序规则,不写默认升序]
                                                                可不写                      逗号隔开,则相当于先分组       升序(asc)  降序(desc)

                                                                                                再组内排序,先排前面那个

 

多条件判断:        select字段名,

case

when 条件1 then   输出语句

when 条件2 then   输出语句

else  输出语句

end
 from 表名

给表取别名:直接在表后面跟没名字

给列取别名:用as关键字来转换

 

 

对数据分组:       select      字段名,     单行函数     from     表名 
   group by     字段名     having条件

                                                                例: sum(sal)

函数:  sum(总和)  avg(平均数)   count(总个数)  max(最大值)   min(最小值)

 

伪列:  rowid  rownum

Rowid伪劣能在整个数据库中唯一标识一条记录,是一个唯一标识

Rownum 是我们数据库查询的时候数据库自动分配的一个行号:实际上的那个我们执行sql的时候得到的是一张临时表

 

子查询:
就是把我们查询到的数据当作一张临时表(子表)或者条件结果, 我们以这张子表为基础再进行查询

返回结果:

1、 一行一列:这个我们可以直接当作结果,放到where后面使用

2、  多行一列:可以当作结果放到where后面使用,也可以当临时表使用

3、  多行多列:这种只能当作临时表使用,这时候就需要我们能连接两张表:(两种表中应该有同一个字段,值类型相同)

分页查询
就是对我们的数据进行分段的提取,保证每次加载的数据量一致: 一般语法比较笨:伪劣组合子查询进行查找  (三层嵌套)

  select   tt.*   from  ( select   t.*,   rownum  as  t_rownum  from  ( select  *  from emp e order by hiredate) t ) tt  where  tt. t_rownum >= 11 and  tt.t_rownum  <=15

连接查询

定义:所谓的连接查询针对的是多张表(最少2张),把两张表的数据联系在一起:

 

内连接查询:     select    t1.*,    t2.*    from   表名1    t1   inner   join   表名2 
 t2   on   
连接条件

 

左连接查询  left  join

left join的特点  左边的表示主表:我们查询的数据以左边表的数据为准,而inner join则是两张表对比显示都有的才显示

 

右连接查询  right  join

    左和右实际上是相对的

数据类型

         number: 直接定义个数字数据类型(包含整数)

         number(3) : 定义了一个整数,里面只能放3位

         number(6,2): 定义了一个浮点数,一共6位,小数点后面2位

 

字符类型


varchar2  
varchar  
char  


不加n就是4000位长度 加了n就是2000

 

对于数据库设计表来说,必须满足三大范式

1、属性不可再分:我们设计的字段必须代表单独的意思,不可以同时代表几个意思

2、属性不能部分依赖主属性

3、属性不能间接依赖主属性

                   主属性:此表中必须有一个属性能保证一条数据和其他所有数据不一样

                   (主键)  唯一不重复

约束
唯一约束:关键字:unique ,该字段插入的值绝对不能重复,也就是数据库只能出现一次

 

非空约束:关键字:not null 这个字段的属性的值绝对不能为空

 

主键约束:关键字  primary key  非空约束+唯一约束

任何数据库表【一定】有主键  默认的格式 表名_id   news_id(主键)

 

检查约束:关键字:  check    对这个字段插入值的时候进行值的检查(是否符合我检查约束的规则)

   例: author_sex  varchar2(4) check (author_sex  in('男',  '女') )

 

外键约束:    alter      table   主表名    add     constraint    外键名 
  foreign    key     (   主表的字段名   )    references    从表名   (   从表字段名
  )

                         操作                                  添加           约束        [随便取]           外键                                                          关联                [必须是唯一的]

 

条件关键字:between … and 

      select    *   from    表名    where    字段名    between   值1
  and    值2 

                                                                                  等价于 在值1与值2之间

 

条件关键字:in

       select    *    from   表名    where   字段名     in    (
 值1,   值2,   值3.... )

                                                                                  等价于a=值1,    b=值2,    c=值3

数据类型

         number: 直接定义个数字数据类型(包含整数)

         number(3) : 定义了一个整数,里面只能放3位

         number(6,2): 定义了一个浮点数,一共6位,小数点后面2位

 

字符类型


varchar2   



varchar  



char  


不加n就是4000位长度 加了n就是2000

 

面试题: oracle中char、varchar 、varchar2的区别

1、  都是表示字符串

2、  Char和varchar区别:char是定长度,varchar是
9b29
可变长度,char的效率高,varchar的效率低,但是char浪费空间(不足的自动补0),varchar就节约空间(不足的取消),

3、  Varhcar和varhcar2的区别:无区别,如果说当前字段没有值 varhcar是保存的空字符串,varchar2(oracle特有的数据类型)可以支持保存空字符串,也支持保存NULL关键字

语法规则: varchar2(长度) 存储字符的长度[采用的unicode编码,中文是占两个长度

数据类型

         number: 直接定义个数字数据类型(包含整数)

         number(3) : 定义了一个整数,里面只能放3位

         number(6,2): 定义了一个浮点数,一共6位,小数点后面2位

 

字符类型


varchar2  
varchar  
char  


不加n就是4000位长度 加了n就是2000

 

面试题: oracle中char、varchar 、varchar2的区别

1、  都是表示字符串

2、  Char和varchar区别:char是定长度,varchar是可变长度,char的效率高,varchar的效率低,但是char浪费空间(不足的自动补0),varchar就节约空间(不足的取消),

3、  Varhcar和varhcar2的区别:无区别,如果说当前字段没有值 varhcar是保存的空字符串,varchar2(oracle特有的数据类型)可以支持保存空字符串,也支持保存NULL关键字

语法规则: varchar2(长度) 存储字符的长度[采用的unicode编码,中文是占两个长度]

 

对于数据库设计表来说,必须满足三大范式

1、属性不可再分:我们设计的字段必须代表单独的意思,不可以同时代表几个意思

2、属性不能部分依赖主属性

3、属性不能间接依赖主属性

                   主属性:此表中必须有一个属性能保证一条数据和其他所有数据不一样

                   (主键)  唯一不重复

约束
唯一约束:关键字:unique ,该字段插入的值绝对不能重复,也就是数据库只能出现一次

 

非空约束:关键字:not null 这个字段的属性的值绝对不能为空

 

主键约束:关键字  primary key  非空约束+唯一约束

任何数据库表【一定】有主键  默认的格式 表名_id   news_id(主键)

 

检查约束:关键字:  check    对这个字段插入值的时候进行值的检查(是否符合我检查约束的规则)

   例: author_sex  varchar2(4) check (author_sex  in('男',  '女') )

 

外键约束:关键字  foreignkey

alter table主表名 add  constraint 外键名 foreign key  (主表的字段名) references 从表名(从表字段名)操作            
添加   约束   [随便取]    外键                   关联        [必须是唯一的]

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 基础语法