oracle数据库中sql语言创建表,更新,删除数据

时间:2022-10-21 22:21:41

一sql语言的分类

sql语言分为4类:DQL(数据查询语言),DML(数据操纵语言),数据定义语言(DDL),数据控制语言(DCL)。


二数据定义语言

数据定义语言用于建立,删除,修改数据库中的各种对象,对象比如-表,索引,视图,同义词、聚簇等

CREATETABLE/VIEW/INDEX/SYN/CLUSTER

1.创建表

语法:create table table_name(列1 列1名,

                                                           列2,列2名

                                                            列3,列3名

                                                             。。。。。)

注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。


删除表:

drop table 表名:删除表结构和数据


2.oracle常用的数据类型:

(1).文本,二进制型

char(size):定长    定义最大两千个字节

varchar(size)变长:定义最大四千个字节

nchar(n)定长:unicode数据类型,定义两千个字节

nvarchar2(n)变长:unicode数据类型,四千个字节

clob:字符型大数据,最大8tb

blob:二进制数据,存放声音,视频,最大8tb

(2)数值型

number(p,s)

p位精度位,s为小数位.范围: 1 <= p <=38,-84 <= s <= 127

保存数据范围:-1.0e-130 <= number value< 1.0e+126  

保存在机器内部的范围: 1 ~ 22 bytes

有效位:左边第一个不为0的数算起


默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。

p>0,对s分2种情况:
 s>0
精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。
s<0
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|

s=0等价于NUMBER(p)

此时NUMBER表示整数

例:123.456

number(5,2)--------------123.46    小数点四舍五入

number(5,3)----------错误,小数点左边最多有(p-s)2位,实际有三位

number(5,-2)-------100

12345678

number(5,-2)---错误,有效位>p+|s|

0.1

number(4,5)---错误 (0.10000  有效位P)

0.01

number(4,5)--0.01000


3.对表的添加,修改,删除

(1)表的添加

alert table table_name add(列名,列的数据类型)


(2)表的修改


alert table table_name modify (列名,列的类型)

(3)表的删除‘


alert table table_name drop  column 列名



三数据操纵语言

数据操纵语言包括数据的插入,更新,删除

1.数据的插入

语法格式:

INSERT INTO  table_name(column1,column2...)

VALUES  (value1 ,value2.....);



注意:

a.插入的数据应与字段的数据类型相同。 b.数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。 c.在values中列出的数据位置必须与被加入的列的排列位置相对应。 d.字符和日期型数据应包含在单引号中。 e.插入空值,不指定或insert into tablevalue(null)

插入空值有两种方法:
隐式插入:
insert into emp(empno,ename,job)values(1234,'alex',1300);
显示插入
insert into emp(ename,job,mgr)values(1234,'alex',1300,null);

创建脚本
在sql语句中使用&变量指定列值,可以看做是一占位符
例:
SQL> insert into emp(empno,ename,job) values(&empno,&ename,&job);
输入 empno 的值: 1005
输入 ename 的值: 'tom'
输入 job 的值: 'clerk'
原值 1: insert into emp(empno,ename,job) values(&empno,&ename,&job)
新值 1: insert into emp(empno,ename,job) values(1005,'tom','clerk')

已创建 1 行。

SQL> select ename ,job from emp where empno=1005;

ENAME JOB
---------- ---------
tom clerk

SQL> spool off;


2.数据的更新

语法格式:

update table_name set 字段名=值 ,.....,where [条件];


注意:

lUPDATE语法可以用新值更新原有表行中的各列。 lSET子句指示要修改哪些列和要给予哪些值。 lWHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。

3.数据的删除


语法格式:

deletefrom tbl_name      [WHEREwhere_definition]


如果不使用where子句,将删除表中所有数据。Delete语句不能删除某一列的值(可使用update)使用delete语句仅删除记录,不删除表本身。如要删除表,使用drop table语句。同insert和update一样,从一个表中删除记录将引起其它表的参照完整性问题。

几种删除的比较:


 delete from 表名; 

 dml语句,删除所有记录,表结构还在,写日志,可以恢复的,速度快,不会释放空间,产生碎片,可以闪回,可以回滚

 drop table 表名;  删除表的结构和数据

 delete from student where xh='A001';  删除一条记录

 truncate table 表名;

ddl中的语句,删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度慢,释放空间,不产生碎片,不可以闪回,不可以回滚