1. 数据定义语言(DDL)
(1)创建表和约束
(2)根据结果集创建表
2. 数据操纵语言(DML)
2.1 SELECT 数据查询
(1) 查看表空间
(2)查看用户下所有的表
(3)取前10条记录
(4)查询中的算术运算
(5)字符串连接操作符(||)
(6)查询时间区间
2.2 INSERT 数据插入
(1)插入一条记录
(2)插入一个数据集
2.3 UPDATE 数据插入
(1)更新一条记录
2.4 DELETE 数据删除
1. 数据定义语言(DDL)
包括CREATE(创建)命令、ALTER(修改)命令、DROP(删除)命令
(1) 创建表和约束
创建表命令: CREATE TABLE
创建约束命令:ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束内容
CREATE TABLE INFOS (
STUID VARCHAR2(7) NOT NULL, --学号 学号=‘S’+班号+2位序号
STUNAME VARCHAR2(10) NOT NULL, --姓名
GENDER VARCHAR2(2) NOT NULL, --性别
ENROLLDATE DATE, --入学时间 )
/ ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) --主键约束
/ ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = '男' OR GENDER = '女') -- check约束
/ ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT CHECK(SEAT >=0 AND SEAT <=50)
/ ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE CHECK(AGE >=0 AND AGE<=100)
/
在Oracle代码中,“/”执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“/
/ ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) --创建主键
ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID) --创建外键
(2)根据结果集创建表
语法:CREATE TABLE 表名 AS SELECT语句
代码演示:CREATE TABLE INFOS1 AS SELECT * FROM INFOS;
如果只复制表结构,只需使查询的条件不成立(比如where 1=2),就不会查询从出任何数据,从而复制一个表结构
2. 数据操纵语言(DML)
包括INSERT(插入)命令、UPDATE(更新)命令、DELETE(删除)命令、SELECT … FOR UPDATE(查询)
2.1 SELECT 数据查询
SELECT 简单查询语法:
SELECT *|列名|表达式 FROM 表名 WHERE 条件 ORDER BY 列名
表达式可以是列名、函数、常数等组成的表达式
(1) 查看表空间
1)select default_tablespace from dba_users where username='TMS21'; 查看用户所属的表空间
2)select * from dba_tablespaces; 查看所有的表空间
(2)查看用户下所有的表
1)select * from all_tables where owner='TEST';TEST为用户名,用户名必须是大写
2)select table_name from user_tables; 查看当前登录的用户的表
3)select * from user_tables; 查看当前登录的用户的表
4)select table_name,tablespace_name,temporary from user_tables where table_name like '%tb_name%' ; # tb_name 用模糊表名代替
(3)取前10条记录
1) select * from tbname where rownum < 11;
2) select * from (select * from tbname order by id desc ) where rownum<=10;
(4)查询中的算术运算
1)每名员工年终奖是2000元,请显示基本工资在2000元以上的员工的月工资,年总工资
select ename,sal,(sal*12+2000) ysal from emp where sal>2000;
(5)字符串连接操作符(||)
1)在EMP表中,查询工资在2000元以上的姓名以及工作
select (ENAME || ' is a ' || JOB) AS "Employee Details" from EMP where SAL>2000;
(6)查询时间区间
1)to_char() 函数
SELECT * FROM testdatetime WHERE to_char(列名,'yyyy-MM-dd') BETWEEN '2018-07-01' AND '2019-03-01';
2)to_date() 函数
select * from 表名 bnm where bnm.date >= to_date('2016-03-04','yyyy-mm-dd') and bnm.date <= to_date('2016-03-27','yyyy-mm-dd')
按照具体到秒数
select * from 表名 bnm where bnm.date >= to_date('2016-04-01 10:01:01','yyyy-mm-dd hh:mi:ss')
2.2 INSERT 数据插入
语法:INSERT INTO 表名(列名1,列名2……) VALUES (值1,值2……)
(1)插入一条记录
INSERT INTO INFOS
VALUES ( 's100104','阮小二','男',26,3,SYSDATE,default,'1001');
获取时间,也可以用TO_DATE('2009-8-9 06:30:10',' YYYY-MM-DD HH24:MI:SS ')
(2)插入一个数据集
INSERT INTO INFOS2 SELECT * FROM INFOS;
2.3 UPDATE 数据插入
语法:UPDATE 表名 SET 列名1=值,列名2=值…… WHERE 条件
(1)更新一条记录
UPDATE INFOS SET CLASSNO='1002',STUADDRESS='山东莱芜' WHERE STUNAME='阮小二';
2.4 DELETE 数据删除
语法: DELETE FROM 表名 WHERE 条件
DELETE命令是DML命令,删除后的数据可以通过日志文件恢复
网友评论