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.
原文地址:https://www.cnblogs.com/chenpeisong/p/9775227.html