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