Oracle DB Day01(SQL)

--时间为什么不是现在呢?
--设置时区和显示时间
ALTER DATABASE SET TIME_ZONE='+08:00'
select to_char(current_timestamp at time zone dbtimezone,'YYYY-mon-DD hh:mi:ss am') from dual;
  --获取当前系统时间
select to_char(current_timestamp at time zone '+08:00','YYYY-mon-DD hh24:mi:ss') from dual;



SELECT SYSDATE FROM dual 
--注释是这样写的
--sql本身不区分大小写,但为了可读性,建议关键字全部大写,非关键字小写
--支持选中执行该条语句,或用分号隔开执行最后一条语句,分号不是sql必备的;
--数据库中所有类型的默认值都是null,


--DDL数据定义,对数据库对象进行操作的语言,数据库对象包括:表、视图、索引、序列等
--1 创建一个表,用DEFAULT初始化,不能创建同名对象表
    --创建表时可以使用DEFAULT为某个字段单独制定一个默认值
    --数据库中字符串用单引号,字符串的值支持大小写
    --NOT NULL非空是一种约束,确保字段值不为空,
    --NOT NULL 和DEFAULT二选一
CREATE TABLE employee(
  id NUMBER (4),
  name  VARCHAR2(20) NOT NULL ,
  gender CHAR(1) DEFAULT 'M',
  birth DATE,
  salary NUMBER(6,2) DEFAULT 5000,
  job VARCHAR2(30),
  deptno NUMBER(2)
)
--1.1 查看表的结构
DESC employee

--1.2 删除表
DROP TABLE employee

--1.3 修改表(表已经使用尽量不要改):
--1.3.1 修改表名
RENAME employee TO myemp
DESC myemp
DESC employee
--1.3.2 修改表的结构:
--1.3.1.1 添加新字段,只能在表的末尾添加新字段;
ALTER TABLE myemp
ADD(
  hirodate DATE DEFAULT SYSDATE
)
DESC myemp

--1.3.2 修改现有字段,可以改字段的类型、长度、默认值、是否非空等;
--修改表结构应注意不要在表中有数据后进行
--若表中有数据,修改字段时应避免修改类型
--修改长度避免缩小,否则可能会失败
ALTER TABLE myemp
MODIFY(
  job VARCHAR(40) DEFAULT 'CLERK'
)
DESC myemp

--1.3.3 删除现有字段;
ALTER TABLE myemp 
DROP(
name
)
DESC myemp

--2 DML是对表中数据进行操作的,伴随事务控制(TCL)
    --DML操作包括:增、删、改。
--2.1
INSERT INTO myemp(id,salary,deptno)
VALUES(9,8888,10)
    --只是假装改了数据,还没提交或回滚;提交前自己能查到别人查不到
    --
SELECT * FROM MYEMP
--提交
COMMIT

    --插入日期
  INSERT INTO myemp(birth)
  VALUES(TO_DATE('2019-3-16','yyyy-mm-dd'))
  SELECT * FROM MYEMP

--修改表中数据,要用WHERE添加过滤,满足条件的才进行修改,否则是全表修改
UPDATE myemp
SET salary = 4566, ID=3 ,JOB = 'WORK'
WHERE ID=2

SELECT * FROM MYEMP

--DELETE语句用来删除数据,删除数据通常也要添加WHERE语句来限定要删除数据的条件,否则是清空操作;
DELETE FROM myemp
WHERE ID = NULL

SELECT * FROM MYEMP

TRUNCATE TABLE myemp


SELECT SYSDATE FROM DUAL;
SELECT SYSTIMESTAMP FROM DUAL;
SELECT TO_CHAR(SYSTIMESTAMP at time zone '+8:00','YYYY.MM.DD.HH24.MI.SS') FROM DUAL;

SELECT NEXT_DAY(SYSDATE,5) FROM DUAL

SELECT EXTRACT(YEAR FROM SYADATE) CURRENT_YEAR FROM DUAL
SELECT EXTRACT(HOUR FROM TIMESTAMP '2008-10-10 13:10:10') FROM DUAL
原文地址:https://www.cnblogs.com/kwinwei/p/10584042.html