创建表空间、创建用户、创建表、对表添加约束、修改约束和删除约束属于数据定义语言(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 高级编程sql 高级编程sql 高级编程sql 高级编程sql 高级编程sql 高级编程sql 高级编程sql 高级编程sql 高级编程sql 高级编程sql 高级编程
包含了SQL Server高级查询和T-SQL编程的所有主要知识点,都是平日一点点的积累,非常全面的
SQL_Server高级编程管理指南.rar
精通Oracle SQL【第2版】ORACLE SQL高级编程【第二版】学习笔记
高级SQL数据库编程手册 高级SQL数据库编程手册
教程名称:Oracle高级开发课程之PL-SQL编程入门视频课程目录:【】PL_SQL编程课程_-lesson3【】PL_SQL编程课程_lesson5-2(完结)【】PL_SQL编程课程_最佳入门教程-intr1【】PL_SQL编程课程_最佳入门教程-lesson1【】...
《Oracle SQL高级编程/数据库系列》的作者莫顿以精炼、风趣的语言揭开了Oracle SQL高级编程的神秘面纱。所涵盖的内容涉及SQL核心、SQL执行、分析函数、联结、测试与质量保证等,并提供大量实用性建议,且总结出...
SQL Server 2000 高级编程技术
Oracle+SQL高级编程.pdf Oracle+SQL高级编程+随书源代码.zip
oracle sql高级编程非常适合数据库高级编程人员学习的书籍
SQL Server 高级编程 提高者的宝典
Oracle SQL 高级编程 附源码
第4章 Transact-SQL编程基础 4.1 TSQL标识符 4.2 数据库对象限定词 4.3 数据类型 4.3.1 数据类型的分组 4.3.2 数据类型的同义词 4.3.3 用户定义的数据类型 4.4 变量 4.4.1 局部变量 4.4.2 全局变量 4.4.3 table(表)...
通过数据库的查询和视图实验了解SELECE语句的基本语法,子查询的表示,连接查询的表示,GROUP BY、ORDER BY语句的作用和使用方法,视图的概念和作用,视图的创建、查询和修改。
Oracle SQL高级编程 Oracle SQL高级编程 Oracle SQL高级编程
sql server2005高级编程,语言基础,流程控制语句,常用函数,
SQLServer 2000 高级编程技术
SQL高级编程详解.pdf
oracle sql高级编程案例,开发详解,案例分析说明过程