Oracle常用sql语句

本文详细介绍了Oracle数据库中的SQL语句,包括数据定义语言DDL(如创建表、索引、修改表结构和添加注释)和数据操纵语言DML(如查询、更新、插入和删除操作),以及groupby和distinct的关键用法。
摘要由CSDN通过智能技术生成

Oracle常用sql语句

数据定义语言(DDL, Data Definition Language)

1.创建表

创建表的语句:

--创建表
CREATE TABLE 表名(    
    列名1 数据类型 primary key,    
    列名2 数据类型 not null,    
    列名3 数据类型  
);

例如:

--创建学生表
CREATE TABLE Student(    
    id varchar2(32) primary key,    
    name varchar2(8) not null,    
    age number  
);
2.创建/删除索引

语句:

--索引的创建,UNIQUE为可选字段,表示唯一索引
create [UNIQUE] index 索引名 on 表名(列名); 

--删除索引
drop index 索引名 on 表名;

例如:

--创建索引
create UNIQUE index stu_index on Student(id,name); 

--删除索引
drop index stu_index on Student;
2.修改表结构

语句:

--添加新字段
alter table 表名 add (字段名1 字段类型 默认值 是否为空);

--修改原有字段
alter table 表名 modify (字段名 字段类型 默认值 是否为空);

--删除现有字段
alter table 表名 drop column 字段名;

--字段的重命名:
alter table 表名 rename column 列名 to 新列名

--表的重命名
alter table 表名 rename to 新表名

例如:

--添加新字段(多列)
alter table Student
add(
     dept_Id varchar(10),
     phone varchar(50),
     email VARCHAR2(100),
     school_name varchar(200) default '重庆大学'
 );
 --添加新字段(单列)
alter table Student
add(
     email VARCHAR2(100) 
 );
 
--修改原有字段(多列)
alter table Student 
modify(
       phone VARCHAR2(11) ,
       email VARCHAR2(200) NOT NULL
);

--修改原有字段(单列)
ALTER TABLE Student MODIFY phone DATE NOT NULL;

--删除现有字段(单列)
alter table Student drop column email;
--删除现有字段(多列)
alter table Student drop ( email, phone );

注意:请谨记在添加新列时,如果添加新列时需要使用NOT NULL约束,则需要保证在约束添加前数据表必须为空,不然将无法添加新列;不能添加表中已经存在的列,不然会导致错误。另外,ALTER TABLE ADD列语句在表的末尾添加新列。

3.表or字段注释

语句:

comment on table 表名 is '表的注释信息';
comment on column 表名.字段名 is '字段的注释信息';

例如:

--添加表注释:  
Comment on table Student is '学生信息';  
--添加字段注释:  
comment on column Student.id is '学生id';  
comment on column Student.name is '姓名';  
comment on column Student.age is '年龄'; 

数据操纵语言(DML, Data Manipulation Language)

1.查询语句

语句:

--SQL like通配符(%,_)
    --%模糊查询
    SELECT * FROM Student WHERE name LIKE '张%';
    --_替代一个字符
    SELECT * FROM Student WHERE name LIKE '_oogle';

--SQL in 查询张三或李四的信息
SELECT * FROM Student WHERE name IN ('张三','李四');

1.1 group by语句

注意:select 后面的字段要么是 group by 后的字段要么是聚合函数里的字段

当在一个SQL中同时使用where、group by和having子句时,其执行顺序为:where>group by>having

--示例
select 字段1,count(字段2),sum(字段3) from 表名 group by 字段1

--按照姓名分组,并查询年龄最大的人
select name,max(age) from student group by name 
1.2 distinct用法

注意:distinct关键字必须放在select 的最前面。

--正确的distinct用法
select distinct name,age,sex from student

--报错,distinct必须放在select的最前面
select age,distinct name,sex from student

(查询根据name去重后的学生信息)
--distinct单列,可以正确去重
select distinct name from student
--distinct多列,不会去重,这是因为多列是针对name,age,sex的组合来distinct的,它只会将所有字段值都相同的记录“去重”掉
select distinct name,age,sex from student
--可以根据group by来去重
select name,min(age),min(sex) from student group by name
2.更新语句

语句:

UPDATE 表名
SET column1 = value1, column2 = value2, ...
WHERE 查询条件;

例如:

UPDATE Student
SET name = '张三', email = 'zhangsan@qq.com'
WHERE id=2003;
3.插入语句

语句:

--常规插入
INSERT INTO 表名 (列名1,列名2,列名3,列名4)
    VALUES(1,'jian',6000,10);
--查询插入
INSERT INTO 表名 (列名1,列名2,列名3,列名4)
   SELECT 列名1,列名2,列名3,列名4 FROM 表名;

例如:

--常规插入(插入表中的某些字段)
INSERT INTO myemp (id,name,salary) VALUES(1,'jian',6000);
--常规插入(插入表中所有字段)
INSERT INTO myemp VALUES(1,'jian',6000,10);
--查询插入   
INSERT INTO myemp(id,name,salary,dempno) SELECT id,name,salary,dempno FROM otheremp;
4.删除语句

语句:

DELETE FROM 表名
WHERE 删除的条件;

例如:

DELETE FROM myemp
WHERE id=2003 and name='张晓哲';
  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值