收藏 分享(赏)

SQL笔记.doc

上传人:myw993772 文档编号:7058905 上传时间:2019-05-04 格式:DOC 页数:15 大小:30.10KB
下载 相关 举报
SQL笔记.doc_第1页
第1页 / 共15页
SQL笔记.doc_第2页
第2页 / 共15页
SQL笔记.doc_第3页
第3页 / 共15页
SQL笔记.doc_第4页
第4页 / 共15页
SQL笔记.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、SQL基本,oracle 数据库中的 sql,但基本上都是标准 sql 语句标准 SQL,允许个个数据库拥有自己的语句普通话 方言DDL 数据定义语句 创建表,表操作DML 数据操作语句 insert update deleteSelect 语句增删改查desc 表明sql 语句中,不区分大小写select * from 表明select 列名 ,列名 from 表明列名 as 别名as 可以不写别名默认全部转成大写,要不转必须加” ”别名,可以不加” ”,别名中有特殊字符,则必须加” ”Distinct去掉重复行,对某个字段而言运算符算术运算符+,- ,* ,/无效数字(插入空值用 null

2、),注意!空值就是没有值,就是没有数据,空值!=默认值如果算术表达式中遇到空值?则整个表达式的运算结果就是空值比较运算符= = )并置运算符| (连接合并字符串 )空值时,会把空值作为空字符串处理” ”逻辑运算符and or not其他的between andinwhere 子句条件查询select 列名列表 from 表明 where 条件字符串 要注意用 引起来日期也要用 条件字符串 大小写敏感匹配查询like不定长通配符:任意长度(可以 0) % %内容%定长通配符:指定长度 _ 精确匹配转义字符 空值查询is null 来查询空值is not null 非空值排序order bysel

3、ect 列名列表 from 表明 order by 列名 ascdesc默认升序 asc每个字段都可以排序,排序时可以使用字段别名函数单行函数多行函数Char 函数UpperLowerInitcapltrimrtrimselect name | name, concat(name,name) from teacher; /将后面的 name 连接到前面的 name 后面。select name,substr(name,1,3) from teacher; /输出 name 第一到第三个字符串。select name,instr(name,a) from teacher;select name,

4、lpad(name,10,$),rpad(name,10,$) from teacher;select name,length(name) from teacher;数值函数日期函数select sysdate,ADD_MONTHS(sysdate,4) from teacher;数据类型数字 Number字符串 CHAR VARCHAR2日期 DATE TIMESTAMPGREATEST(列 1,列 2,列 3)select sysdate,ADD_MONTHS(sysdate,4),GREATEST(sysdate,ADD_MONTHS(sysdate,4) from dual;LEAST

5、SELECT SYSDATE,LAST_DAY(SYSDATE) as “Last“,/返回该月的最后一天。LAST_DAY(SYSDATE) - SYSDATE “Days Left“FROM DUAL;SELECT SYSDATE,03-7 月-10,MONTHS_BETWEEN(SYSDATE,03-9 月-10)FROM DUAL;/ Months_between(f,s) 日期 f 和 s 间相差月数SELECT NEXT_DAY(sysdate,星期日) “NEXT DAY“ FROM DUAL;/从 sysdate 之后的下一个星期日。数据类型转换隐式转换显示转换SELECT S

6、YSDATE,to_char(sysdate,YYYY-MM-DD WW)FROM DUAL;SELECT SYSDATE,to_date(1999/09/07,YYYY/MM/DD)FROM DUAL;select to_number(100) + 20 from dualNVL 函数空值替代函数select id, id + 1000, nvl(id, 0) + 1000 from teacher;多表查询drop table student;drop table classroom;create table classroom(id number,name varchar2(20);cr

7、eate table student(id number,name varchar(20),age number,cid number);Select 表名.列名 , from 表 1, where 表 1.列名 join_operator 表 2.列名join_operator等值连接 equljoin非等值连接 nonequljoin自然连接 natualjoin交叉连接 cross join外部连接 outer join自连接 self join等值连接select student.id, student.name,student.cid,classroom.name from clas

8、sroom, student where classroom.id = student.cidselect student.id, student.name,student.cid,classroom.name from classroom JOIN student ON classroom.id = student.cid/效果同上面语句。select b.id, b.name,b.cid,a.name from classroom a, student b where a.id = b.cidselect b.*,a.namefrom classroom a, student b wher

9、e a.id = b.cid非等值连接常用 between and 进行一个区间查询create table agelevel(id number,lname varchar2(20),lmin number,lmax number);select a.*,b.lname from student a, agelevel bwhere a.age between b.lmin and b.lmax;自然连接select 列列表 from 表 1 natural join 表 2 using(列名)2 张表中的列名进行连接,列名相同,并且列的属性也必须相同using 处理 2 个表中列名,及属性

10、都相同的列有多个的情况交叉连接笛卡尔外联接 outerjoin左外联接select * from student,classroom where student.cid = classroom.id(+);select * from student left outer join classroom on student.cid = classroom.id右外联接select * from student,classroom where student.cid(+) = classroom.id;select * from student right outer join classroom

11、 on student.cid = classroom.id全联接select * from student full outer join classroom on student.cid = classroom.id自联接自己联接自己表多行函数count(*)count(列名),如果此列中数据为空,则,不在统计范围之内,重复不计。select count(*),count(id),count(cid) from student;SUM 求和select sum(age),avg(age),max(age),min(age) from student;STDDEV 标准差Variance 方

12、差Group BySelect 列列表 from 表名 where 条件 group by 分组要求 having 查询条件select count(*) from student group by cid;必须是多行函数,或者此列必须出现在分组要求中ORA-00979: 不是 GROUP BY 表达式select cid, count(*) from student where age 25 group by cidhaving count(*) 3;where 只有满足 where 条件的数据才参与统计,对原始数据的筛选having 对统计结果的筛选先根据 where 处的条件进行筛选,然

13、后按 groupby 子句所规定的列进行分组,然后再应用 having 子句对分组后的结果进行再一次的筛选子查询条件也是未知的,需要查询才能知道select age from student where name= hhhh;select * from student where age = 26;select * from student where age = (select age from student where name= hhhh);先执行 where 里面的 sql,先执行子查询,再执行外层查询ORA-01427: 单行子查询返回多个行ORA-00913: 值过多子查询,返回

14、的数据是一行一列-单行子查询子查询要用()括起来select cid, avg(age) from student group by cid having ?;select avg(age) from student;select cid, avg(age) from student group by cid having avg(age) (select avg(age) from student);多行子查询子查询查询出来的结果是一列多行的多行运算符 in、 any、 all、 not inIn 等于列表中的任意元素select * from student where age in (s

15、elect age from student where name= 张三);not in 不在列表里面,不等于列表中的任意元素anyany, =any=any 等于列表中的任意元素 和 in 效果一样any 大于里面的最小值allall 大于里面最大值表的创建与管理数据库中的对象表:存储数据视图:用来显示一张或多张表中的全部或部分数据,视图并不真正的存储数据序列:帮助生成主键索引:提高查询速度同义词:对象别名表:Create table 表名(列名 数据类型 null|not null,列名 数据类型 null|not null,列名 数据类型 null|not null)数据字典作用 列名

16、 数据类型 数据长度是否可以为null主键 id number 否 姓名 name varchar2 否 班级外键id cid number 添加列Alter table 表名 add 列名 数据类型 ;添加到表的最后,不能指定顺序添加一列 not null添加没有 not null 的列为所有行增加添加列的数据把此列改为 not null修改列Alter table 表名 modify 列名 数据类型增加字符串的宽度增加数字的宽度删除列Alter table 表名 drop column 列名重命名Rename 原表名 to 新表名删除表Drop table 表名DML 和数据完整性Inse

17、rt 语句Insert into 表名(列名,) values( 值,);如果插入的数据的个数和表中的列及数量一样,则列名列表可以不写insert into student(name,id) values(100,80);Update 语句Update table set 列 = 值,列 = 值 where 条件update student set name= 其二千万,age = 200 where id = 100;delete 语句delete 表名 where 条件数据完整性实体完整性:每一行数据都要有唯一标识 主键域完整性:数据必须在合法范围之内引用完整性:(外键) ,保证这个表中的

18、列的值与另一个表中的列的值匹配用户自定义完整性:用户自己建立的规则约束:实施完整性主键约束外键约束唯一键约束检查约束Not null(非空)约束主键约束:Primary key 主键 约束表中每条记录的唯一性只有主键才能代表记录中的某条记录每个表都要有主键主键必填且不能重复create table student1(id number primary key,name varchar2(20)create table student2(id number,name varchar2(20),constraint pk_student primary key(id)指明那一列是主键,并且主键约束

19、要有名字(约束名)pk_ 开头外键约束Foreign key 把此表中的列与另一个表中的 primarykey 列关联起来关联的必须是主键!create table classroom2(id number primary key,name varchar2(20)create table student2(id number,name varchar2(20),cid number,constraint pk_student primary key(id),constraint fk_student_classroom foreign key(cid) references classroo

20、m2(id)唯一键Unique key 一列数据是不能重复允许 nullcreate table student3(id number,name varchar2(20),cid number,constraint uk_name unique(name)Not null 约束name varchar2(20) not nullname varchar2(20) constraint nn_name not null检查约束Checkage number constraint ck_age check(age between 0 and 200)事务几个操作,要么全做,要么全部做。业务逻辑原子

21、性,一致性,隔离性,持久性。隐式事务autocommitcommit 才能真正的把数据写到数据库中。显式事务事务回滚 Rollback锁行锁,自动上锁解锁,事务结束隐式锁,显式锁视图视图是从一个表或多个表中导出的行或列的数据的集合。视图可以当表来使用,但视图并不是真正的存储数据,可以修改视图中的数据,但还是修改了表中的数据。简单视图,支持 DML 操作,不能包含组合函数。复杂视图,多个表中查出的数据,可以包含组合函数,不支持 DML 操作。create view v_stu as select id,name from student;select * from v_stu;with read

22、 onlywith check option创建视图时不能使用 order byRename 原视图名 to 新视图名Drop view 视图名TOP-N 分析伪列:不是表中真实存在的列Rownum:符合查询条件的第一条记录,rownum=1先查出记录,准备分配给他 rownum,检查条件(where) ,如果不满足条件,rownum 不会真正分配给他,如果满足条件,则,rownum 正在分配给此记录查询年龄最大的 5 个人select * from student where rownum 5;序列Oracle 的特点解决主键自动增长问题SequenceCreate create sequence seq_stu6increment by 1start with 1取序列的值Dual 系统表 一行一列的伪列 nextval currvalselect seq_stu6.nextval from dual;取序列的下一个值select seq_stu6.currval from dual;取序列的当前值insert into student6 values(seq_stu6.nextval,三大);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报