select函数

sql 基础语法3:分组,聚合函数,having,联合查询,快速备份,内联函数

▼魔方 西西 提交于 2019-12-04 02:15:53
select * from Classinfo select * from StuInfo select * from CourseInfo select * from ScoreInfo --分组 group by,分组后在结果列中只能出现分组依据列和聚合列 --统计男女人数 select stuSexy,COUNT(*) from StuInfo group by stuSexy--分组也是一个聚合过程,把所有性别相同的元组放到了同一行 --算出每门课的平均分 select cId,avg(score) from ScoreInfo group by cId --根据科目进行分组,算出平均分 select cId,avg(score) from ScoreInfo group by cId,StuId --按多个属性进行分组 --求每个班的男女人数,同时输出班级名 select ci.className,si.stuSexy,COUNT(*) from StuInfo as si inner join Classinfo as ci on si.classId=ci.classId group by ci.className,si.stuSexy --除了这两个分组关键属性,其他属性都被合并了,所以不能再使用 select ci.classId,si.stuSexy,COUNT

mysql计算时间

▼魔方 西西 提交于 2019-12-03 19:58:32
一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp -- (v4.0.6) ,localtimestamp() -- (v4.0.6) 这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。 1.2 获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了: mysql> select now(), sleep(3), now(); +---------------------+----------

Oracle面试题(基础篇)(转)

大城市里の小女人 提交于 2019-12-03 14:37:39
1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windows平台的稳定性和安全性影响了sql server的稳定性和安全性 2). oracle使用的脚本语言为PL-SQL,而sql server使用的脚本为T-SQL 微观上: 从数据类型, 数据库 的结构等等回答 2. 如何使用Oracle的游标? 1). oracle中的游标分为显示游标和隐式游标 2). 显示游标是用cursor...is命令定义的游标,它可以对查询语句(select)返回的多条记录进行处理;隐式游标是在执行插入 (insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由PL/SQL自动定义的。 3). 显式游标的操作:打开游标、操作游标、关闭游标;PL/SQL隐式地打开SQL游标,并在它内部处理SQL语句,然后关闭它 3. Oracle中function和procedure的区别? 1). 可以理解函数是存储过程的一种 2). 函数可以没有参数,但是一定需要一个返回值,存储过程可以没有参数,不需要返回值 3). 函数return返回值没有返回参数模式,存储过程通过out参数返回值, 如果需要返回多个参数则建议使用存储过程

mysql存储过程。。

亡梦爱人 提交于 2019-12-03 05:31:37
MySQL 5.0 版本开始支持存储过程。 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。 存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。 优点 存储过程可封装,并隐藏复杂的商业逻辑。 存储过程可以回传值,并可以接受参数。 存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。 存储过程可以用在数据检验,强制实行商业逻辑等。 缺点 存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。 存储过程的性能调校与撰写,受限于各种数据库系统。 一、存储过程的创建和调用 存储过程就是具有名字的一段代码,用来完成一个特定的功能。 创建的存储过程保存在数据库的数据字典中。 创建存储过程 CREATE [ DEFINER = { user | CURRENT_USER }]   PROCEDURE sp_name ( [ proc_parameter [,...]] ) [ characteristic ...] routine_body proc_parameter : [ IN

MySQL 查询优化器(四)

别等时光非礼了梦想. 提交于 2019-12-03 04:02:08
2.5 LEFT JOIN查询 该测试主要用于测试LEFT JOIN与JOIN的处理逻辑上的差异,具体查询处理逻辑如下所示: JOIN:prepare阶段 setup_tables():同2.1测试。 setup_fields():同2.1测试。 setup_conds():同2.4测试。 JOIN:optimize阶段 simplify_joins():类似2.4测试。不同之处在于由于LEFT JOIN 使用的数据表不能为 NULL表,这是由是否有where条件过滤决定的。所以该过程会将LEFT JOIN外链接查询转化为多表联合查询操作,从而忽略LEFT JOIN的链接操作。 optimize_cond():同2.1测试。 make_join_statistics():同2.4测试。 choose_plan():同2.1测试。 greedy_search():同2.1测试。 best_extension_by_limited_search():同2.4测试。 get_best_combination():同2.4测试。 JOIN:exec阶段 以下同2.4测试。 Left join 嵌套( join )查询 , 执行SQL: SELECT student.std_id, std_name, std_spec, std_***, std_age, cur_name, cur

MySQL 查询优化器(三)

我的梦境 提交于 2019-12-03 04:01:51
2、复合查询 在进行复合查询时,为了体现外连接(left join、right join)和一般联合查询的区别,对student表增加了几条记录,而这几条记录在std_cur和course中都没有对应的记录。 2.1 多表联合查询 多表联合查询的逻辑处理过程如下所示: JOIN:prepare阶段 setup_tables():对查询涉及的表,逐个查看是否存在,设置变量相应的值,为查询准备。 setup_fields():对查询的字段进行检查,不同于之前1.1的检查,该过程中如果不指定具体数据表的字段的话,将会对所有查询的数据表进行检查。 setup_conds():检查查询的where条件中字段是否存在,同样如果不指定具体数据表的字段,将会对所有查询的数据表进行检查。(sql_base.cc:8379) JOIN:optimize阶段 simplify_joins():如果可以将外连接简化为内连接处理,那么简化为内连接处理。此外,如果查询为内连接或者外连接查询使用的表拒绝 NULL值,那么将ON条件添加到where条件中,将表的连接操作转化为联合查询处理。在该测试中,由于没有显示的JOIN ON操作,因此不做以上处理。 optimize_cond():优化查询的where条件,对等值条件调用build_equal_items()(sql\sql_select.cc:8273

SQL小技巧(一)拼音首字母的模糊查询

馋奶兔 提交于 2019-12-03 03:58:34
基于Microsoft SQL Server 的标量值函数fun_GetPy,借鉴其他优秀的博主文章,此处贴出源码,以及使用方法 1、打开新建查询,贴如下代码,F5 /****** Object: UserDefinedFunction [dbo].[fun_GetPy] Script Date: 11/01/2019 11:07:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[fun_GetPy](@str NVARCHAR(4000)) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @strlen INT,@re NVARCHAR(4000) DECLARE @t TABLE(chr NCHAR(1) COLLATE Chinese_PRC_CI_AS,letter NCHAR(1)) INSERT INTO @t(chr,letter) SELECT '吖 ', 'A ' UNION ALL SELECT '八 ', 'B ' UNION ALL SELECT '嚓 ', 'C ' UNION ALL SELECT '咑 ', 'D ' UNION ALL SELECT '妸 ', 'E ' UNION ALL SELECT

mysql数据库的concat(),group_concat(),concat_ws()函数,三者之间的比较

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-03 01:46:40
今天在写项目的时候,看到同事使用group_concat()函数 和concat_ws()函数,这两个函数和普通的concat()函数之间到底有什么不同。 我使用的 数据库是mysql数据库。 GROUP_CONCAT函数: SELECT GROUP_CONCAT(MappPolicyNo, '') FROM lcmapPolicyNo WHERE PolicyNo ='MGU201909003'; 显示结果:1111111111,111111111112,112121212,123456789,2222222222,22222222222,2222222223,25345345,3333333333111,3453322222222,3453453453,44556666,45555555555555534,6666666666666 由此可见:这个函数是将这个保单下的多个分单号以逗号的方式进行拼接显示 SELECT GROUP_CONCAT(1,2,3,'') from dual; 显示结果:123 由此可见,这和concat函数的运行结果是相同的。 CONCAT 函数 SELECT concat(1,2,3,'') from dual; 显示结果:123 CONCAT_WS 函数 SELECT CONCAT_WS( '', ClientCFirstName,

Oracle Replace函数与translate函数 替换函数

半城伤御伤魂 提交于 2019-12-03 01:40:53
简要比较: replace 字符串级别的代替 如:SELECT REPLACE('accd','cd','ef') from dual; --> aefd translate 字符级别的代替 如:select translate('acdd','cd','ef') from dual; -->aeff 分别详解 replace: 语法:REPLACE(char,search_string[,replacement_string]) 解释:replace中,每个search_string都被replacement_string所代替 select replace('acdd','cd','ef') from dual; --> aefd 如果replacement_string为空或为null,那么所有的search_string都被移除 select replace('acdd','cd','') from dual; --> ad 如果search_string 为null,那么就返回原来的char select replace('acdd','ef') from dual; -->acdd select replace('acdd','','') from dual; -->acdd(也是两者都为空的情况) translate: 语法:TRANSLATE('char',

2019.10.9php进阶

人走茶凉 提交于 2019-12-03 01:26:51
<?php header("Content-type:text/html;charset:utf-8"); if ($_FILES["file"]["error"]>0) { echo $_FILES["file"]["error"]."<br>"; } else { echo " 文件名 :".$_FILES["file"]["name"]."<br>"; echo " 类型 :".$_FILES["file"]["type"]."<br>"; echo " 大小 :".$_FILES["file"]["size"]."<br>"; echo " 临时位置 :".$_FILES["file"]["tmp_name"]."<br>";} echo " 文件后缀名 :".@end(explode(".",$_FILES["file"]["name"])); ?> explode( 标识 , 字符串 ), 按照标识将字符串分割为数组 explode(".","test.te.png") == array("test","te","png"); end( 数组 ) 取出数组中最后一个值 . 上传文件完整代码 html: <!DOCTYPE html> <html> <head> <title></title> <meta charset="utf-8"> </head> <body>