• oracle


    CREATE TABLE employee_fanchuanqi(
    id NUMBER(4),
    name VARCHAR2(20),
    gender CHAR(1),
    birth DATE,
    salary NUMBER(6,2),
    job VARCHAR2(30),
    deptno NUMBER(2)
    );

    DESC table_name:查看表结构
    看到表的列的名字,以及对应的类型,长度等
    DESC employee_fanchuanqi;


    删除一张表的语法
    DROP TABLE table_name
    DROP TABLE employee_fanchuanqi


    DEFAULT关键字
    用于为给定的列(字段)设置默认值
    CREATE TABLE employee(
    id NUMBER(4),
    name VARCHAR2(20) NOT NULL,
    gender CHAR(1) DEFAULT 'M',
    birth DATE,
    salary NUMBER(6,2),
    job VARCHAR2(30),
    deptno NUMBER(2)
    );
    数据库中字段无论是什么类型,默认值都是NULL
    若使用DEFAULT指定了默认值,则使用指定的。

    NOT NULL约束
    在创建表的时候可以为列添加非空约束,被约束的
    列在插入数据时必须给值。此列不允许为空。


    修改表名
    RENAME old_name TO new_name

    需要注意:新的表名不能是数据库中现有的表
    RENAME employee_fanchuanqi
    TO emp_fanchuanqi


    修改表:
    为表添加新的字段(列),总是在表的最后一列追加
    ALTER TABLE emp_fanchuanqi
    ADD (hiredate DATE DEFAULT sysdate);

    sysdate是一个日期的值,表示当前系统时间。


    从表中删除一列
    ALTER TABLE emp_fanchuanqi
    DROP (hiredate);


    修改表中现有的列
    ALTER TABLE emp_fanchuanqi
    MODIFY (
    job VARCHAR2(40) DEFAULT 'CLERK'
    );

    修改表字段时的注意事项:
    1:尽量不修改字段类型。
    2:字段长度尽量不要减少。
    3:修改后的字段,只对新插入的数据产生影响,
    修改字段前的所有数据不影响。


    DML操作
    向表中插入数据
    INSERT INTO table_name
    VALUES(1,'范传奇',22,'男',1500)


    INSERT INTO
    emp_fanchuanqi(id,name,salary)
    VALUES(1,'boss',1500)

    INSERT语句是向表中插入数据
    INSERT语句指定的列对应的值会被插入到表中
    没有列举的列会插入NULL,但是,若该列有设置
    默认值(DEFAULT关键字设置的),那么就插入
    设置的默认值。
    若某列为NOT NULL,执行INSERT语句时又没有
    指定该列,那么插入会抛出违反为空约束的异常

    执行INSERT语句时,若没有指定插入任何列,那
    么就是全列插入,注意,给的值顺序必须与表中
    列的顺序完全一致,并且不能忽略任何一个列的

    查询表数据
    SELECT * FROM emp_fanchuanqi


    INSERT INTO emp_fanchuanqi(id,name,salary)
    VALUES(2,'tom',2500)

    INSERT INTO emp_fanchuanqi(id,name,salary)
    VALUES(3,'JERRY',3500)

    事务控制:

    COMMIT
    用于提交事务。

    ROLLBACK
    用于回滚事务。那么本次事务中所有的增删改操作
    全部失效。


    TO_DATE()函数
    TO_DATE('2009-09-01','YYYY-MM-DD')


    INSERT INTO emp_fanchuanqi
    (id,name,birth)
    VALUES
    (1,'jack',TO_DATE('1990-09-01','YYYY-MM-DD'))


    修改表中的数据
    UPDATE emp_fanchuanqi
    SET job='MANAGER'
    WHERE salary=8500;
    注意:通常情况下,更改表时,要添加WHERE
    来指定过滤条件,若不指定WHERE则是全表修改
    通常不会这样做。


    从表中删除数据
    DELETE FROM emp_fanchuanqi
    WHERE name='tom'

    删除数据时更要注意,添加WHERE.否则是全表
    删除。

    TRUNCATE TABLE emp_fanchuanqi;
    不能回滚(rullback)


    字符串函数 拼接显示 ||
    CONCAT()函数
    select concat(ename,sal) from emp
    select concat( concat(ename,','),sal) from emp
    或者select ename ||','|| sal from emp

    LENGTH函数 长度

    SELECT ename,LENGTH(ename)
    FROM emp

    upper,lower,initcap
    将字符串转换为全大写,全小写,以及首字母大写

    伪表 dual(DUAL) 提供测试查询
    SELECT
    UPPER('helloworld'),
    LOWER('helloworld'),
    INITCAP('helloworld')
    FROM emp

    TRIM,LTRIM,RTRIM
    去除当前字符串中两边的指定重复字符,LTRIM仅去除左侧的,RTRIM则去除右侧的

    SELECT TRIM('e' from 'eeeeeliteeeeee')
    FROM DUAL;
    参数中from前面只能是单一字符
    若没有from以及前面的字符,则是去除空白

    SELECT LTRIM('eeeeliteeeee','e')
    FROM DUAL;

    SELECT RTRIM('eeeeliteeeee','e')
    FROM DUAL;
    同样的,不指定第二个参数,默认是去除空白


    补位函数
    AAAAAAAAAAAAAAAAAAAA
    AA
    显示20个字符,不够左边补若干空格
    AAAAA

    SELECT LPAD(sal,20,'$')
    FROM emp
    作用:要求显示20个字符,若sal的值不足长度,则
    补充若干个'$',以达到20个字符

    SELECT RPAD('aaaaAAAAAA',5,'$')
    FROM DUAL


    substr (char,m,n)截取字符串从m开始截取n个字符
    数据库中下标都是从1开始,第三个参数不指定则是截取到末尾,
    长度超过实际字符长度,也是截取到末尾
    SELECT
    INSTR('Doctor Who Who Who','Who'9,2)
    FROM DUAL;

    instr(char1,char2,n,m)函数查找char2在char1中的位置
    n为从第几个字符开始,m为第几次出现,n,m不写默认都是1


    数字函数
    round(n,m)四舍五入 m小数点后保留几位
    select round(55.3442,0) from dual
    trunc(n,m)截取数字
    select trunc(2255.3442,-2) from dual

    mod(n,m)求余数

    ceil(n)取大于或等于n的最小整数值
    floor(n)取小于或等于n的最大整数值

    系统当前时间戳
    SELECT SYSTIMESTAMP FROM DUAL;


    SELECT
    TO_DATE(
    '2008-08-12 22:45:33',
    'yyyy-mm-dd hh24:mi:ss'
    )
    FROM
    DUAL;


    SELECT
    TO_CHAR(
    sysdate,
    'yyyy"年"mm"月"dd"日" hh:mi:ss'
    )
    FROM dual;
    在日期格式字符串中,出现的非关键字符或符号
    的其他字符时,需要使用双引号。


    两个日期可以进行减法操作,差为相差的天数。
    SELECT sysdate-hiredate,ename
    FROM emp_fanchuanqi


    last_day() 返回月底最后一天
    select last_day(sysdate) from emp

    add_months(date,i)
    对给定日期加上指定的月,若i为负数则是减去
    查看每个员工入职二十周年日期
    select ename,add_months(hiredate,12*20) from emp

    计算两个日期之间相差的月,date1-date2
    months_between(date1,date2)

    select ename,months_between(sysdate,hiredate) from emp

    next_day(date,i)返回date日期数据的下周几
    1周日2周一 依次类推
    select next_day(sysdate,4) from dual


    least,greatest 求最小值与最大值,除了日期外,常用数字也可以比较大小

  • 相关阅读:
    存储引擎-Buffered tree
    存储引擎-Bitcast
    飞锐GIS开发基础系列
    arcgisserver
    综​合​管​网​方​案​说​明
    Leaflet交流
    .NET开源工程推荐(Accord,AForge,Emgu CV)
    GIS科研站
    C语言I博客作业008
    预习原码补码
  • 原文地址:https://www.cnblogs.com/Bighua123/p/7567112.html
Copyright © 2020-2023  润新知