本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

转载请注明 出自 : luogg的博客园 谢谢配合!


更新:
SELECT * FROM (SELECT ROWNUM rn , a.* FROM (SELECT * FROM copy_emp)a) WHERE rn >1 AND rn<10;
分页显示

Oracle

day01_Oracle简介及表的创建,增删改查

  • 安装好之后,需要手动开启的服务 : 右键我的电脑 -> 管理 -> 服务 -> OraclORCL 和 OracleListiner . 必须开启.
  • dos 底下输入sqlplus启动oracle,数据库口令 : orcl
  • 用户名system密码orcl 用户名scott密码luogg
  • 网页端 : http://localhost:5560/isqlplus
  • 以管理员角色登录 : sqlplus scott/luogg as sysdba
  • 测试是否安装成功: select sysdate from dual;查询当前时间
  • 退出 exit
  • 锁定与解锁用户 : alter user scott account lock ;
    alter user scott account unlock ;
  • 清屏: host cls(windows中)
    host clear(Linus中)
  • 切换用户 : conn[ect] scott/luogg ;
  • 显示当前用户 : show user ;
  • 查看表结构: desc table_name;
  • 单行注释- -
  • 多行注释/* */

  • 查看当前用户有那些表 : select * from tab ;
  • 建表的时候先创建E-R图,会比较清晰,实体用长方形,属性用椭圆.
  • 一个汉字有3个字节, varchar2为可变字符串.
  • PL/SQL developer 查看表的方法: ctrl+鼠表放在表上
    SQL developer 查看表的方法: desc + 表名 ;
  • PL/SQL developer 中输入select * from 表名 + for update; 可以直接增删改查
  • 查看本机IP的方法 : dos底下输入 -> ipconfig -> ipv4地址
  • 创建表 : create table t_student(t_name varchar2(20) ...);
  • 添加信息: insert into t_student(t_name) values('小花');
    若不指定字段, 那么默认添加所有字段信息;
    若要添加指定字段信息, 表名后边必须指明字段;
  • 修改信息: update t_student set stu_name='小美' where stu_no=1001;
  • 删除信息: delete from t_student where stu_age=20 and stu_no=1002;
  • 删除表: drop table t_student;
  • 添加字段: alter table t_student add(stu_sex varchar2(10));
  • 修改字段长度: alter table t_student modify(stu_sex varchar2(6));
    修改长度时候,可以不为null, 修改字段的修饰类型(varchar2->number)的时候, 字段下边必须没有信息, 为null
  • 删除字段: alter table t_student drop column stu_sex;
  • 复制HR用户下的employees表: create table copy_emp as select * from hr.employees; 前提是有权限访问hr.
  • 只复制表结构: create table copy_emp2 as select * from hr.employees where 1=2
  • 查询字段为空的表: select * from t_student where stu_name is null ;

  • 可以快速导入表 : 先放到excel中,然后导入;
  • SQL : 结构化查询语言
    PL/SQL: 过程话查询语言
  • DCL: 数据控制语言(极少用)
    DDL: 数据定义语言, 创建对象的时候使用, create,alter,drop
    DML: 数据操纵语言,和操作数据有关, insert,update,delete,查询不属于DML.

  • pl/sql中,选中本行: home/end + shift,end/home ;
  • 运行sql语句: f8. 提交: f10 . 回滚: shift+f10.

day02_约束

表的类型

  • char 2000个字节 , 定长字符串,
  • varchar 4000个字节, 可变字符串, 若没达到指定字符长度, 会自动调整大小
  • number(m,n) m,有效位数,n,代表小数位,出多来的小数位四舍五入,
    不写n的时候,为整数
  • date类型
    1,sysdate 当前日期
    2,默认格式: dd-mm月-yy 05-03月-94
    3,采用数据库提供的to_date()方法,

    追加出生日期的三种方法:
    1.update t_student set stu_birthday=sysdate where stu_name='张三'
    2.update t_student set stu_birthday=to_date('1994-05-03', 'yyyy- mm-dd') where stu_name='狗蛋';
    3.update t_student set stu_birthday=to_date('1994-05-03 235830', 'yyyy-mm-dd hh24miss') where stu_name='二麻子';
    4.update t_student set stu_birthday='05-03-94' where stu_name='蠢单子';

to_char的使用

  • 查询08 月份入职的所有员工的信息
    select * from copy_emp where to_char(hire_date,'mm') = '08';
  • 查询本月入职的所有的员工信息
    select * from copy_emp where to_char(hire_date,'mm') = to_char(sysdate,'mm');
  • 查询星期x 入职的员工信息
    select * from copy_emp where to_char(hire_date,'day') = to_char(sysdate,'day');

函数

to_date(): 将其他类型转换为date类型
to_char(): 将其他类型转换为char类型

修改列名

alter table t_student rename column s_bir to str_bir;

模糊查询LIKE(%表示0个或多个字符,_表示一个字符)
select * from table where table_name LIKE '%stu%';

约束

非空约束NOT NULL

修改约束(可为空) : alter table t_student modify s_name null;
若要追加非空NOT NULL约束, 必须在这个字段信息不为空的时候追加.

查询约束条件

1.通过表结构查询
2.select * from USER_CONSTRAINTS where table_name = upper('t_student');

查询到表的约束名: SYS_C007550

删除约束

alter table t_stu drop CONSTRAINTS SYS_C007550;

唯一键约束UNIQUE

特点:

  • 唯一键约束用于确保所在字段或字段组合不出现重复的值.
  • 唯一性约束的字段允许出现空值.
  • Oracle会自动为唯一键约束创建唯一性索引.
  • 有值时,不可以重复, 空值时,可以有多个null.

字段组合做唯一性约束

或者:
alter table t_student add CONSTRAINTS UQ_no_name UNIQUE(stu_no,stu_name);

主键约束 PRIMARY KEY

特点:

  • 唯一表示表中的某一条记录.
  • 相当于非空且唯一
  • 一个表中只可以有一个主键
  • 可以是单个字段或者多个字段的组合

联合主键

由多个字段组合而成的主键也称联合主键
联合主键中每一个字段都不能为空
联合主键字段组合的值不能出现重复
constraint PK_stuId_subId primary key(stu_name,sub_name)
)

外键约束 FOREIGN KEY

外键约束特点:

  • 外键用于确保相关的两个字段之间的参照关系,以实现参照完整性约束
  • 外键约束通常构建于来自不同表的两个字段之间
  • 子表外键列的值必须在主表参照列值得范围内,或者为空
  • 外键参照的必须是主表的主键或者唯一键
  • 主表主键/唯一键值被子表参照时,主表相应记录不允许被删除

eid number(3) references t_empinfo(eid) on delete cascade,
或者 CONSTRAINTS stu_con_FK foreign key (c_no) references t_class(c_no);
约束 约束名 外键(字段名) 参考 表(字段名)

删除主表的时候, 引入的数据 级联删除, on delete cascade 级联删除
删除主表内容的时候, 引用的字表的字段置空. on set null 级联置空

检测约束 CHECK

age number(3) check(age>=0 and age<=120)

同时使用主键约束和check约束
name varchar2(20) primary key check(length(name)>=6),

Oracle学习总结_day01_day02_表的创建_增删改查_约束的更多相关文章

  1. Oracle表操作-创建及增删改查

    数据类型: 1.CHAR:定长字符类型,默认长度是1,最长不超过2000字节. 2.CARCHAR2(length):可变字符类型,默认长度是1,最长不超过4000字符. 3.NUMBER(P,S): ...

  2. mysql-3 数据表的创建、增删改查

    1.创建数据表 通用语法:CREATE TABLE table_name (column_name column_type); CREATE TABLE IF NOT EXISTS `csj_tbl` ...

  3. Android(java)学习笔记245:ContentProvider使用(银行数据库创建和增删改查的案例)

    1. Android的四大组件: (1)Activity  用户交互的UI界面 (2)Service  后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...

  4. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  5. Android(java)学习笔记189:ContentProvider使用(银行数据库创建和增删改查的案例)

    1. Android的四大组件: (1)Activity  用户交互的UI界面 (2)Service  后台运行的服务 (3)BroadcastReceiver 广播接收者 (4)ContentPro ...

  6. 一、数据库表中字段的增删改查,二、路由基础.三、有名无名分组.四、多app共存的路由分配.五、多app共存时模板冲突问题.六、创建app流程.七、路由分发.八、路由别名,九、名称空间.十、反向解析.十一、2.x新特性.十二、自定义转换器

    一.数据库表中字段的增删改查 ''' 直接在modules中对字段进行增删改查 然后在tools下点击Run manage.py Task执行makemigrations和migrate 注意在执行字 ...

  7. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  8. SSM整合_年轻人的第一个增删改查_基础环境搭建

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  9. SSM整合_年轻人的第一个增删改查_查找

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

随机推荐

  1. [.net 面向对象程序设计深入](0) 开篇

    [.net 面向对象程序设计深入](0)开篇        [.net 面向对象编程基础]和 [.net 面向对象程序设计进阶]在15年底写完了,群里也加进来不少热爱学习的小伙伴.让我深切感受到在这个 ...

  2. 机器学习理论知识部分--偏差方差平衡(bias-variance tradeoff)

    摘要: 1.常见问题 1.1 什么是偏差与方差? 1.2 为什么会产生过拟合,有哪些方法可以预防或克服过拟合? 2.模型选择例子 3.特征选择例子 4.特征工程与数据预处理例子 内容: 1.常见问题 ...

  3. 生成lua的静态库.动态库.lua.exe和luac.exe

    前些日子准备学习下关于lua coroutine更为强大的功能,然而发现根据lua 5.1.4版本来运行一段代码的话也会导致 "lua: attempt to yield across me ...

  4. MVC与WebForm的区别

    在初步了解MVC后,发现很多人对于MVC和三层架构开发概念上会有很大的混淆,所以把这两天的学习笔记整理一下,分享给自己的同学们.同时也做一个小Demo,让没有接触过MVC开发的同学,能对MVC有一个简 ...

  5. div非弹出框半透明遮罩实现全屏幕遮盖css实现

    IE浏览器下设置元素css背景为透明: background-color: rgb(0, 0, 0); filter: alpha(opacity=20); 非IE浏览器下设置元素css背景为透明: ...

  6. java.io中的System.in、 System.out和System.err

    System.in, System.out, System.err这3个流同样是常见的数据来源和数据流目的地.使用最多的可能是在控制台程序里利用System.out将输出打印到控制台上. JVM启动的 ...

  7. 【WP 8.1开发】如何动态生成Gif动画

    相信如何为gif文件编码,很多朋友都会,而难点在于怎么让GIF文件中的帧动起来,也就是创建gif动画. Gif文件编码方法 先简单介绍一下编码的方法. 1.调用BitmapEncoder.Create ...

  8. isPrototypeOf&&getPrototypeOf

    在JavaScript这个一切皆为对象的世界里,难免会判断原型链的问题.那么我们就有必要了解了解isPrototypeOf和getPrototypeOf这两个方法咯. 1.isPrototypeOf ...

  9. Why is HttpContext.Current null after await?

    今天在对项目代码进行异步化改进的时候,遇到一个奇怪的问题(莫笑,以前没遇过),正如标题一样,HttpContext.Current 在 await 异步执行之后,就会变为 null. 演示代码: pu ...

  10. [Keras] mnist with cnn

    典型的卷积神经网络. Keras傻瓜式读取数据:自动下载,自动解压,自动加载. # X_train: array([[[[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0. ...