数据库总结
更好的自己520
这个作者很懒,什么都没留下…
展开
-
数据库原理之范式总结(一)
范式总结原创 2018-05-23 13:23:17 · 1495 阅读 · 0 评论 -
MySQL数据库事务处理
概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。 例如:A向B转账100元,对应于如下两条sql语句:update from account set money=money+100 where name=’b’; update from account set money=money-100 where name=’a’;数据库默认事务是自动提交的,也就是发转载 2018-02-04 15:15:48 · 198 阅读 · 0 评论 -
数据库触发器总结
1:instead of触发器和before/after触发器区别 当你往表插入数据时,若使用after/before insert触发器,只要不出错,最终都会把数据插入到表中。 若使用 INSTEAD OF INSERT 触发器,数据并不会插入表,它只是触发一个操作。当然,这个操作内你也可以把触发数据插入到表中。 ‘代替’,就是不再执行被代替的语句,而是执行触发器里的语句...原创 2018-02-05 10:01:35 · 1081 阅读 · 0 评论 -
数据库之分页查询
1:分页需求 客户端通过传递start(页码),limit(每页显示的条数)两个参数去分页查询数据库表中的数据,那我们知道MySQL数据库提供了分页的函数limit m,n,但是该函数的用法和我们的需求不一样,所以就需要我们根据实际情况去改写适合我们的分页语句,具体的分析如下:实例: 查询第1条到第10条的数据的sql是:select * from table limit 0,10;原创 2018-02-05 14:48:27 · 589 阅读 · 0 评论 -
Web分页显示内容之分页查询的三种思路(一)
在开发过程中,经常做的一件事,也是最基本的事,就是从数据库中查询数据,然后在客户端显示出来。当数据少时,可以在一个页面内显示完成。然而,如果查询记录是几百条、上千条呢?直接一个页面显示完全的话,表格得多长啊。。。。。。这时,我们可以用分页技术。何为分页?效果图如下: 这里总共查询了100条记录,如果一次性显示的话表格会很多行,用户体验不佳。而我们采用分页显示的话,一页显示10条记录,共十页。用户可转载 2018-02-05 15:29:46 · 2593 阅读 · 0 评论 -
Web分页显示内容之分页查询的三种思路(二)
其二:一次查询,分批显示就是说,我们可以执行一个数据库查询操作,得到结果集rs。然后,通过指针的移动来显示当前页面的记录。这样,就可以以 rs.absolute(当前页面号*每页记录数)定位到当前页的第一条记录,然后通过while循环显示n条记录(n为每页显示记录数)。在跳页时,只需修改currentPage,即可在重定位到下一页时把当前页面号改掉,重新定位记录指针,通过while遍历显示n条记转载 2018-02-05 15:40:27 · 1049 阅读 · 0 评论 -
Web分页显示内容之分页查询的三种思路(三)
其三:在服务端分页。跳到第n页才查询、显示第n页内容。要点就是根据客户端表格的“页面”计算出数据库要查询的当前页面的第一条记录的位置。优点:实时性:跳页才查询。数据量小:只加载当前页的记录进行显示。重点在于两条语句:select count(*) from …:查询得到记录总条数select * from .. limit pageNo,rowsCount:查询从第pageNo条开始的ro...原创 2018-02-05 22:59:04 · 1327 阅读 · 1 评论 -
数据库中视图的作用
视图是从一个或几个基本表(视图)导出的表,它与基本表不同,是一个虚表。数据库只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中,所以基本表的数据发生变化,从视图中查询出来的数据也就随之改变了,从这个意义上讲,视图就像个窗口,透过它可以看出数据库中自己感兴趣的数据及其变化。既然视图的定义是基于基本表的,那为什么还要定义视图呢?这是因为合理的使用视图能够带来许多好处: 1:视图能转载 2018-02-08 16:11:11 · 6433 阅读 · 0 评论 -
游标使用实例
1:声明游标; 2:打开游标; 3:从一个游标中查找信息; 4:关闭游标; 5:释放游标;创建游标游标用declare语句创建,declare命名游标,并定义相关的select语句,根据需要带where和其他子句。下面定义了名为order的游标,使用可以检索所有订单的select语句create procedure p()begin declare order c...转载 2018-02-08 16:51:20 · 1055 阅读 · 0 评论 -
数据库之视图实例
一个视图是一个或一组SQL语句,存储在数据库中相关的名称,一个视图实际上是一个预定义的SQL查询中的表的形式组成。 一个视图可以包含一个表的所有行,或选择表中的行,从一个或多个表上写SQL查询创建一个视图,视图可以被创建。这是一种虚拟表的视图,允许用户执行以下操作: 1:发现自然或直观的用户或用户类的结构数据的形式 2:限制访问的数据,例如,用户可以看到和修改正是他们所需要的并没有更多 ...转载 2018-02-08 17:22:21 · 2944 阅读 · 0 评论 -
sql存储过程简单例子
例1: create proc proc_stu @sname varchar(20), @pwd varchar(20) as select * from ren where sname=@sname and pwd=@pwd go 查看结果:proc_stu ‘admin’,’admin’例2: 下面的存储过程实现用户验证的功能,如果不成功,返回0,成功则返回1....转载 2018-02-09 21:09:42 · 388 阅读 · 0 评论 -
SQL多条件查询子查询
多条件搜索时where 1=1并不高效,如果使用这种方法,在数据库中会做全表查询(对每行数据都进行扫描比对),会无法使用索引等优化查询的策略,建立的索引会暂时失效。Case函数(case必须和end一起使用,下接when then)select 数学成绩=(case when Math>100 then '优', when Math>90 then '良', when原创 2018-02-10 10:09:22 · 9531 阅读 · 0 评论 -
SQL分页查询及in
IN 操作符 IN 操作符允许我们在 WHERE 子句中规定多个值.(单列多行) SQL IN 语法SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,...)实例select * from student where TsClassId in(select tsclass...原创 2018-02-10 10:14:20 · 427 阅读 · 0 评论 -
SQL语句总结
建表语句CREATE TABLE students (sno VARCHAR(3) NOT NULL, sname VARCHAR(4) NOT NULL, ssex VARCHAR(2) NOT NULL, sbirthday DATETIME, class VARCHAR(5))CREATE TABLE courses (cno VARCHAR(5) NOT NULL,...原创 2018-02-10 14:51:52 · 779 阅读 · 0 评论 -
数据库存储过程总结
存储过程 1:创建存储过程create proc stu_proc1as select count(*) from studentexec stu_proc1 执行2:修改、删除、重命名alter proc stu_proc1as select * from studentdrop proc stu_proc1as select * from studentrename proc stu_转载 2018-02-04 14:08:44 · 1024 阅读 · 0 评论 -
数据库触发器(二)
触发器:一种特殊的存储过程,存储过程一般通过定义的名字直接调用,而触发器是通过增、删、改进行触发执行,会在事件发生时自动强制执行。常见触发器:after(for) 或instead of用于insert、update、delete事件。基本语法:creeate trigger 触发器的名字 on 操作表for|after instead ofupdate|insert|deleteasSQL转载 2018-02-04 11:30:41 · 141 阅读 · 0 评论 -
数据库原理之范式总结
数据库范式原创 2018-05-23 13:15:56 · 1416 阅读 · 0 评论 -
总结的SQL语句
1:将所有提交时间晚于作业提交截止时间的作业提交分数设置为30 思路:提交时间 作业截止时间涉及到Submmission表和homework表,Score在Subbmmision,俩表的关联是Noupdate Submission set Score=30 where SID in(select SID from Subbssion sub,Homework h where sub.N...原创 2018-05-23 13:02:59 · 290 阅读 · 0 评论 -
SQL中EXISTS的用法
SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) 这里面的EXISTS是如何运作呢?子查询返回的是OrderId字段,可是外面的查询要找的是CustomerID和CompanyName字段,这两个...原创 2018-04-05 09:17:36 · 1087 阅读 · 0 评论 -
MySQL远程访问及访问速度慢等问题解决
1.访问速度慢【现象】 访问数据库速度慢,完成一次连接或数据访问需要将近5s左右。【原因】 每次访问数据库,mysql就会试图去解析来访问的机器的domain name,如果这时解析不成功,等一段时间会失败,数据才能被取过来。【解决方法】 修改配置文件在[mysqld]下添加skip-name-resolve #Don’t resolve hostnames2.开启远程访问权限【现转载 2018-03-22 10:58:10 · 1211 阅读 · 0 评论 -
MySQL语句练习
1.建库建表--create database companycreate database company;use company;–部门表create table dept(deptno int(3) primary key,dname varchar(14),loc varchar(13));–雇员表create table emp(emp...原创 2018-02-12 19:56:20 · 235 阅读 · 0 评论 -
分页查询和多行查询
数据库的分页查询工资最高的前5名员工select e.* from (select salary from employ order by salary desc) e where rownum<=5;先定义rownum,用between and分页,效率不是最高的查询员工中第6条到第12条的记录select * from (select rownum rum,e.* ...原创 2018-03-17 11:33:55 · 242 阅读 · 0 评论 -
子查询练习题
重点:作为计算字段使用子查询select cust_name,cust_state,(select count(*) from orders where orders.cust_id=customers.cust_id) as orders from customersorder by cust_name;10、查询所有“CLERK”(办事员)的姓名及其部门名称及部门人数 · 找出...原创 2018-03-17 10:42:41 · 1638 阅读 · 0 评论 -
数据库触发器(一)
触发器:定义是说某个条件成立的时候,你触发器里面所定义的语句就会被自动的执行,因此触发器不需要人为的去调用,也不能调用。然后,触发器的触发条件其实在你定义的时候就已经设定好了的,触发器可以分为语句级触发器和行级触发器,简单地说就是语句级的触发器,可以在某些语句执行前或执行后被触发,而行级触发器则是在定义的触发的表中的行数据改变时就会被触发一次。示例: 1:在一个表中定义的语句级的触发器,当这个表原创 2018-02-05 09:42:37 · 380 阅读 · 0 评论 -
数据库索引的原理
为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入、修改、删除变慢? 什么情况下要同时在两个字段上建索引?想要理解索引原理必须清楚一种数据结构「平衡树」(非二叉),也就是b tree或者 b+ tree,重要的事情说三遍:“平衡树,平衡树,平衡树”。当然, 有的数据库也使用哈希桶作用索引的数据结构 , 然而, 主流的RDBMS都是把平衡树当做转载 2018-01-29 19:53:08 · 329 阅读 · 0 评论 -
SQL语言总结(二)
1:select top、limit和rownum子句 SELECT TOP子句用于规定要返回的记录的数目,对拥有数千条记录的大型表来说,是非常有用的,并非所有的数据库系统都支持select top子句MySQL语法:select *from Personslimit 5Oracle语法:select *from Personswhere rownum5select原创 2018-01-29 22:02:34 · 241 阅读 · 0 评论 -
恒生电子实施面试题
1 、 – Create table 作者信息表create table AUTHORS(AU_ID NUMBER,AU_NAME VARCHAR2( 64 ),PHONE VARCHAR2( 64 ),AGE NUMBER,ADDRESS VARCHAR2( 64 ),CITY VARCHAR2( 64 ),STATE VARCHAR2( 64 ),ZIP VAR转载 2018-02-03 22:51:49 · 5974 阅读 · 0 评论 -
SQL之通配符总结
方括号([])通配符方括号( [] )用来指定一个字符集,他必须匹配指定位置(通配符的位置)的一个字符(也就是说必须指定通配符的位置,也就是需要检索的字符的位置)。我们需要检索出sname列值中以’张’或’王’开头的学生,下面是解决代码:select * from dbo.student where sname like '[张王]%'select * from dbo.student where原创 2018-02-04 10:13:06 · 577 阅读 · 0 评论 -
MySQL数据处理函数
有时从数据库表中获取到的数据须要进行一些处理。 如将小写字母替换为对应的大写字母。这个处理过程能够在客户机上进行。也能够在数据库上进行。数据库上进行会更高效。数据库中有对应的数据处理函数来处理这些数据,可是在SQL中使用特殊的数据处理函数会减少其可移植性。不同的DBMS系统,其数据处理函数不同。大多数的SQL支持下面类型的函数 用于处理文本串的函数,如删除、填充值、转换大写和小写; ...转载 2018-02-11 11:26:14 · 176 阅读 · 0 评论 -
子查询和连接表
有如下两张表:部门表和教师表 1、查询出招生部门所有男老师姓名(子查询放在where语句中)select tname, deptno from teacher where gender='男' and deptno in (select deptno from dept where dname='招生部');select tname,deptno from teacher ...转载 2018-02-11 16:40:28 · 1536 阅读 · 0 评论 -
数据库备份和还原
简介 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏的时候可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点。数据库备份可以手动备份和语句备份。一.手动备份数据库 1:鼠标右键选择你要进行备份的数据库—任务—备份 可以在常规选项页面选择,备份类型可以是进行完整数据库备份还是差异数据库备份2:点击添加选项,选择数据库文件的存放路径 注原创 2018-02-21 10:21:44 · 454 阅读 · 0 评论 -
Oracle数据库分页的三种方法
注意 不能对rownum使用>(大于1的数值)、>=(大于或等于1的数值)、=(大于或等于1的数值),否则无结果,所以直接用只能从1开始。rownum>10没有记录,因为第一条不满足去掉的话,第二条rownum又成了1,所以永远没有满足条件的记录。select * from student where rownum>=1;如果想要rownum不从1开始,需...转载 2018-02-20 16:57:40 · 1213 阅读 · 0 评论 -
数据库设计之逻辑设计
逻辑设计 1:将需求转化成数据库的逻辑模型 2:通过ER图的型式对逻辑模型进行展示 3:同所选用的具体的DBMS系统无关名词解释 关系:一个关系对应通常所说的一张表 元组:表中的一行即为一个元组 属性:表中的一列即为一个属性,每一个属性都有一个名称,称为属性名 候选码:表中的某个属性组,它可以唯一确定一个元组 主码:一个关系有多个候选码,选定其中一个为主码 域原创 2017-11-05 11:05:19 · 27063 阅读 · 0 评论 -
数据库设计之需求分析
什么是数据库设计? 简单来说,数据库设计就是根据业务系统的具体需要,结合我们所选用的DBMS(数据库管理系统),为这个业务系统构造出最优的数据存储模型。并建立好数据库中的表结构及表与表之间的关联关系的过程。使之能有效的对应用系统中的数据进行存储,并可以高效的对已经存储的数据进行访问。数据库的步骤: 需求分析——逻辑设计(ER图)——不同数据库的物理设计——维护优化为什么要进行数据库设计? 优原创 2017-11-05 10:19:44 · 18748 阅读 · 0 评论 -
数据库优化之MySQL优化(三):
数据库结构优化 1:选择合适的数据类型 数据类型的选择重点在于合适两个字,如何确定选择的数据类型是否合适? 1.使用可以存下你的数据的最小的数据类型 2.使用简单的数据类型,Int要比varchar类型在mysql处理上简单 3.尽可能的使用not noll定义字段 4.尽量少用text类型,非用不可时最好考虑分表时间优化 使用int来存储日期时间,利用from原创 2017-11-02 14:40:44 · 339 阅读 · 0 评论 -
数据库优化之MySQL优化(二):索引优化
http://www.imooc.com/learn/194 有空完成原创 2017-10-31 18:32:01 · 290 阅读 · 0 评论 -
数据库优化之MySQL优化(一)
http://www.imooc.com/learn/194 有空完成原创 2017-10-31 18:31:29 · 359 阅读 · 0 评论 -
MySQL之生成唯一的序列号和删除重复数据
命令行: begin 启动事务 insert into 表名 values(); 向表中插入数据 select * from 表名 rollback 回滚事务生成唯一序列号 需要用到唯一序列号的场景:数据库主键,业务序列号如发票号,车票号,订单号等。如何选择生成序列号的方式 1:优先选择系统提供的序列号生成方式 2:在特殊的情况下可以使用SQL方法生成序列号MySQL: AUTO_原创 2017-10-31 22:07:05 · 4239 阅读 · 1 评论 -
MySQL之进行行列转换
内容介绍: 如何进行行列转换 如何生成唯一序列号 如何删除重复数据一:如何进行行列转换 需要用到的场景:主要两个场景(报表统计+汇总显示)使用自连接实现行列转换行转列比如成绩 1:分别查询出不同同学的成绩,并将字段名改为同学的名字。 2:通过交叉连接,将不同的语句连接起来SELECT *FROM (SELECT SUM(KILLS) AS 'A'FROM A INNER JOIN原创 2017-10-31 15:51:23 · 336 阅读 · 0 评论 -
MySQL之分组选择数据
/*用到的表*/DROP TABLE IF EXISTS `friends`;/*悟空朋友表*/CREATE TABLE `friends` ( `id` int(3) NOT NULL,/*sql server中不能指定int长度*/ `user_name` varchar(30) default NULL, `type` varchar(30) default NULL) E...原创 2017-10-31 14:16:16 · 795 阅读 · 0 评论