• Oracle基础实训


    一、Oracle基础SQL练习

    班级表:班级编号(主键、标识列)、班级名称、班主任、开班日期
    老师表:老师编号(主键、标识列) 、姓名、性别(默认值‘男’)、身份证号(必须是18位数字)、联系电话
    学生表:学号(主键、固定五位数字) 、班级编号、姓名、性别、出生日期、联系电话、家庭地址
    成绩表:编号(主键、标识列) 、学号、科目名称、分数


    1、表格创建 create table();
    语法
    CREATE TABLE [schema.]table
    (column datatype [DEFAULT expr],
    […]
    );
    schema表示对象所有者的姓名,table表示表的名称,DEFAULT表示默认值,column表示列的名称,datatype表示数据类型及长度


    2、插入数据测试
    3、查询数据测试
    4、约束:a.非空约束(NOT NULL)
    b.主键约束(PRIMARY KEY):不可为空
    c.唯一性约束(UNIQUE):可以插入空值
    注:增加约束的两种方式:
    方法一:在建表语句中;
    方法二:
    alter table t_country add constraint PK_countrycode primary key(countrycode);

    5、删除表:DROP TABLE


    6、插入数据:
    a.全列插入:
    b.部分列插入:
    c.插入来自其他表的记录

    7、查询数据
    a.全列查询:
    b.部分列查询:
    c.条件查询:
    注:为列显示不同名称


    8、删除表内的数据记录(与删除表的区别)
    逐行删除Delete from :
    直接删除Truncate:

    9、更新数据update:

    10、数据类型分类:

    a.文本数据类型
    固定长度类型(CHAR/NCHAR)
    可变长度类型(VARCHAR2/NVARCHAR2)
    注:变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

    b.日期和时间
    Date
    Timestamp:时间可以是用小数表示的秒


    c.数字
    Number(p, s) --p是精度,指总的数字数 -s指小数位数,小数点右边的数字数


    d.LOB类型(1~4GB,存储非结构化的信息,如声音剪辑、视频文件)
    CLOB:存储字符数据,如非结构化的XML文档
    BLOB:如图形、视频剪辑、声音文件
    BFILE:在数据库之外的操作系统文件中存储二进制文件

    11、ALTER TABLE命令
    a.用户要添加新的列:
    ALTER TABLE <table name> ADD(column definition…);
    b.修改数据类型的宽度或数据类型本身:
    ALTER TABLE <table name> MODIFY (column definition…);
    eg. ALTER TABLE vendor_master MODIFY (venname VARCHAR2(25));
    注:表的列不为空时,不能减小其长度
    c.新增或删除完整性约束:
    alter table t_country add constraint PK_countrycode primary key(countrycode);
    d.物理删除该列列名及其对应的数据:
    ALTER TABLE table_name DROP COLUMN column_name;

    12、DESC查看表结构命令:DESC table_name

    13、事务处理命令
    COMMIT
    保存点:SAVEPOINT savepoint_id;
    ROLLBACK :ROLLBACK;ROLLBACK TO SAVEPOINT save_pt;

    14、创建现有表的副本 create table as....


    15、外键(子表的外键参考父表的主键)
    插入子表数据:必须先插入父表相关记录;
    删除父表数据:必须先删除子表相关记录;

    练习:加入外键,并尝试向子表插入父表没有的数据,删除父表中子表有的记录:
    CREATE TABLE T_BuyerInfo
    (
    buyerNo int primary key auto_increment,
    chnName varchar(50),
    countryCode varchar(10) ,
    buyerAddr varchar(300),
    buildDate date,
    yearSale double,
    CONSTRAINT t_buyer_cc_fk FOREIGN KEY(countryCode)
    REFERENCES t_country(countryCode)
    );

    16、 关联查询
    inner join(等值连接)只返回两个表中联结字段相等的行
    left join(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录
    right join(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录

    13、 运算符:=,>,< ,>=,<=,,<>,!=,BETWEEN 和 NOT BETWEEN


    14、 逻辑表达式
    ? And : 1 AND 1 =1 ; 1 AND 0 = 0; 0 AND 0 = 0;
    ? Or : 1 OR 1 = 1; 1OR 0 = 1; 0 OR 0 = 0;
    ? Not: select * from T_BuyerInfo where not yearsale>900000

    15、 通配符
    一个字符: ‘_’
    任意长度的字符串: %

    16、 查询细节
    排序查询: desc(降序) asc
    使用AS来命名列:
    使用常量列:
    限制固定行数:rownum
    Between
    is null
    in
    rowid


    17、 函数
    a.字符串函数:
    Length(string):求字符串的长度
    lower(String):转小写
    upper(String):转大写
    REPLACE(str ,from_str ,to_str )

    b.日期函数
    Months_between(d1,d2),: 查出两个日期之间的月份数;
    Last_day(d),d表示日期:返回月末最后一天相应的日期;
    sysdate:


    c. 数学函数
    ABS(x) 返回x的绝对值
    Power(n1,n2):求n1的n2次方
    Round(n1,n2):返回n1小数点为n2位的数,四舍五入法

    d. 聚合函数(常用于GROUP BY从句的SELECT查询中)
    AVG(col)返回指定列的平均值
    COUNT(col)返回指定列中非NULL值的个数
    MIN(col)返回指定列的最小值
    MAX(col)返回指定列的最大值
    SUM(col)返回指定列的所有值之和

    e.转换函数
    To_char(d|n,fmt):将日期或数字按指定格式转换为字符串
    To_char(sysdate,’yyyy”-”mm”-”dd’)
    To_char(23457,’$99,999.00’)
    rr:返回指定的日期的世纪年份值
    To_date(s,[fmt]):
    将char或varchar数据类型转换为date数据类型
    To_date('2-11-2004','month-dd-yyyy')
    To_number(s):将包含数字的字符串转换为可以执行算术操作的number类型

    f.其他:
    select case '1' when '0' then '男' when '1' then '女' end case from dual;
    select decode(gender,'0','男','1','女') from dual

    18、序列:生成唯一、连续的整数,用于生成主键值
    a.nextval:第一次使用nextval时,将返回该序列的初始值
    b.currval:返回序列的当前值,即最后一次引用nextval时返回的值

    CREATE SEQUENCE <sequencename>
    INCREMENT BY n
    START WITH n
    [MAXVALUE n] [MINVALUE n]
    [CYCLE|NOCYCLE]
    [CACHE n|NOCACHE];
    注:INCREMENT BY n:指定序列数字之间的整数间隔
    START WITH n:指定要生成的第一个序列号
    MINVALUE n:指定序列的最小值
    MAXVALUE n:指定序列可以生成的最大值
    CYCLE:指定序列即使达到了最大值,还应继续生成值,通常是循环从头开始产生序列值
    CACHE:允许更快地生成序列号,Oracle分配序列号,并将其保存在内存中以便更快地访问

    c.删除序列
    语法:
    DROP SEQUENCE <sequencename>;
    示例
    DROP SEQUENCE member_seq;
    查看序列:
    select * from seq;

    19、视图:经过定制的表示方式,用来显示来自一个或多个表的数据,也称为“虚拟表”
    CREATE [OR REPLACE] VIEW viewname[(alias,alias,…)]
    AS subquery
    WITH CHECK OPTION [CONSTRAINT constraintname]
    WITH READ ONLY [CONSTRAINT constraintname]

    20、索引(加快 SQL 语句的执行,慎重,需具体情况具体分析)
    a.唯一索引:确保在定义索引的列中没有重复的值
    CREATE UNIQUE INDEX 索引名 ON 表名(字段名);
    b.组合索引:在表的多个列上创建的索引,对于在 WHERE 子句中包含多个列的查询,可以提高数据访问速度
    CREATE INDEX 索引名 ON 表名(列名1,列名2);
    c.分区索引:索引存储在不同的分区中并对应不同的表空间,与表分区一样
    CREATE INDEX indexname ON tablename(c1,c2,…) [GLOBAL/LOCAL]
    PARTITION BY RANGE(c2)
    PARTITION VALUES LESS THAN(v1) TABLESPACE tb1,
    PARTITION VALUES LESS THAN(v2) TABLESPACE tb2;

  • 相关阅读:
    Aop——面向切面编程
    认识界上最流行的Api框架——swagger
    手把手SSM框架实战
    面试题
    重新拾起JavaSE的日子
    使用IntelliJ IDEA创建第一个Maven项目
    Java面试必考题
    Vue项目——去哪网(首页部分)
    Vue项目的准备
    vue.js ③
  • 原文地址:https://www.cnblogs.com/s844876674/p/4634113.html
Copyright © 2020-2023  润新知