--时间为什么不是现在呢?
--设置时区和显示时间
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