SQL语言、函数以及在Oracle中的的应用

本文中所用到的实例用户为oracle的scott用户

怎么启用scott用户:https://blog.csdn.net/qq_38170766/article/details/105381500

SQL语句分类

  • 数据查询语句

SELECT

  • 数据操纵语句(DML)

INSERT:添加记录

UPDATE:更新记录,通常与WHERE一起使用,如果不使用则更新全表数据

DELETE:删除记录

  • 数据定义语句(DDL)

CREATE:创建语句,创建数据库、表、视图等

ALTER:更改系统参数语句,如更改alter system set shared_pool_size

DROP:删除一个对象,如删除表、索引或者序列号等

RENAME:重命名一个对象

TRUNCATE:截断一个表

扫描二维码关注公众号,回复: 10629926 查看本文章
  • 事务控制语句

COMMIT:提交由DML语句操作的事务

ROLLBACK:用于回滚DML语句操作的事务

  • 数据控制语句

GRANT:用于授予用户访问某对象的特权

REVOKE:用于挥手用户访问某对象的特权

SQL查询语句

如果用户需要查询数据库中的数据时就需要用到SELECT语句,SQL查询语句的关键字有SELECT、FROM、WHERE。

  • SELECT语句的语法及书写要求

一个简单的SELECT语句必须要包含SELECT子句和FROM子句,SELECT表明要查找的列,FROM表明要查询的表

具体语法如下:

SELECT * | { [DISTINCT] column | expression [alias],...} FROM tablename
  1. SELECT:选择一个列或者多个列
  2. *:查询所有的列
  3. DISTINCT:去掉列中重复的值
  4. column | expression:选择列的名字或者表达式
  5. alias:为列指定不同的标题
  6. FROM tablename:要查询的表的名字
  • 简单查询

下面的操作可以看到要查询dept表中的所有列中的内容,你可以采用*或者输入所有列的名称中间用,号隔开,这两种方式都可以查询到dept中的所有数据。

SQL> select * from dept;      

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON
SQL> select deptno,dname,loc from dept;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON

使用其他用户(system)查询scott的dept表数据

下面的操作可以看到,当使用system登录到数据库之后直接查询dept表,查询出错,因为system用户并没有创建dept表,所以要想查询dept必须写成 scott.dept 表明查询scott用户的dept表。

因为system是系统管理员,所以system也有操作scott用户表的权限

SQL> conn system/oracle;
已连接。
SQL> select * from dept;
select * from dept
              *
第 1 行出现错误:
ORA-00942: 表或视图不存在


SQL> select*from scott.dept;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON
  • 查询指定的列

下面的操作可以看到,我只想查询loc列以及dname列,我只需要指定我需要查询的列名即可,同时select语句中列名的顺序也会影响到最后结果输出的列顺序。

SQL> select loc,dname from dept;

LOC                        DNAME
-------------------------- ----------------------------
NEW YORK                   ACCOUNTING
DALLAS                     RESEARCH
CHICAGO                    SALES
BOSTON                     OPERATIONS
  • WHERE子句

对一个表来说,如果用户需要查询表中特定的数据而不是所有的数据时,则需要用到WHERE子句来限制查询条件了。

WHERE可以限定查询的行的要求,从而帮助我们查询到满足一定条件的数据。

查询dept表中所有列,其中LOC为'CHICAGO'的数据

下面的操作可以看到,where子句中loc的条件是会区分大小写的,这个在实际应用的时候需要注意。


SQL> select * from dept where loc = 'chicago';      

未选定行

SQL> select * from dept where loc = 'CHICAGO';

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        30 SALES                        CHICAGO

查询dept表中所有列,其中DEPTNO小于30的数据

SQL> select * from dept where deptno < 30;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
  • SQL语句使用列的别名

从下面的操作可以看出几点:

  1. 可以使用 列名 as “别名” 或者 列名 as 别名 的方式,但是别名不加双引号的情况不支持中文
  2. 可以使用 列明 别名 或者 列名 "别名" 的方式,但是别名不加双引号不支持中文
  3. 可以上述两种方式组合使用但是不加双引号的情况与加双引号的情况不能同时出现
SQL> select loc as 部门号 from dept;
select loc as 部门号 from dept
              *
第 1 行出现错误:
ORA-00911: 未识别标识符


SQL> select loc "部门号" from dept;

部门号
--------------------------
NEW YORK
DALLAS
CHICAGO
BOSTON

SQL>select loc as location,deptno as "部门编号",dname "部门名称" from dept;
ERROR:
ORA-01740: 标识符中缺失双引号


SQL> select deptno as "部门编号",dname "部门名称" from dept;

  部门编号 部门名称
---------- ----------------------------
        10 ACCOUNTING
        20 RESEARCH
        30 SALES
        40 OPERATIONS


SQL> select deptno as dept_number,dname dept_name from dept;

DEPT_NUMBER DEPT_NAME
----------- ----------------------------
         10 ACCOUNTING
         20 RESEARCH
         30 SALES
         40 OPERATIONS
  • SELECT查询中运算符的使用

https://blog.csdn.net/qq_38170766/article/details/105383660

  • SELECT查询中函数的使用

https://blog.csdn.net/qq_38170766/article/details/105384786

数据操纵语言(DML)

数据操纵语言实现对表中数据的各种操作,如增、删、改

  • INSERT语句

INSERT语句就是向表中添加一条数据。

语句格式为:INSERT INTO tablename  (col1,col2,col3....) VALUES (val1,val2,val3.....)

tablename:插入数据表的名字,要求用户对该表有操作权限。

col:该表中的列名,可以使一列,也可以是多列,如果要向每一列都插入一个值,则可以不使用col,但是需要用户清楚该表的列名和属性。

val:要插入对应列的值,其数据类型必须与column的数据类型相匹配。

查询表中列的数据类型

SQL> desc dept;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 DEPTNO                                    NOT NULL NUMBER(2)
 DNAME                                              VARCHAR2(14)
 LOC                                                VARCHAR2(13)

向dept表中插入一条数据

SQL> INSERT INTO dept (DEPTNO,DNAME,LOC) VALUES (50,'MARKETING','NEW YORK');

已创建 1 行。

SQL> select * from dept;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        50 MARKETING                    NEW YORK
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON

由于dept的DNAME、LOC两个字段没有NOT NULL约束,所以可以不添加值

SQL> INSERT INTO dept (DEPTNO) VALUES (60);

已创建 1 行。

SQL> select * from dept;

    DEPTNO DNAME                        LOC
---------- ---------------------------- --------------------------
        50 MARKETING                    NEW YORK
        60
        10 ACCOUNTING                   NEW YORK
        20 RESEARCH                     DALLAS
        30 SALES                        CHICAGO
        40 OPERATIONS                   BOSTON

已选择6行。

如果需要从领一张表中拿数据插入,以下是语法结构:

INSERT INTO tablename (col1,col2...) SELECT col1,col2... FROM anotherTablename Where ...
  • UPDATE语句

UPDATE语句就是向表中更新数据。

语句格式为:UPDATE tablename  col1=val1 ,col2=val2... WHERE coln=valn;

tablename:要更新的表名

col:要更新的列名

val:要更新的值

WHERE:更新的条件

SQL> select* from dept;

    DEPTNO DNAME                                      LOC
---------- ------------------------------------------ ---------------------------------------
        10 ACCOUNTING                                 NEW YORK
        20 RESEARCH                                   DALLAS
        30 SALES                                      CHICAGO
        40 OPERATIONS                                 BOSTON
        50 TEST

SQL>  UPDATE dept SET dname='test',loc='test' WHERE deptno=50;

已更新 1 行。

SQL> select* from dept;

    DEPTNO DNAME                                      LOC
---------- ------------------------------------------ ---------------------------------------
        10 ACCOUNTING                                 NEW YORK
        20 RESEARCH                                   DALLAS
        30 SALES                                      CHICAGO
        40 OPERATIONS                                 BOSTON
        50 test                                       test
  • DELETE语句

DELETE语句就是向表中更新数据。

语句格式为:DELETE FROM tablename  WHERE col=val;

tablename:要删除的表名

col:要删除的列名标记

val:删除的值

WHERE:删除的条件,如果不加WHERE则整个表的内容都将被删除

SQL> DELETE FROM dept WHERE deptno=50;

已删除 1 行。

SQL> select*from dept;

    DEPTNO DNAME                                      LOC
---------- ------------------------------------------ ---------------------------------------
        10 ACCOUNTING                                 NEW YORK
        20 RESEARCH                                   DALLAS
        30 SALES                                      CHICAGO
        40 OPERATIONS                                 BOSTON
发布了17 篇原创文章 · 获赞 1 · 访问量 2426

猜你喜欢

转载自blog.csdn.net/qq_38170766/article/details/105379703