• Oracle学习第八课-建表语法及DML语句


    建表语法

    语法:

    思路:
    
        表名
        列名/字段名
        数据类型 
        约束: 对列数据的格式要求.
            例子: 性别: 要求只能选择  '男'   '女'   '其他'
      
    语法:
    
    create table 表名(
            列名1 数据类型 [约束],
            列名2 数据类型,
            列名3 数据类型 [约束],
            ...
            列n 数据类型
        );

    删除表语法:

    删除表:--把表的数据和列名全删
        drop table 表名;
    删除表中数据:--只删除数据,且是逐行删除
        delete from 表名;

    数据类型

    1.数字
    
    number(n)   数字类型,最大长度为n
               number(10).
    number(n,m) 数字类型,数字最大长度为n,小数部分为m
                number(10,2)
    integer    相当于  number(38) 
    2.字符串
    
    char(n) 字符串,长度为n.
            char(10) :  'abcde'   不足10位用空白字符填充.
    特点:
        优点: 数据管理效率高.
        缺点: 空白字符浪费大量的空间.
    varchar2(n) 字符串,最大长度为n
            varchar2(10): 'abcde'  放入后该数据的长度就是5位.
    特点:
        优点: 节省数据存储空间.
        
    实例:
        名字  varchar2(100)
        手机号 char(11)
        邮箱 varchar2(200)
    3.日期
    
    date 日期

    约束

    1. 主键约束  primary key
        含义: 该列的值,唯一+非空
    2. 唯一约束: unique
        含义: 该列的值是不能重复
        应用: 手机号,身份证号
    3. 非空约束: not null
        含义: 该列的值,必须有值,不能为空.
    4. 检查约束
        语法:  check(约束语法)
        手机号: mobile char(11) check(length(mobile)=11) 
        邮箱:  email varchar2(100) check(email like '%@%')
        性别:  sex number(1)  check(sex in (0,1,2))
            注释: 1 男   0 女   2 其他 
    先创建一个表,供后面使用
    -- 创建一个员工表: 工号(id)  名字  性别   手机号  邮箱  年龄   家庭住址   出生日期(birth)
    create table t_emp(
        id number(10) primary key,
        name varchar2(100),
        age number(3),
        sex number(1) check(sex in (0,1,2)),       --男 1    女 0   其他 2
        mobile char(11),
        email varchar2(100),
        address varchar2(200),
        birth date
    );

    外键约束

    单词:foreign key

    语法关键词: references

    --## 两张表数据角度无法表示关系
    -- 学生表[id,名字,成绩]
    create table t_stu(
        id number(10) primary key,
        stu_name varchar2(50),
        score number(4,1)
    );
    ​
    -- 班级表[id,名称]
    create table t_class(
        id number(10) primary key,
        class_name varchar2(100)
    );

    外键列:

    作用: 表明当前表的数据和另一张表数据的关系.

    特点:

    1. 通过外键关联表的数据.

    2. 该列的,必须来源于另一张表的字段中的已存在的值.

    语法:

    --##使用外键: 表示关系
    -- 学生表[id,名字,成绩]
    create table t_stu(
    id number(10) primary key,
        stu_name varchar2(50),
        score number(4,1),
        class_id number(10) references t_class(id) -- 该列的值指向了班级表中id列的值.[该列的值,必须存在于班级表中id列中]
    );
    ​
    -- 班级表[id,名称]
    create table t_class(
    id number(10) primary key,
        class_name varchar2(100)
    );

    增删改SQL

    [重点]

    SQL分类

    DQL: Data query Language 数据查询语言

    功能: 查询数据 select

    DML: Data Manipulation language 数据操纵语言添加insert /修改update /删除delete 数据

    添加数据

    关键词: insert

    语法规则: 表 字段 值

    insert into 表名(字段1,列名2,字段3,....)
    values(值1,值2,值3,...);
    注意: 表名后的字段顺序,必须和values后的值的顺序保持一致.

    向t_emp表中添加一条数据

    --添加  100 李四  18  1  12345678901  lisi@qq.com
    insert into t_emp(id,name,age,sex,mobile,email)
    values(100,'李四',18,1,'12345678901','lisi@qq.com');

    注意:

    1. 表名后的字段顺序,必须和values后的值的顺序保持一致.

    2. 表名后的列名可以省略,oracle默认会按照表的字段的顺序,全部罗列出来.

      --添加  100 李四  18  1  12345678901  lisi@qq.com  河南  to_date('1999-9-9','yyyy-mm-dd')
      insert into t_emp
      values(100,'李四',18,1,'12345678901','lisi@qq.com','河南',sysdate);

    修改数据

    关键词: update

    语法规则: update 表名 set 列名=新值,列名=值,列名=值 [where 条件]

    -- 修改100号员工的年龄为22,手机号 '15533349688' ?
    update t_emp set age = 22,mobile='15533349688' where id = 100;

    删除数据

    关键词: delete

    细节: 逐行删除数据.

    语法规则: delete from 表 [where 条件]

    -- 删除工号为101号员工?
    delete from t_emp where id = 101;

    补充删除全表:

    1.如果delete没有wehere,会导致全表数据删除
    
        逐行删除全表数据: delete from 表名
        特点: 效率低.
    2.表截断
    
        本质: 直接将存储表数据部分的空间清除,只保留表头字段一行,进而删除数据[非DML]
    
        truncate table 表名
    
        特点: 效率远远高于delete.
  • 相关阅读:
    html 知识
    mysql use mysql hang
    微信机器人 简化版
    Tk::Table
    好友消息和群消息区别
    完整的微信登陆 接收消息流程
    Python OOP知识积累
    Python OOP知识积累
    JSTL EL 详解
    JSP中的EL表达式详细介绍
  • 原文地址:https://www.cnblogs.com/chenpeisong/p/9775227.html
Copyright © 2020-2023  润新知