Oracle基本语法知识点

本文介绍了Oracle数据库的基本操作,包括解锁用户、修改密码、DML操作(增删改查)、查询语法、多条件查询、排序、分组、子查询、连接查询、数据类型以及各种约束。此外,还讨论了数据库设计的三大范式和常用的条件关键字。
摘要由CSDN通过智能技术生成

解锁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  数据类型  约束,   列名数据类型   约束);

 

删除表:             drop      table    表名

 

修改表

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

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

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

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

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


SQL 查询(复杂查询)

排序:         select    *    from    表名    [条件]     order by                     列名                      [排序规则,不写默认升序]

                                                                可不写                      逗号隔开,则相当于先分组       升序(asc)  降序(desc)

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

 

多条件判断:        select字段名,

case

when 条件then   输出语句

when 条件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位

 

字符类型

[n]varchar2   [n]varchar  [n]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    

                                                                                  等价于 在值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位

 

字符类型

[n]varchar2   

[n]varchar  

[n]char  

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

 

面试题 oraclecharvarchar varchar2的区别

1、  都是表示字符串

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

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

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

数据类型

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

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

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

 

字符类型

[n]varchar2   [n]varchar  [n]char  

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

 

面试题 oraclecharvarchar 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 从表名(从表字段名)操作             添加   约束   [随便取]    外键                   关联        [必须是唯一的]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值