SQL语法

查询:

select employee_name from employees;

select employee_name from employees where employee_age > 25;

select e.employee_name, s.salary from employees e, salary s where e.employee_id =  s.employee_id;

selectdistincte.employee_name, s.salary from employees e, salary s where e.employee_id =  s.employee_id;

distinct关键字用于获取结果集中列e.employee_name 与 s.salary的唯一性组合(distinct相当于去重

select e.employee_id, e.employee_name,sum(s.salary)  total_salaryfrom employees e, salary s where e.employee_id =  s.employee_idgroup by e.employee_id, e.employee_name;

select e.employee_id, e.employee_name, sum(s.salary)  total_salary from employees e, salary s where e.employee_id =  s.employee_id group by e.employee_id, e.employee_namehaving (sum(s.salary)) > 10000;

select distinct e.employee_name, s.salary from employees e, salary s where e.employee_id = s.employee_idorder by s.salary desc;

select e.employee_id, e.employee_name, sum(s.salary)  total_salary from employees e, salary s where e.employee_id =  s.employee_id group by e.employee_id, e.employee_nameorder by total_salary desc;

order by 子句与distinct关键字同时使用时,也必须遵循一个规则--------order by 子句所指定的排序列必须出现在select表达式中。

select * from employees where employee_id in (select employee_id from salary);子查询

联合语句:union(并集且去重),union all(并集不去重,效率高) , intersect(交集), minus(差集)

联合语句可以进行混合运算,优先级相同,依次运行。

select student_id, student_name, student_age from a_studentsunionselect student_id, student_name, student_age from b_students;

两个查询的列数且数据类型必须相同。

minus是集合间的减法运算,该运算返回第一个集合中存在的,而第二个集合中不存在的记录。

连接:

自然连接natural join:原则,两个数据源的共有列,且具有相同的列值。

select * from employeesnatural joinsalary.

不能为公共列employee_id添加限定词,即不能写成employees.employee_id。

对于自然连接外的其他列可以使用限定词。

例如:

select employee_id, e.employee_name, s.month, s.salary from employees enatural joinsalary s ;

内连接inner join:

select e.employee_id, e.employee_name, s.month, s.salary from employees e  (inner/可省略) joinsalary sone.employee_id = s.employee_id

on为指定搜索条件。

此举与where结果相同,当设计表比较多时使用join比较好。

select * from employees join salary on ... join company on ... join sales on ...;

外连接left join和right join:

左连接即以左表为基础,右连接即以右表为基础。

select e.employee_id, e.employee_name, s.month, s.salary from employees eleft joinsalary sone.employee_id = s.employee_id

本表以employees为基础,将salary表连接到本表,这样有些没有领工资的员工也会出现子啊结果中。

简写:

select e.employee_id, e.employee_name, s.month, s.salary from employees e,salary s where e.employee_id = s.employee_id(+)

s.employee_id(+)即表示salary为附属表,当多个数据源连接是最好不使用简写。

完全连接full join:是一个左连接和一个右连接的组合,最后去除重复记录。结果与两个数据源顺序无关。

select e.employee_id, e.employee_name, s.month, s.salary from employees e  full join salary s where e.employee_id = s.employee_id

层次化查询(遍历树):

select market_id, market_name from marketstart withmarket_name = '亚洲'connect by priormarket_id = parent_market_id;

start_with为起始条件,connect by 指定如何递归下一条记录,且遵循深度优先搜索策略,prior指前一条记录。priormarket_id即为前一条记录的market_id 等于下一条记录的parent_market_id。

插入数据:

insert intostudents (student_id,student_name)values(1, '扎古斯那')

批量插入:

insert  into c_students(student_id, student_name) select student_id, student_name from students where student_id < 10;

更新数据:

update 表名 set 列1=“hhh”, 列2 = “1111”  where 。。。

删除数据:

delete from students where student_id > 10;

truncate table students;

truncate table删除全部数据,且不可回滚恢复。

创建数据库表:

create tablestudent (student_name varchar 数据类型,student_age varchar 数据类型,。。。。)tablespaceusers.

增加字段

alter tablestudentadd(class_id number);

修改数据类型

alter tablestudentmodify(class_id varchar2(20) );

删除已有列

alter table studentdrop column class_id;

字段重命名:

alter table studentrename column student_id to id;

表空间转移

alter table studentmove tablespace users;

删除数据库表

drop table student;

drop table studentcascade constraints;  cascade constraints将与本表主键用作外键的其他表的约束删除,否则只删除student时无法删除。

字符处理方法:

向左补全字符lpad()函数:

lpad(string, padded_length, [pad_string])

select lpad('1', 4, '0') employee_no from dual; 结果为0001;

向右补全字符串-----rpad()函数:

select rpad('1', 4, '*')  employee_no from dual;结果为1***;

返回字符串的小写-----lower()函数:

select  username, password from dba_users wherelower(username) = 'system';

返回字符串的大些形式----upper()函数:

select  username, password from dba_users whereupper(username) = 'system';

首字母大写initcap():

select initcap ('we all like bike') new_string from dual;结果为We All Like Bike;

返回字符串长度length()函数:

select length('12345') len from dual;

截取字符串substr()函数:

substr(string, start_index, length)

select substr('123456789', 2, 3) sub_string from dual; 结果为234,oracle字符串下表从1开始

获取字符串出现的位置---instr()函数

instr (string, sub_string, start_index, times)

select instr('123456789', '56', 2, 3) position from dual;从第2个字符搜索‘56’,直到第三次出现‘56’,因为没有,所以结果为0;

删除字符串左侧空格-----ltrim()函数:

select ltrim('        000') new_str from dual;

删除字符串右侧空格-----rtrim()函数:

select ltrim('000        ') new_str from dual;

删除字符串两侧空格-----trim()函数:

select trim('       000       ') new_str from dual;

串联字符串-----concat()函数:

select concat('hello', '  word') new_str from dual;结果为hello  word,concat只有两个参数,只能连接两个字符串。

翻译字符串-----translate()函数:

反转字符串-----reverse()函数:

select reverse('abcdfgh') from dual;结果为hgfedcba

复杂数据处理

求最大值-----max()函数:

select max(employee_age) max_age from employee;

求最小值-----min()函数:

select min(employee_name) min_name from employees;

求平均值-----avg()函数:

select avg(employee_age) avg_age from employees;

求和-----sum()函数:

select sum(employee_age) sum_age from employees;

统计记录数-----count()函数:

统计单列: select count(employee_name)  count_name, count(employee_position)  count_position from employees;

统计所有列:select count(*) from employees;

利用count(1)进行统计:select count(1) from employees;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • 查询: select employee_name from employees; select employee_...
    GALAXY_ZMY阅读 936评论 0 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,602评论 18 399
  • SQL SELECT 语句 一、查询SQL SELECT 语法 (1)SELECT 列名称 FROM 表名称 (2...
    有钱且幸福阅读 5,440评论 0 33
  • 目录 简介 在Android中存储数据有时会用到数据库,Android给我们提供了 一系列的API来操作数据库,非...
    慕涵盛华阅读 1,007评论 1 2
  • 一. Java基础部分.................................................
    wy_sure阅读 3,805评论 0 11