Oracle知识梳理(三)操作篇:SQL基础操作汇总

一、表操作

1、表的创建(CREATE TABLE):

基本语句格式:       CREATE TABLE  table_name ( col_name    datatype, ……);

解释: table_name 为要创建的表的名称(同一登录用户下表名必须唯一),col_name 为表中属性的名称,datatype 为属性的相应数据类型,同一表中会有许多字段,也可以在字段数据类型后追加各种约束条件(具体见约束)。

例:

2、表的修改(ALTER TABLE):

解释所有对表进行修改的语句,开头均以alter table+要修改的表的名称,后面的一系列操作只需要追加相应的关键字语句即可,例如添加字段 ALTER TABLE table_name ADD col_name datatype

(修改表名)基本语句格式RENAME table_name TO new_table_name;        (TO前面为原表名,后面为新的表名)

例:

(添加字段)基本语句格式ALTER TABLE table_name ADD col_name datatype;    (add关键字为添加字段使用)

例:

(修改字段名称)基本语句格式ALTER TABLE table_name RENAME COLUMN col_name TO new_col_name;    (RENAME COLUMN为修改字段名的关键字,TO后面为新的名称,前面为原名称)

例:

(修改字段数据类型)基本语句格式ALTER TABLE tbale_name MODIFY col_name datatype;  

例:

(删除字段)基本语句格式ALTER TABLE table_name DROP COLUMN col_name;       (drop column为字段删除的关键字)

例:

3、表的删除(DROP TABLE\TRUNCATE TABLE):

①截断方式删除表:仅清空表中数据,不会删除表,也不会删除表中的字段。

基本语句格式TRUNCATE TABLE table_name;

例:

②完全删除方式删除表:会将整个表删除,包括表中数据和表的结构、字段。

基本语句格式DROP TABLE table_name;

例:

4、向插入数据(INSERT INTO):

①纯插入方式

基本语句格式:INSERT INTO table_name  (col_name1,col_name2…… ) VALUES(value1,value2……);  

解释:values前的括号内为字段名集,后面为对应的值,值的数据类型必须与字段的数据类型一致,否则无法添加,同时,根据values前括号内的内容可以进行指定字段添加,例如:仅写一个username字段,values后括号内仅一个“zhangsan”,即对单一字段添加值

例:

②复制表数据

(在创建表时进行复制)基本语句格式:CREATE TABLE table_new  AS SELECT  col_name1,col_name2... | * FROM table_old;  

  解释:将table_old表中数据复制到新表中,可以指定字段,也可全部复制,全部复制使用*,具体字段指定字段名即可。

例:

(在添加时进行复制)基本语句格式:INSERT INTO table_new (col_name1,col_name2…… ) SELECT col-name1,col-name2... | *  FROM table_old;

例:

5、修改表中数据(UPDATE ):

(无条件更新)基本语句格式:UPDATE table_name SET col_name1 = value1,col_name2=value2……;  (这种方式会将表中全部数据进行更新)

例:

此例中将所有password字段值设为11111

(有条件更新)基本语句格式:UPDATE table_name SET col_name1=value1,col_name2=value2..  WHERE col-name=value...

例:

6、删除表中数据(DELETE):

①删除全部数据:

基本语句格式:DELETE FROM table_name;        这一句与上文截断的结果一致,删除该表中全部数据。

②删除具体某行的数据:

基本语句格式:DELETE FROM table_name WHERE col_name=value....;

例:

二、约束

1、主键约束(PRIMARY | CONSTRAINT)

注:一张表仅能有一个主键约束,主键约束可以由多个字段构成(联合主键,复合主键)。主键约束根据关键字PRIMARY KEY 和 CONSTRAINT来实现

创建表时添加主键约束:

① CREATE TABLE table_name (col_name1 datatype PRIMARY KEY);//创建表时,直接对某一属性指定为主键

②CONSTRAINT  constraint_name PRIMARY KEY (col_name1,col_name2..);//表级约束,一般在创建表时,所有字段都完成后,最后追加这个语句,如下例子:

create table userinfo(

id   number(6,0),

username   varchar2(20),

rank    varchar2(10),

constraint   pk_key (id,username),

);   //其中pk_key为人为命名的主键名称

修改表时添加主键约束:ADD CONSTRAINT constraint_name PRIMARY KEY(col_name1,col_name2..);//一般跟在 ALTER TABLE table table_name后,进行主键追加,如下例子:

ALTER TABLE userinfo ADD CONSTRAINT pk_id (id );

修改主键约束名称:RENAME CONSTRAINT old_name TO new_name; //用在ALTER TABLE table_name 后面,进行主键名称的更改,如下例子:

ALTER TABLE userinfo RENAME CONSTRAINT pk_id TO pk_newid;

删除主键约束:

①DROP CONSTRAINT constraint_name ; //彻底删除名称为constraint_name的主键约束,跟在ALTER TABLE table_name 后使用。

②DISABLE|ENABLE  CONSTRAINT  constraint_name;//这种方式为 禁用 | 开启 主键约束,并没有实质的删除,同样是跟在ALTER TABLE table_name 语句后面使用。

2、外键约束(REFERENCES)

创建表时添加外键约束:

①CREATE TABLE table1(col_name1 datatype REFERENCES table2(col-name));//通过关键字REFERENCES,选择table2中的字段作为外键,被引用的字段必须为table2的主键

②CONSTRAINT constraint_name FOREIGN KEY( col_name1,col_name2...) REFERENCES table2(col-name,col-name)[ON DELETE CASCADE ] //表级设置,同时指定级联删除,所谓级联删除就是,我们主表中的一条数据被删除,那么从表中引用主表字段的这一行数据也会被删除(通过ON DELETE CASCADE)。

修改表时设置外键约束:ADD CONSTRAINT constraint_name FOREIGN KEY( col_name1,col_name2...) REFERENCES table2(col-name,col-name)[ON DELETE CASCADE ]//跟在修改表语句后使用

删除外键约束:

①DROP CONSTRAINT constraint_name ; //彻底删除名称为constraint_name的外约束,跟在ALTER TABLE table_name 后使用。

②DISABLE|ENABLE  CONSTRAINT  constraint_name;//这种方式为 禁用 | 开启 外键约束,并没有实质的删除,同样是跟在ALTER TABLE table_name 语句后面使用。

3、非空约束(NOT NULL)

创建时添加非空约束:CREATE TABLE table_name (col_name datype NOT NULL);

修改表时添加非空约束:ALTER TABLE tbale_name MODIFY col_name datatype NOT NULL; 

删除非空约束:ALTER TABLE tbale_name MODIFY col_name datatype NULL; 

4、唯一约束(UNIQUE)

注:唯一约束可以有多个,而主键约束仅限一个,两者都有唯一限制

创建时添加非空约束:CREATE TABLE table_name (col_name datype UNIQUE);   或者 CONSTRAINT constraint_name UNIQUE (col-name,col-name);

修改表时添加非空约束:ALTER TABLE tbale_name ADD CONSTRAINT constraint_name UNIQUE (col-name,col-name)

删除非空约束:DISABLE|ENABLE  CONSTRAINT  constraint_name;  或者 DROP CONSTRAINT constraint_name ;

5、检查约束(CHECK)

注:检查约束就是限制数据的实际意义,比如现实生活中工资不会出现负数,所以在表设计的时候,工资字段就要设置检查约束,使其大于等于0

创建表的时候添加检查约束:CREATE TABLE table_name (col_name datype CHECK( 具体的约束条件  ));  或者  CONSTRAINT constraint_name CHECK (条件);

修改表时添加检查约束:ALTER TABLE tbale_name ADD CONSTRAINT constraint_name CHECK (条件)

删除检查约束:DISABLE|ENABLE  CONSTRAINT  constraint_name;  或者 DROP CONSTRAINT constraint_name ;

三、查询

1、运算符 

算数运算符: +、-、*、/

比较运算符:> , >= , < , <= , = , <>          注:主要用在where关键字后面,结果为布尔值 

逻辑运算符:NOT,  AND , OR        用以链接条件,对应着并,或,非。

表达式 = 操作数 + 运算符         这里的操作数在oracle中可以是变量,常量,字段

2、基本查找语句(SELECT)

基本语句格式:SELECT col-name1,col-name2... | * FROM table_name;

3、条件查询(SELECT .... WHERE ...)

基本语句格式:SELECT col-name1,col-name2... | * FROM table_name WHERE 具体的条件表达式

                    例如:  SELECT  username,password FROM userinfo WHERE id>=1 AND salary >500;       //查询id大于1,工资大于500的所有用户的账号和密码信息

4、模糊查询(LIKE)

          LIKE运算符可以归为比较运算符的一种,通过 LIKE 关键字配合通配符  ‘_,%’ 构成实现模糊查询的表达式,放置where后面即可。

  " _ " :  一个 ' _ '仅能代替一个字符,例如 a_,代表首字母为a,后面仅有一位字符的组合。

  " % ":代表0个或多个字符,不限个数,例如  %a,代表末尾为a的所有字符组合

基本语句格式:SELECT  * | col-name1,col-name2... FROM table_name WHERE  col-name LIKE  ' 通配符组成的信息 '

例如:   SELECT * FROM  userinfo WHERE username LIKE ‘a% ’     //查询用户名以a为首字母的所有信息

SELECT email FROM  userinfo WHERE username LIKE ‘_a% ’     // 查询用户名第二个字符为a的邮箱

SELECT username FROM  userinfo WHERE username LIKE ‘%a% ’    //查询用户名中包含a字母的所有用户的用户名

5、范围查询(BETWEEN.....AND....)

主要通过 between  and 的组合构成某项属性的范围条件,与之前的条件查询中运用<,>运算符进行条件查询效果一致,同时进行条件表达式组合时也可以配合NOT 进行组合,例如 NOT BETWEEN 30 AND 50,即是查小于30和大于50的范围

基本语句格式: SELECT * | col-name1,col-name2... FROM table_name WHERE col-name BETWEEN ? AND ?;

6、并表查询

并表查询主要依附于表的链接(JOIN),表的链接分为,内连接,外连接,交叉连接。

内连接基本语句格式:SELECT *FROM table1 [inner] join table2 on table1.字段1=table2.字段1....;

内连接基本语句格式2:SELECT * FROM table1,table2  WHERE table1.字段1=table2.字段1....;

交叉连接:表与表之间做笛卡儿积,SELECT * FROM table1,table2....

外连接又可细分为左外连接,右外连接和全连接

①左外连接:LEFT OUTER JOIN 

           左侧的表中的全部数据都会被显示出来,但是右侧表的数据,只有和左侧匹配上的字段才会被查询出来!否则都会显示null!

基本语句格式1SELECT * FROM table1 LEFT OUTER JOIN  table2 on table1.col-name1=table2.col-name1;

基本语句格式2SELECT* FROM table1 LEFT OUTER JOIN  table2 where table1.col-name1=table2.col-name1;

②右外连接:RIGHT OUTER JOIN 

           右侧的表中的全部数据都会被显示出来,但是左侧表的数据,只有和右侧匹配上的字段才会被查询出来!否则都会显示null!

   基本语句格式1:SELECT * FROM table1 RIGHT OUTER JOIN  table2 on table1.col-name1=table2.col-name1;

基本语句格式2:SELECT* FROM table1 RIGHT OUTER JOIN  table2 where table1.col-name1=table2.col-name1;

③全外连接:FULL/ALL OUTER JOIN

基本语句格式:SELECT * FROM table1 FULL OUTER JOIN  table2 on table1.col-name1=table2.col-name1;

Oracle知识梳理(三)操作篇:SQL基础操作汇总的更多相关文章

  1. 【SQL】- 基础知识梳理(二) - SQL简介

    一.引言 在梳理这些知识之前,说实话,如果有人问我SQL是什么?我可能会回答就是“INSERT,DELETE,UPDATE,SELECT”语句呗,还能是啥. 二.SQL概念 SQL是什么? SQL是S ...

  2. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  3. [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型

    引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

  4. SQL基础操作汇总

    SQL基础操作汇总 一.表操作 1.表的创建(CREATE TABLE): 基本语句格式:    CREATE TABLE  table_name ( col_name    datatype, -- ...

  5. [独孤九剑]Oracle知识点梳理(四)SQL语句之DML和DDL

    本系列链接导航: [独孤九剑]Oracle知识点梳理(一)表空间.用户 [独孤九剑]Oracle知识点梳理(二)数据库的连接 [独孤九剑]Oracle知识点梳理(三)导入.导出 [独孤九剑]Oracl ...

  6. MySQL数据分析-(8)SQL基础操作之库操作

    前面我们讲了学习SQL的两个逻辑框架,jacky说了这样一个逻辑:库是为了存储表的,所以一定是先有库才有表:同样的道理,有表才有表中的数据,是吧,肯定是这个逻辑:那么,今天jacky就捋着这个逻辑从库 ...

  7. Jmeter 接口测试知识梳理——持续集成篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! Jmeter + Ant ...

  8. Oracle知识梳理(一)理论篇:基本概念和术语整理

    理论篇:基本概念和术语整理 一.关系数据库           关系数据库是目前应用最为广泛的数据库系统,它采用关系数据模型作为数据的组织方式,关系数据模型由关系的数据结构,关系的操作集合和关系的完整 ...

  9. Jmeter 接口测试知识梳理——环境搭建篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! 环境搭建篇 很多文章介绍 ...

随机推荐

  1. ZooKeeper实现分布式锁

    使用场景          一般的锁是指单进程多线程的锁,在多线程并发编程中,用于线程之间的数据同步,保证共享资源的访问.而分布式锁,指的是在分布式环境下,保证跨进程.跨主机.跨网络的共享资源,实现互 ...

  2. 发布一个参考tornado的高性能c++网络库:libtnet

    libtnet是一个用c++编写的高性能网络库,它在设计上面主要参考tornado,为服务端网络编程提供简洁而高效的接口,非常易于使用. Echo Server void onConnEvent(co ...

  3. Spring揭秘 读书笔记 四----方法注入

    我们知道,拥有prototype类型scope的bean,在请求方每次向容器请求该类型对象的时候,容器都会返回一个全新的该对象实例. 我们看下面的例子: public class MockNewsPe ...

  4. Android 自定义View -- 简约的折线图

    转载请注明出处:http://write.blog.csdn.net/postedit/50434634 接上篇 Android 圆形百分比(进度条) 自定义view 昨天分手了,不开心,来练练自定义 ...

  5. Github Coding Developer Book For LiuGuiLinAndroid

    Github Coding Developer Book For LiuGuiLinAndroid 收集了这么多开源的PDF,也许会帮到一些人,现在里面的书籍还不是很多,我也在一点点的上传,才上传不到 ...

  6. Learning ROS for Robotics Programming Second Edition学习笔记(一) indigo v-rep

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  7. Linux - man page

    使用man date来查看date命令的详细信息. lucifer@lucifer-virtual-machine:~$ man date DATE(1) User Commands DATE(1) ...

  8. Linux:进程通信之消息队列Message实例

    /*send.c*/ /*send.c*/ #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h&g ...

  9. Spring--ApplicationContext

    //中心接口,给应用提供配置信息 public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory ...

  10. 【Nginx】下载,请求限速,根据URL参数限速

    这个场景是限制单个连接的下载速度,还有限制单个IP的连接数,或者单位时间内的请求数,实验环境 nginx1.9.x. 小例子为主,具体的细节请多看文档. 限制下载速度 location /downlo ...