SQL查询

数据定义

数据定义是指对数据库中的数据结构对象进行定义,可以创建、修改和删除对象结构。

SQL中的数据定义功能可以操作的对象有:模式、表(关系)、视图和索引。

SQL中的数据定义语句:
在这里插入图片描述

定义基本表

create table 表名
(列名 数据类型 列级完整性约束条件,
列名 数据类型 列级完整性约束条件,......
列名 数据类型 列级完整性约束条件,
表级完整性约束条件
);

注意: 这里面的列级完整性约束条件是可以省略的,但是前面的列名和数据类型是必须的。
另外,在最后一行是可以不加逗号的。

create table student(
sno varchar2(50),
sname varchar2(50),
age date
);

定义基本表的完整性
1.实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,由DBMS自动支持。
2.在DBMS中设置表的主码(主键),实体完整性规则自动生效
3.在DBMS中设置表的外码,参照完整性规则自动生效
4.用户自定义的完整性通过写表达式实现相应规则

定义实体完整性

CREATE TABLE YourTableName (
    column1 datatype PRIMARY KEY,
    column2 datatype,
    ...
);

定义参照完整性

CREATE TABLE Table1 (
    column1 datatype PRIMARY KEY
    -- other columns
);

CREATE TABLE Table2 (
    column2 datatype,
    foreign_key_column datatype,
    CONSTRAINT fk_constraint_name FOREIGN KEY (foreign_key_column) REFERENCES Table1(column1)
);

用户自定义的完整性(通过触发器实现)

CREATE OR REPLACE TRIGGER YourTriggerName
BEFORE INSERT OR UPDATE ON YourTableName
FOR EACH ROW
DECLARE
    -- define variables if needed
BEGIN
    -- define your custom integrity rules using PL/SQL logic
    -- raise an exception if the integrity rule is violated
END;

表中主要的完整性约束条件

  • 实体完整性:primary key
  • 参照完整性:foreign key
  • 用户自定义的完整性约束
    • 属性列取值范围约束:check(条件表达式)
    • 唯一约束:unique
    • 非空值约束:not null

属性列的数据类型

  • 关系模型中一个很重要的概念是,SQL中域的概念用数据类型来实现
  • 定义表的属性时需要指明其数据类型及其长度
  • 选用哪种数据类型的一句
    • 取值范围
    • 要做哪些运算
  • 不同的DBMS中支持的数据类型不完全相同

Oracle中常用的数据类型:

  1. char:固定长度的字符型。最多存放2000个字符,使用时需要指定最大长度,一旦定义了char类型的列,该列就会已知保持声明时所规定的数据长度,不足时自动用空格填充。
  2. varchar2:可变长度的字符型,最多存放4000个字符,使用时需要制定最大长度。
  3. clob:用于存放大文本数据、海量文字、长度为4G。
  4. number:所有的数值型,格式为number(p,s),其中p代表总位数,s表示小数的位数,p最大为38.使用时长度可要可不要。
  5. date:存放日期时间类型,用7个字节分别描述年、月、日、时、分、秒。

修改基本表

alter table <表名>
[ add <新列名> <数据类型> [ 完整性约束 ] ]
[ add <表级完整性约束> ]
[ drop  column <列名> ]
[ drop constraint <完整性约束名> ]
[ rename column <列名>  to <新列名>]
[ modify <列名> <数据类型> ]

删除基本表

drop table <表名> [casacde constrains];
在删除一个表的结构时,Oracle通常会执行以下操作:

  1. 删除表中的所有数据
  2. 删除于该表相关的所有索引和触发器
  3. 如果有视图或PL/SQL过程依赖于该表,这些视图或者PL/SQL过程将被置于不可用状态
  4. 从数据字典中删除该表的定义
  5. 会搜为该表分配的存储空间

cascade constraints,如果说使用该参数的话,drop table不仅仅删除该表,而且所有引用这张表的视图、约束或触发器等也都被删除。

暂时还没整理完,后续还会继续更新

相关推荐

  1. <span style='color:red;'>SQL</span><span style='color:red;'>查询</span>

    SQL查询

    2024-04-24 13:30:01      40 阅读
  2. SQL查询语句

    2024-04-24 13:30:01       51 阅读
  3. 3. SQL - 查询

    2024-04-24 13:30:01       53 阅读
  4. SQL笔记 -- 查询优化

    2024-04-24 13:30:01       48 阅读
  5. 动态sql,关联查询

    2024-04-24 13:30:01       50 阅读
  6. mysql sql查询

    2024-04-24 13:30:01       58 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-24 13:30:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-24 13:30:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-24 13:30:01       82 阅读
  4. Python语言-面向对象

    2024-04-24 13:30:01       91 阅读

热门阅读

  1. 第三方 app 登录微信

    2024-04-24 13:30:01       42 阅读
  2. 第12天 static final

    2024-04-24 13:30:01       36 阅读
  3. vue3 -- 基于maptalks和threejs实现3D地图板块效果

    2024-04-24 13:30:01       29 阅读
  4. HTML 基础知识及面试题

    2024-04-24 13:30:01       38 阅读
  5. (一)Mysql创建一个博客相关的数据库

    2024-04-24 13:30:01       32 阅读
  6. springboot项目打war包,并且部署外部tomcat中

    2024-04-24 13:30:01       40 阅读
  7. 【Redis】Spring Boot应用中的Redis分布式锁示例

    2024-04-24 13:30:01       35 阅读