摘要:        
问题:计算某个列中所有值的和,例如,计算所有职员的工资总额。解决方案:如果将整个表作为一个组或一个窗口求和,则只需对相应列使用SUM函数,而不要使用GROUP BY 子句:select sum(sal) from emp 如果创建了多个数据组或多个窗口,则使用SUM函数的同时,还要使用GROUP B    阅读全文
        
            posted @ 2017-09-14 21:52
屠魔的少年
阅读(198)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:计算给定列中的最大值和最小值。例如,计算所有职员的最高工资和最低工资,以及每个部门的最高工资和最低工资。 解决方案:要查所有职员的最低工资和最高工资,只需分别使用函数MIN和MAX:SELECT MAIN(SAL) AS MIN_SAL,MAX(SAL) AS MAX_SAL FROM EMP    阅读全文
        
            posted @ 2017-09-14 21:52
屠魔的少年
阅读(192)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:计算某个列的平均值,它可以包含表中的所有行,也可以只包含其中的某个子集。例如,计算所有职员的平均工资以及每个部门的平均工资。解决方法:当计算所有职员的平均工资时,只需要把AVG函数应用于工资列即可。select avg(sal) as avg_sal from emp group by dep    阅读全文
        
            posted @ 2017-09-14 21:51
屠魔的少年
阅读(244)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:将一个IP地址字段分解到列中,考虑下面列出的IP地址: 111.22.3.4 要得到如下所示的查询结果: + + + + +| a | b | c | d |+ + + + +| 111 | 22 | 3 | 4 |+ + + + + 解决方案: select substring_index(    阅读全文
        
            posted @ 2017-09-14 21:49
屠魔的少年
阅读(266)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:从字符串中提取出一个指定的、由分割符隔开的子字符串。create view v as select 'mo,larry,curly' as namefrom t1union allselect 'tina,gina,jaunita,regina,leena' as name from t1;s    阅读全文
        
            posted @ 2017-09-14 21:45
屠魔的少年
阅读(184)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:如果数值与字符混合在一起,需要删除那些字符,只返回数字。 create view v as select concat(substr(ename,1,2),replace(cast(deptno as char(4)),' ',''),substr(ename,3,2)) as mixedfr    阅读全文
        
            posted @ 2017-09-14 21:42
屠魔的少年
阅读(155)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:如下的结果集: + +| ename |+ +| ALLEN || WARD || MARTIN || BLAKE || CLARK || KING || TURNER || JAMES || MILLER |+ + 需要结果如下: + + +| ename | group_concat(c     阅读全文
        
            posted @ 2017-09-14 21:42
屠魔的少年
阅读(181)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题已经有了分隔数据,想要将其转换为WHERE子句IN列表中的项目。考虑下面的字符串:7654,7698,7782,7788要将该字符串用在WHERE子句中,但是下面的SQL语句是错误的,因为EMPNO是一个数值列:select ename,sal,deptno from emp where emp    阅读全文
        
            posted @ 2017-09-14 21:41
屠魔的少年
阅读(294)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
要将如下的数据: + + +| deptno | ename |+ + +| 30 | ALLEN || 30 | WARD || 30 | MARTIN || 30 | BLAKE || 10 | CLARK || 10 | KING || 30 | TURNER || 30 | JAMES ||    阅读全文
        
            posted @ 2017-09-14 21:41
屠魔的少年
阅读(135)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:select ename from emp ;+ +| ename |+ +| ALLEN || WARD || MARTIN || BLAKE || CLARK || KING || TURNER || JAMES || MILLER |+ +如上的记录中按照每个姓名的最后两个字符排序:se    阅读全文
        
            posted @ 2017-09-14 21:37
屠魔的少年
阅读(205)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:将全名转换为大写首字母缩写。考虑下面的名字: Stewie Griffin 要返回如下结果: S.G. 解决方案: select case when cnt=2 then trim(trailing '.' from concat_ws('.',substr(substring_index(n    阅读全文
        
            posted @ 2017-09-14 21:36
屠魔的少年
阅读(765)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
mysqlbinlog限制 该软件利用binlog中记录了操作前的数据镜像和操作后的数据镜像。有如下限制 1)binlog_format=row 2)必须打开binlog 3)只支持insert、update、delete 4)不支持drop 、truncate、alter等ddl语句 特别说明:自    阅读全文
        
            posted @ 2017-09-14 15:13
屠魔的少年
阅读(908)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
生成测试数据 create view v asselect ename as data from emp where deptno=10 union allselect concat(ename,', $',sal,'.00') as data from emp where deptno=20 un    阅读全文
        
            posted @ 2017-09-14 07:16
屠魔的少年
阅读(189)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
需求:删除所有的0和元音字母。 select ename,replace(replace(replace(replace(replace(ename,'A',''),'E',''),'I',''),'O',''),'U','') as stripped1,sal,replace(sal,0,'')     阅读全文
        
            posted @ 2017-09-14 07:15
屠魔的少年
阅读(180)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
show index from emp \G;    阅读全文
        
            posted @ 2017-09-14 07:13
屠魔的少年
阅读(169)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
遍历一个字符,并将其中的每个字符都作为一行返回,但是SQL没有循环操作。例如,要将表EMP中的ENAME值为“KING”的字符串显示为4行,每行都包含“KING”中的一个字符。 create table t10 (id int);insert into t10 values(1);insert in    阅读全文
        
            posted @ 2017-09-14 07:13
屠魔的少年
阅读(156)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
select column_name,data_type,ordinal_position from information_schema.columns where table_schema='SCOTT' and table_name='EMP';    阅读全文
        
            posted @ 2017-09-14 07:12
屠魔的少年
阅读(153)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
select table_name from information_schema.tables where table_schema='SCOTT';    阅读全文
        
            posted @ 2017-09-14 07:11
屠魔的少年
阅读(143)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
从一个表中删除被另外一个表引用的记录。考虑下面的DEPT_ACCIDENTS表,其中每行代表生产过程中的一次事故,每行记录了发生的部门以及事故类型。create table dept_accidents(deptno integer,accident_name varchar(20));insert    阅读全文
        
            posted @ 2017-09-14 07:10
屠魔的少年
阅读(383)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:仅当另一个表中相应的行存在时,更新某表中的一些行。例如,如果表emp_bonus中存在某位员工,则要将该员工的工资增加20%(在表emp中)。解决方案:为了可以将符合条件的员工工资增加20%,可以在update语句的where子句中使用子查询,用以找出哪些员工同时存在于表emp和emp_bon    阅读全文
        
            posted @ 2017-09-14 07:09
屠魔的少年
阅读(151)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
从表中删除重复记录,考虑如下所示的表:create table dupes (id integer,name varchar(10));insert into dupes values (1,'NOPOLEON');insert into dupes values (2,'DYNAMITE');in    阅读全文
        
            posted @ 2017-09-14 07:09
屠魔的少年
阅读(134)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:要用一个表中的值来更新另外一个表中的行。例如,在表new_sal中保存着某个特定员工的新工资.在表new_sal中,deptno为关键字。要用表new_sal中的值更新表emp中相应员工的工资,条件是emp.deptno与new_sal.deptno相等,将匹配记录的emp.sal更新为new    阅读全文
        
            posted @ 2017-09-14 07:09
屠魔的少年
阅读(180)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题要修改表中某些(或全部)行的值。例如,可能想要将部门20中所有员工的工资增加10%,下面的结果集显示了该部门员工的deptno ename 和sal字段select deptno,ename,loc from emp where deptno = 20 order by 1,3 要将所有的sal    阅读全文
        
            posted @ 2017-09-14 07:07
屠魔的少年
阅读(165)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题防止用户或是错误软件应用程序对某几列插入数据。例如,只允许某个程序向emp表中插入empno,ename,和job列解决方案:在表中创建一个视图,该视图只显示允许用户进行操作的列,强制所有的插入操作都通过该视图进行。例如,创建一个只显示表emp中特定3列的视图:create view new_e    阅读全文
        
            posted @ 2017-09-14 07:06
屠魔的少年
阅读(171)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:要将一个查询中返回的行插入到多个目标表中。例如,要将表dept中的一些行插入到表dept_east、dept_west、dept_mid中。这三个表与表dept有着相同的结构(相同的列和数据类型),并且这三个表都是空的。解决方案:此解决方案是要将查询的解雇插入到目标表中。现有的版本都不支持这种    阅读全文
        
            posted @ 2017-09-14 07:04
屠魔的少年
阅读(182)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:要使用查询从一个表中向另外的表中复制行。该查询可能非常复杂,也可能非常简单。但是最终是需要将该查询的结果插入到其他的表中。(同样的列名称以及数据类型)解决方案:所使用的方法就是在insert语句后面紧跟着一个用来产生所要插入的行的查询:create table dept_east(deptno    阅读全文
        
            posted @ 2017-09-14 07:02
屠魔的少年
阅读(165)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:在一个定义了默认值的列插入数据,并且需要不管该列的默认值是什么,都将该列值设为NULL。考虑一下下面的表:create table D (id interger default 0, foo varchar(10))希望插入一行, 其中id值为NULL解决方案:可以在值列表中明确地指定NULL    阅读全文
        
            posted @ 2017-09-14 07:00
屠魔的少年
阅读(232)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:定义表时可以为某些列定义默认值,现要以默认值插入一行,而无需指定各列的值。看一下下面列出的表:create table D (id interger default 0)要插入零值,而不像在insert语句的值列表中明确得为该行指定0值,这里明确的要求插入默认值,而不管默认值是什么。解决方案;    阅读全文
        
            posted @ 2017-09-14 06:59
屠魔的少年
阅读(200)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:向表中插入一条新的记录,例如,要向dept表中插入一条新的记录。其中,deptno值为50、dname的值为“PROGRAMMING” loc的值为“BALTMORE”解决方案使用带有values子句的insert语句来插入一行:insert into dept (deptno, dname,    阅读全文
        
            posted @ 2017-09-14 06:59
屠魔的少年
阅读(207)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:NULL值永远不会等于或不等于任何值,也包括NULL值自己,但是需要像计算真实值一样计算可为空列的返回值。例如,需要在表emp中查出所有比“WARD”提成(COMM)低的员工,提成为NULL(空)的员工也应当包括在其中。解决方案:使用coalesce函数将NULL值转换为一个可以用来作为标准值    阅读全文
        
            posted @ 2017-09-14 00:06
屠魔的少年
阅读(164)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:同时返回多个表中丢失的数据。要从表dept中返回emp不存在的行(所有没有员工的部门)需要做外联结。考虑下面的查询。它返回表dept中的deptno和name字段,以及每个部门中所有员工的姓名。(如果该某个部门有员工的话):select d.deptno, d.dname, e.ename f    阅读全文
        
            posted @ 2017-09-14 00:06
屠魔的少年
阅读(176)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
修改emp_bonus表,使得在部门10中并不是每个员工都有奖金。select deptno , sum(sal) as total_sal, sum(bonus) as total_bonus from ( select e.empno, e.name, e.sal, e.deptno, e.sa    阅读全文
        
            posted @ 2017-09-14 00:05
屠魔的少年
阅读(130)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:要在包含多个表的查询中执行聚集运算,要确保表间连接不能使聚集运算发生错误.例如,要查找在部门10中所有员工的工资合计和奖金合计.由于有些员工的奖金激励不只一条,在表emp和表emp_bonus之间做连接会导致聚集函数sum算得的值错误.现在,考虑一下下面的返回的在部门10中所有员工的工资和奖金    阅读全文
        
            posted @ 2017-09-14 00:04
屠魔的少年
阅读(160)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:要返回在部门10中每个员工的姓名,以及部门的工作地点,下面的查询达到的是错误数据:select e.ename,d.loc from emp e ,dept dwhere e.deptno =10解决方案:在from子句对表进行连接来返回正确的结果集:select e.ename,d.loc     阅读全文
        
            posted @ 2017-09-14 00:03
屠魔的少年
阅读(673)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:要知道两个表或视图中是否有相同的数据(基数和值)。考虑这个视图:create view Vas select * from emp where deptno !=10 union all select * from emp where ename = 'WARD' 现要检测这个视图与表emp中    阅读全文
        
            posted @ 2017-09-14 00:03
屠魔的少年
阅读(183)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:已经有了一个查询可以返回所需要的值,还需要得到其他的信息,但当加入这些信息时,发现原始结果集中的数据有丢失。例如,要返回所有的员工信息,他们工作部门的地点及所获得的奖励。在这个问题中,表EMP_BONUS包含如下内容: select * from emp_bonus;+ + + +| empn    阅读全文
        
            posted @ 2017-09-14 00:02
屠魔的少年
阅读(136)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:对于具有相同关键字的两个表,要在一个表中查找与另外一个不匹配的行。例如,要查找没有职员的部门.要查找部门中每个员工的工作岗位需要在表需要在表deptno及emp中有一个等值联接。deptno列就是这两个表之间的公共值。但是,等值联接却不能直接显示出那个部门没有员工。这是因为在表emp和dept    阅读全文
        
            posted @ 2017-09-14 00:02
屠魔的少年
阅读(189)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:要根据某些条件逻辑来排序。例如,如果JOB是”SALESMAN”,要根据comm来排序。解决方案:在order by子句中使用case表达式select ename,sal,job,comm from emp order by case when job = 'SALESMAN' then c    阅读全文
        
            posted @ 2017-09-14 00:01
屠魔的少年
阅读(193)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:现有字母和数字混合的数据,希望按照数字或字符部分来排序。考虑这个视图: create view V as select concat(ename, ' ',deptno) from emp; mysql> select * from v;+ +| concat(ename, ' ',deptn    阅读全文
        
            posted @ 2017-09-14 00:00
屠魔的少年
阅读(165)
评论(0)
推荐(0)
        
        
            
        
        
摘要:        
问题:在emp中根据comm排序结果。但是,这个字段可以有空值。需要指定是否将控制排在最后。解决方案:根据数据的显示方式,以及特定的rdbms排序空值的方式,可以按照升序或降序来对空值的列排序。select ename,sal,comm from emp order by 3 select enam    阅读全文
        
            posted @ 2017-09-14 00:00
屠魔的少年
阅读(204)
评论(0)
推荐(0)
        
        
 
                    
                 浙公网安备 33010602011771号
浙公网安备 33010602011771号