`

SQL编程及高级查询

 
阅读更多

创建表空间、创建用户、创建表、对表添加约束、修改约束和删除约束属于数据定义语言(DDL)

用户授权、回收权限属于数据控制语言(DCL)

数据操控语言(DML)用于检索、插入和修改数据库信息。

 

--创建一张学生表
create table student(
stuid number(4) primary key,
stuname nvarchar2(20) not null,
stusex char(2) check(stusex='男' or stusex='女'),
stuage number(3) default 20,
stuphone char(11) not null
);

create table stu_backup(
stuname nvarchar2(20) not null,
stuage number(3) default 20,
stuphone char(11) not null
);

--把已经存在的表里的数据添加到另一张表里来
insert into stu_backup select s.stuname,s.stuage,s.stuphone from student s
select * from stu_backup;


--添加一列
alter table student add(stubirthday date);
--添加数据
insert into student(stuid,stuname,stusex,stuage,stuphone)
values(1000,'李慧坚','男',20,'13645698799');

insert into student(stuid,stuname,stusex,stuphone)
values(1001,'吴乾','男','13645698659');

insert into student(stuid,stuname,stusex,stuphone)
values(1002,'杨廉','女','13645698688');

insert into student values(1003,'邓展南','女',18,'15945687985',sysdate);
commit;

insert into student values(1004,'刘勇','女',28,'15945687989',sysdate);
commit;


insert into student values(1005,'罗毅','男',16,'15945687977',to_date('1998-11-11','yyyy-mm-dd'));
commit;

insert into student values(1006,'学霸','女',20,'15945686977',to_date('1994-11-11 12:23:23 ','yyyy-mm-dd hh:mi:ss'));
commit;


select * from student;

--修改数据
update student set stuage=25;
update student set stuage=25 where stuid=1000;
update student set stubirthday=to_date('1980-12-12 11:45:23','yyyy-mm-dd hh:mi:ss'),stuphone='13245678965'
where stuid=1000;

--删除数据
delete from student;
delete student;
delete student where stuid=1006;
--truncate
truncate table student;
--删除表的数据有两种方法
--1.是delete,用delete删除,可以加条件,而且可以回滚事务
--2.是truncate,用truncate删除,不能加条件,直接整表的数据都被永久的删除,自动提交事务,所以没办法回滚事务

--查询
--查询学生表所有的列的内容
select * from student for update;
--查询学号为1000的学生信息
select * from student where stuid=1000;
--查询学号为1000的学生的姓名和年龄
select student.stuname,student.stuage from student where student.stuid=1000;
--只想查这张表里的性别,去掉重复的
select distinct stusex from student;
--查询时可以给表起个别名,方便使用
select s.stuid  "stuno",s.stuname "stuname"  from student s;
--根据年龄来进行排序查询,可以升序(asc)也可以降序(desc),默认是升序
select * from student order by stuage desc;
--利用现有的学生表再创建一个新的表(相当于复制表的功能)
create table new_studnet as select * from student;
select * from new_studnet;

--查询名字的年龄是xx
select stuname||'的年龄是'||stuage as "学生的年龄" from student;

--员工表里有几个部门
--group by分组,如果你的查询语句里有了group by,那么select的后面
--只能查询group by后面的列,或者是聚合函数
select e.deptno from emp e group by e.deptno;

--分完组后再加条件,用having关键字,后面跟条件
--注意,分组前加条件用where,后组后加条件用having关键字
select e.deptno from emp e group by e.deptno having e.deptno=10;


--简单查询所用的一些语法
select from 表名 where group by having order by

--查询中也可以用到算术运算符(f,-,*,/)
select * from student;
--查询每个人年龄加了5岁之后的年龄
select s.stuage 没加5岁前, s.stuage+5 加了5岁后 from student s;
--%不是求余的意思
select mod(3,5) from dual; --用到一个数据函数

--还可以用到比较运算符(=,!=,>,<,>=,<=,<>),between ..and ,in .like,is null,is not null
--查询学生年龄大于20岁的学生信息
select * from student s where s.stuage>=20;
--查询年龄在15-20之间
select * from student s where s.stuage>=15 and s.stuage<=20;
select * from student s where s.stuage between 15 and 20;
--查询年龄是15,18
select * from student s where s.stuage in(15,18);
select * from student s where s.stuage=15 or s.stuage=18;
--查询没生日的学生信息
select * from student s where s.stubirthday is null;
select * from student s where s.stubirthday is not null;
--模糊查询,like配合%或者_
--%指任意长度的任何字符
--_指一个长度的任何字符
--查询学生表里名字是以 李 开头的
select * from student s where s.stuname like '李__';
--查询中的逻辑运算符(and ,or,not)
--查询年龄大于15并且生日不为空的学生信息
select * from student s where s.stuage>15 and s.stubirthday is not null;

select abs(100),abs(-100) from dual;
select sign(100),sign(-100),sign(0) from dual;

select ceil(-3.1) from dual;
select floor(3.1) from dual;
select round(5555.6666,2.5) from dual;

select sysdate  hz from dual;
select systimestamp  hz from dual;

--聚合函数avg(),max(),min(),sum(),count()
select * from student;
select max(stuage) from student;
select min(stuage) from student;
select avg(stuage) from student;
select sum(stuage) from student;
select count(*) from student;

--根据部门编号来分组并且求出每个部门有多少个人
select deptno, count(empno) from emp group by deptno
-- 先根据部门编号来分组,然后求出每个部门的工资的最大值,最小值,平均值
select e.deptno, max(e.sal),min(e.sal),avg(e.sal) from emp e group by e.deptno having avg(e.sal)>2000;
select * from emp where deptno=30;


--分析函数
--分析函数
select e.ename,e.deptno,e.sal,rank() over(partition by e.deptno order by e.sal) "rank"
 from emp e;
 
select e.ename,e.deptno,e.sal,dense_rank() over(partition by e.deptno order by e.sal) "dense_rank"
 from emp e;
 
 select e.ename,e.deptno,e.sal,row_number() over(partition by e.deptno order by e.sal) "row_number"
 from emp e;

分享到:
评论

相关推荐

    SQL Server高级查询与T-SQL编程知识点汇总

    SQL Server高级查询与T-SQL编程是数据库管理与开发中的核心技能,涵盖了多个关键知识点。以下是对这些主题的详细说明: 1. **数据库设计**: - **需求分析**:这是设计过程的第一步,旨在理解用户的需求,确定系统...

    Oracle SQL高级编程

    1. 存储过程和函数:编写使用PL/SQL编程语言的存储过程和函数,以实现复杂的逻辑和业务规则。 2. 高级查询技术:使用Oracle SQL的高级特性,如分析函数、子查询、连接以及数据聚合等。 3. 事务处理:深入理解如何...

    SQL_Server高级编程管理指南.rar

    综上所述,《SQL Server高级编程管理指南》涵盖了数据库设计、T-SQL编程、性能优化、安全管理和高可用性等多个方面,是一本全面的SQL Server学习资料。通过深入研读,读者可以全面提升在SQL Server环境中的编程和...

    精通 ORACLE SQL高级编程 学习笔记

    精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记

    SQL Server 高级编程

    1. **T-SQL编程**:T-SQL(Transact-SQL)是SQL Server的扩展,提供了更多的控制和功能。了解如何编写存储过程、触发器、函数(包括内置和用户定义)以及事务管理,是高级编程的基础。 2. **索引和查询优化**:索引...

    Oracel SQL高级编程笔记

    Oracle SQL高级编程笔记是针对数据库管理员、开发人员和数据分析师的重要参考资料,涵盖了SQL在Oracle数据库系统中的高级应用。这些笔记详尽地阐述了如何利用Oracle SQL进行高效的数据查询、操作和管理,旨在提升...

    Oracle高级开发课程之PL-SQL编程入门视频

    教程名称:Oracle高级开发课程之PL-SQL编程入门视频课程目录:【】PL_SQL编程课程_-lesson3【】PL_SQL编程课程_lesson5-2(完结)【】PL_SQL编程课程_最佳入门教程-intr1【】PL_SQL编程课程_最佳入门教程-lesson1【】...

    Oracle sql 高级编程(包含书中sql 附件)

    《Oracle SQL高级编程/数据库系列》的作者莫顿以精炼、风趣的语言揭开了Oracle SQL高级编程的神秘面纱。所涵盖的内容涉及SQL核心、SQL执行、分析函数、联结、测试与质量保证等,并提供大量实用性建议,且总结出...

    oracle sql 高级编程

    Oracle SQL高级编程是针对数据库开发和管理的专业领域,旨在帮助高级编程人员深入理解和掌握SQL在Oracle数据库中的应用。Oracle数据库是世界上最广泛使用的数据库系统之一,它提供了强大的功能和高效的性能,使得SQL...

    数据库基础 高级sql编程

    高级 SQL 编程能够极大地提高数据库的查询效率和数据处理能力,为企业提供更加智能和高效的数据管理解决方案。 With 子句 With 子句是 SQL 中一种高级的查询语句,能够将复杂的查询语句简化成简单易读的语句。With...

    ORACLE SQL 高级编程.pdf (全)

    5. 高级PL/SQL编程:包括PL/SQL集合、异常处理、游标使用以及在PL/SQL中实现复杂的业务逻辑。 6. 性能优化:理解如何通过SQL优化提高数据检索和修改的效率,涉及SQL执行计划分析、索引优化、SQL调优等。 7. 数据...

    SQL Server 2000 高级编程技术

    SQL Server 2000 高级编程技术

    SQLSERVER2000高级编程

    《SQLSERVER2000高级编程》是一本深入探讨Microsoft SQL Server 2000的专著,尤其关注其中的存储过程技术。SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在企业级数据管理、分析和应用开发中扮演着...

    Oracle SQL 高级编程 附源码

    本资源包含"Oracle SQL 高级编程"的详细教程及配套源码,旨在帮助读者深入理解并熟练掌握Oracle SQL的高级特性。 一、子查询 Oracle SQL中的子查询允许在一个查询中嵌套另一个查询,用于获取或比较数据。子查询可以...

    Oracle SQL高级编程 中文版

    《Oracle SQL高级编程》是图灵程序设计丛书数据库系列中的一部重要著作,由资深Oracle专家撰写,并得到了OakTable团队的强力推荐。这本书是Oracle开发人员和DBA提升技能、深入理解Oracle SQL不可或缺的参考资料。它...

    Oracle+SQL高级编程

    3. **PL/SQL编程**:Oracle的PL/SQL是一种过程化语言,用于编写存储过程、函数、触发器等。掌握PL/SQL语法、异常处理、游标、动态SQL和包的使用能增强数据库的可维护性和功能性。 4. **索引策略**:索引是提升查询...

    SQLServer 2000 高级编程技术

    1. **Transact-SQL编程**:这是SQL Server的主要编程语言,用于创建和管理数据库对象,如表、视图、存储过程和触发器。学习如何编写复杂的查询语句,优化性能,以及使用动态SQL和嵌套查询是提升编程能力的重要步骤。...

    SQL高级编程详解.pdf

    根据提供的文件信息,下面是详细的知识点说明: 1. SQL基本概念: SQL(Structured Query Language)是...由于缺少完整文档内容,无法覆盖更全面的SQL高级主题,如高级查询技术、复杂数据结构设计、优化查询性能等。

    oraclesql高级编程 随书脚本

    《Oracle SQL 高级编程》一书的随书脚本集合是学习和深入理解Oracle数据库管理及SQL高级特性的宝贵资源。这些脚本涵盖了从基础查询到复杂的数据操作、存储过程、函数以及触发器等多个方面,旨在帮助读者提升在Oracle...

Global site tag (gtag.js) - Google Analytics