这学期的数据库实验做完了,是时候应该把用到的sql整理一下。平台是oracle
oracle的一个特点是重命名不需要写as关键字,下面就不再赘述了。
1.建表:
create table teacher (
id varchar(10),name varchar(20),salary numeric(2,0))
用逗号将几列隔开,格式为属性名+类型+限制(可选),这里varchar是变长字符串,括号中的数字表示最大位数。numeric是数字,括号中两个参数分别表示最大长度和保留的小数位数(默认四舍五入)。要求存入表中的数据四舍五入保留小数几位的时候 需要在建表的时候就定义好,这样系统会对插入的数据自动进行处理。
这是普通的建表,还可以在select基础上建表:
create table teacher as(
select name teacher_name
from myteacher)
如上,表中的属性和名称就是查询结果,当然也可以在表名后面指定属性名称和类型,和查询结果一一对应,查询中重命名省略as。
删除表的时候直接drop teacher
同样的规则也适用于view
2.查询:
select *
from A
where name= '张三 '
比较简单,注意在语句中进行相等判断的时候等号后面要有一个空格。
运算顺序为from---where---group by---having---select----order by
另外,有分组时,查询的对象必须是分组属性或者是聚集函数。去重在select后加distinct,默认不去重
判断是否为null不用等号,而是用is null和is not null
得到属性长度:length(name)
in和exists关键字就不提了
3.删除:
delete from A where....会把A中所有符合条件的元组删除
4.插入:
insert into A
values('name','age','salary');
只写出表名的话默认是插入一个完整的元组,也可以在A后用括号指出属性名只插入一个含有几列属性的元组,没有值的属性置null。只能一条一条插
也可以直接把一个查询结果插入:
insert into A
select *
from B
5.更新:
update A
set salary = salary*2
where name='张三'
修改特定属性的值,也比较简单。
6.二元运算:运算关键字两边用括号包起来,两边的属性必须完全对应。
并:union 自动去重,如果不想去重使用union all
交:intersect
差:except
7.字符串处理:
剪切属性字符串:substr(name,0,1,) 第一个参数是原始字符串,二三分别是起点和剪切长度,第一个字就从1开始。返回值就是剪出的字符串
替换字符串:replace(name,'a','b')参数一仍然是原始值,二是目标字符串,三是替换的字符串。返回值是替换后的字符串
正则表达式:oralce上有几个用于正则表达式的函数,比较复杂,只是进行格式判断的话可以直接用 属性+like+ ‘正则表达式’
8.with
with用于为查询提供一个临时表,注意只能用于查询,而且可以建不止一个临时表,用逗号隔开即可。
with A(name) as
(select name from B)
select ....
这里的with语法和create table相同。
9.在表中加入一个字段:
alter table T add 字段名 varchar(10);