暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle的SQL基本语法总结(1)-语句介绍、数据类型、创建表、约束条件

数据运营与数据分析 2021-04-12
452


一、SQL语句介绍

在 Oracle 开发中,客户端把 SQL 语句发送给服务器,服务器对 SQL 语句进行编译、执行,把执行的结果返回给客户端。常用的SQL语句大致可以分为五类:

  1. 数据定义语言(DDL),包括 CREATE(创建)命令、 ALTER(修改)命令、 DROP(删除)命令等。

  2. 数据操纵语言(DML),包括 INSERT(插入)命令、 UPDATE(更新)命令、 DELETE(删除)命令、 SELECT … FOR UPDATE(查询)等。

  3. 数据查询语言(DQL),包括基本查询语句、 Order By 子句、 Group By 子句等。

  4. 事务控制语言(TCL),包括 COMMIT(提交)命令、 SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。     

  5. 数据控制语言(DCL), GRANT(授权)命令、 REVOKE(撤销)命令。

二、Oracle字段数据类型

数据类型类型解释
VARCHAR2(length)字符串类型:存储可变的长度的字符串,length:是字符串的最大长度,默认不填的时候是1,最大长度不超过4000。
CHAR(length)字符串类型:存储固定长度的字符串,length:字符串的固定长度大小,默认是1,最大长度不超过2000。
NUMBER(a,b)数值类型:存储数值类型,可以存整数,也可以存浮点型。a代表数值的最大位数:包含小数位和小数点,b代表小数的位数。例子:
number(6,2),输入321.456789,实际存入:321.45 。
number(4,2),输入12312.345,实际存入:错误,超过存储的指定的精度。
DATA时间类型:存储的是日期和时间,包括年、月、日、时、分、秒。例子:
内置函数sysdate获取的就是DATA类型
TIMESTAMP时间戳类型:存储的不仅是日期和时间,还包含了时区。例子:
内置函数systimestamp获取的就是timestamp类型 
CLOB大字段类型:存储的是大的文本,比如:非结构化的txt文本,字段大于4000长度的字符串。
BLOB二进制类型:存储的是二进制对象,比如图片、视频、声音等转换过来的二进制对象

三、创建表

    -- Create table
    create table jalen.stuinfo --用户名.表名
    (
    stuid varchar2(11) not null,--学号:①
    stuname varchar2(50) not null,--学生姓名
    sex char(1) not null,--性别
    age number(2) not null,--年龄
    classno varchar2(7) not null,--班号:
    stuaddress varchar2(100) default '地址未录入',--地址 ②
    grade char(4) not null,--年级
    enroldate date,--入学时间
    idnumber varchar2(18) default '身份证未采集' not null--身份证
    )
    tablespace USERS --③
    storage
    (
    initial 64K
    minextents 1
    maxextents unlimited
    );
    -- Add comments to the table
    comment on table jalen.stuinfo --④
    is '学生信息表';
    -- Add comments to the columns
    comment on column jalen.stuinfo.stuid -- ⑤
    is '学号';
    comment on column jalen.stuinfo.stuname
    is '学生姓名';
    复制
      create table jalen.teacher (
      teacherid varchar2(11) primary key, -- 老师编号
      terchername varchar2(50) not null, --老师姓名
      sex char(1) not null,--性别
      age number(2) not null ,--年龄
      post varchar2(40) default '讲师', --职称默认讲师
      subject varchar2(20), -- 教学科目
      idnumber varchar2(18) default '未填写' --身份证
      ) tablespace users storage (initial 64k minextents 1 maxextents unlimited);
      复制

      代码说明:

      ①处:not null 表示学号字段(stuid)不能为空。

      ②处:default 表示字段stuaddress不填时候会默认填入‘地址未录入’值。

      ③处:表示表stuinfo存储的表空间是users,storage表示存储参数:区段(extent)一次扩展64k,最小区段数为1,最大的区段数不限制。

      ④处:comment on table 用户名.表名 is "注释内容";  是给表名进行注释。

      ⑤处:comment on column 用户名.表名.字段名 is "注释内容" ;  是给表字段进行注释

      四、添加约束

         -- 非空(NOT NULL)约束
        ALTER TABLE jalen.teacher MODIFY subject NOT NULL;
        -- 主键(PRIMARY KEY)约束
        ALTER TABLE jalen.stuinfo ADD CONSTRAINT pk_stuinfo_stuid PRIMARY KEY(stuid);
        -- 唯一(UNIQUE)约束
        ALTER TABLE jalen.teacher ADD CONSTRAINT uk_teacher_idnumber UNIQUE (idnumber);
        -- 外键(FOREIGN KEY)约束
        -- dept为主表,emp为从表(外键表),emp中的外键列deptno引用dept中的主键
        ALTER TABLE scott.emp ADD CONSTRAINT fk_scott_emp_teptno FOREIGN KEY(deptno) REFERENCES scott.dept(deptno);
        -- 条件(CHECK)约束
        --给字段年龄age添加约束,学生的年龄只能0-50岁之内的
        alter table jalen.STUINFO add constraint ch_stuinfo_age check(age>0 and age<=50);
        -- 限定sex的值
        alter table jalen.STUINFO add constraint ch_stuinfo_sex check(sex='1' or sex='0');
        -- 限定年级的范围
        alter table jalen.STUINFO add constraint ch_stuinfo_grade check (grade>='1900' and grade<='2999');
        复制

        相关推荐:Oracle介绍、安装、客户端工具使用、服务、用户、使用一文全知道

        文章转载自数据运营与数据分析,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论