5.把自己的数据放入表中
Inset into 表名 values(值的列表)
查看表的列:
desc 表名
数字值:999.99
字符串值:'string'
date: date 'yyyy-mm-dd'
eg.
insert into students values(100001,'甘十九妹',178,date '1970-01-01');
select * from students;
插入动作必须进行提交
命令:commit;
如果建立时长度不够,可以更改
命令:
alter table 表名字 modify 列名 新数据类型(new宽度)
alter table students modify stu_id number(13);
更改数字显示方式:
col 标题 format 999999999999999
注:有时候标题是列名,有时候不一定是
更改字符串格式的的显示方式:
col stu_name format A(长度)
增加列:
alter table 表名字 ADD 新列名 数据类型(宽度);
给STUDENTS增加一个列,身份证号码。
alter table students add stu_idNO number(18);
修改列名:
alter table 表名字 rename column 旧列名 to 新列名;
删除一个列名:
alter table 表名字 drop column 列名;
删除表:
drop table 表名字;
删除帐户:
drop user 帐户 CASCADE;
数据的更新:
update 表名 set 列名1=值1,...,列名N=值N
WHERE 条件;
删除数据:
DELETE [FROM] 表明 [WHERE 条件];
注:WHERE 条件确定删除哪些数据
入门部分结束。
ORACLE中的语言分类:
DDL:数据定义语言
负责创建、删除、修改对象的命令(ORACLE中有很多种对象)
CREATE ALTER DROP GRANT REVOKE(收回授权) RENAME TRUNCATE.............
写完即提交,不需要自己提交
DML:数据操作语言
负责修改表中的数据,其他对象中的数据不能用DML修改
INSERT UPDATE DELETE.......
TCL:TRANSACTIN CONTROL LANGUAGE
提交,回滚,设置事务....
会话控制语句
SESSION:会话
ALTER SESSION SET ...=....
ALTER SESSION SET NLS_LANGUAGE='SIMPLIFIED CHINESE';
修改系统的语言。
当=号后的值为有空格时,需要加引号
系统控制语句:
ALTER SYSTEM SET...=....
ALTER SYSTEM ENABLE RESTRICTED SESSION;//将数据库设置为限制模式
ALTER SYSTEM CHECKPOINT;//设置检查点
标准数据类型:
Character strings:
CHARACTER:定长的字符串 ENAME CHARACTER(10)
CHARACTER VARYING:变长的字符串 ENAME CHARACTER VARYING(10) 张三 占6个字节,其中两个汉字占两个字节,系统自动增加4个
CHARACTER LARGE OBJECT:大对象,大到4个G
NATIONAL CHARACTER
NATIONAL CHARACTER VARYING,
NATIONAL CHARACTER LARGE OBJECT
一个数据库可以有两个字符集设置:CHARACTERSET(兼容ASCII)
SELECT * FROM EMP WHERE ENAME='张三';
NATIONAL CHARACTERSET(不兼容ASCII)
UNICODE(兼容ASCII和不兼容ASCII)
Binary strings:
BINARY LARGE OBJECT(n):不对存放的数据进行翻译解释
Numbers:
NUMERIC
DECIMAL
INTEGER
SMALLINT
FLOAT
REAL
DOUBLE PRECISION
Datetimes and intervals:
DATE
TIME WITHOUT TIME ZONE,
TIMESTAMP WITHOUT TIME ZONE
TIME WITH TIME ZONE
TIMESTAMP WITH TIME ZONE.
year-month INTERVAL,
day-time INTERVAL
ORACLE不支持Boolean Types 和 Bit strings.
Oracle SQL 内部数据类型:
VARCHAR2,NVARCHAR2:变长字符串
NUMBER:数字(变长),最大可以达到21个字节 100的N幂*数字*符号
12400000000000000000000000000000
12312313545645646789769464564654
其实是上面占用的位数少,不用存储那么多的信息,即一样长度,但是占用空间不同
NUMBER(P,S):P是精度,数字中连续的可以存在非0数字的数位的综合
S是标度,小书店后的位数目
NUMBER(5,2):99999.99最大的数字
NUMBER(5)=NUMBER(5,0)=99999
NUMBER(2,3):0.099为最大数字
NUMBER(3,-1):9990为最大数字
NUMBER(3,-2):99900为最大数字
练习:如果一个列,用来存放0.01-0.99之间的数值
如果一个列,用来存放整千1000,2000,....9000。
Number(2,2)
number(1,-3)
LONG:长整形
ROWID
DATE
二进制类型:
RAW LONG RAW
CHAR, NCHAR:定长的字符串
User-defined type (object type, VARRAY, Nested Table)
REF
CLOB, NCLOB BLOB BFILE:文本大对象
TIMESTAMP
TIMESTAMP WITH TIME ZONE
INTERVAL YEAR TO MONTH
INTERVAL DAY TO SECOND
UROWID
TIMESTAMP WITH LOCAL TIME ZONE
select * from 表名
投影:(PROJECTION)过滤列
SELECT {列名|表达式|函数} 列表 FROM 表名
不可以是比较表达式或者逻辑表达式
查询每个职工的编号,姓名和工资
查询每个职工的编号,姓名和年工资(假设表中用的是月工资)
select empno,ename,sal*12 from emp;
查询每个职工的编号,姓名和总收入(工资与分成的和)
select empno,ename,sal+comm from emp;
NULL值:无意义的,未初始化的,无效的,不可操作的
空值代入算术运算中,结果总是空
可以使用NVL(a,b):函数作用,如果a是NULL,则返回b,否则返回a
select empno,ename,sal+NVL(comm,0) from emp;
选择(selection):行过滤
SELECT ...
FROM ...
WHERE 条件
条件::=比较表达式或者比较表达式为运算数的逻辑表达式
select *
from emp
where sal>1000 and sal<2000
查询职务是MANAGER或者SALESMAN的职工信息
select * from emp where job='MANAGER' or job='SALESMAN';
查询工资膏腴1000的CLERK的信息
SELECT * FROM EMP WHERE SAL>1000 AND JOB='CLERK';
查询谁在1982年之后参加工作
select * from emp where hiredate>= date '1982-01-01'
语法的关键字及标志符(select..... emp.... sal...)都是不区分大小写的
但是表中字符串的值是区分大小写的(MANAGER.....),用单引号括起来
查询谁在1982年之后(不包含)参加工作
select * from emp
where hiredate>=date '1983-01-01'
/
查询职务是MANAGER或者SALESMAN的职工中,谁的工资大于2000
select * from emp
where (job='MANAGER' or job='SALESMAN')
and sal>2000
/
优先级为NOT>AND>OR
> < >= <= <> (!= ^=) =
between ...and....
val between a and b <===> val>=a and val<=b
in(A1,A2,...An)
val in(A1,A2,...An) <====>val=A1 or val=A2 or ....val=An
like
% 忽略任意多个任意字符
_ 忽略一个任意字符
select * from emp where ename like 'A%';
select * from emp where ename like '_A%';
查询谁的名字中含有字符串AR
select * from emp where ename like '%AR%';
查询谁的名字中有A和R
select * from emp where ename like '%A%'
and ename like '%R%';
查询谁的名字中的倒数第二个字符是E
select * from emp where ename like '%E_';
select * from 参数表 where like 'SYSTEM/%%' escape '/';
ESCAPE一次用一个,想转移多个用多个ESCAPE
conn / as sysdba
查询V$PARAMETER可以获得参数的名字和值,查询哪些参数是以log_开头的
select * from V$PARAMETER where name like 'log/_%' escape '/'
查询V$PARAMETER可以获得参数的名字和值,查询哪些参数有两个以上下划线
select * from V$PARAMETER where name like '%/_%/_%' escape '/'
查询V$PARAMETER可以获得参数的名字和值,查询哪些参数有两个下划线
select * from V$PARAMETER where name like '%/_%/_%' escape '/'
and not name like '%/_%/_%/_%' escape '/';
select *
1 from emo
2 where ....
这时可以使用分号或者/来结束命令语句。