SQL
三五月儿
修行者 服务端开发(java/.net)
展开
-
SQL中UNION使用实例
实例使用表使用UNION合并查询结果集SELECT id,name,age,classid,score FROM tb_StudentWHERE age<=20UNION ALLSELECT id,name,age,classid,score FROM tb_StudentWHERE score<90SQL查询结果其中查询结果中的前4条记录来源于查询:SE原创 2013-11-24 18:01:02 · 18522 阅读 · 1 评论 -
sql语句性能优化介绍
一,SQL语句性能优化1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。3,应尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用转载 2016-11-07 14:26:46 · 7472 阅读 · 0 评论 -
使用GROUP BY子句进行分组操作
本文通过实例介绍GROUP BY子句的使用方法。1 准备测试数据新建数据表tb_Student并插入下图所示的测试数据。 图1 数据表tb_Student的数据2 使用GROUP BY子句进行分组问题1 要求按照班级ID对学生进行分组,并查询出每个班级的学生数,学生的最大年龄,最小年龄,年龄总和及年龄平均等信息。解答SELECT s.class_id原创 2014-09-28 16:50:56 · 7995 阅读 · 0 评论 -
因未指定NVARCHAR类型的长度而导致的问题
1 问题重现(1)准备测试数据新建数据表tb_Student并插入下图所示的测试数据。 图1 数据表tb_Student的数据(2)新建查询DECLARE @teacher_name NVARCHARSET @teacher_name = '李四'SELECT * FROM tb_Student AS s WHERE s.teacher_name = @teacher_原创 2014-09-28 17:29:27 · 2687 阅读 · 0 评论 -
SQL Server中的通配符和转义字符
通配符SQL中的通配符用来代替一个或者多个字符。SQL通配符与LIKE运算符一起使用。 SQL Server中常用的通配符%匹配任意长度的(长度可以为0)字符如’m%n’匹配字符m和n之间有任意个字符的字符串,匹配的示例有man,min,mon,moon,..._匹配任意单个字符如’m_n’匹配字符m和n之间含有任意一个字符的字符串,匹配的示例有man,mi原创 2014-03-26 22:47:58 · 5605 阅读 · 0 评论 -
深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
1、内联接(典型的联接运算,使用像 = 或 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。 2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。 在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定: 1)LEFT JOIN或LEFT OU转载 2014-04-05 09:16:08 · 5708 阅读 · 0 评论 -
例说SQL Server 2008 聚合函数
创建tb_Students表并插入3条测试数据。CREATE TABLE tb_Students(id int NOT NULL IDENTITY,name NVARCHAR(16) NOT NULL,age int NOT NULL,PRIMARY KEY(id))INSERT INTO tb_Students(name,age) VALUES('tiana',15),('yar原创 2014-04-04 21:43:50 · 2713 阅读 · 0 评论 -
探讨使用外联接(OUTER JOIN)联接两表时容易忽略的一个小问题
文章使用的实例表表1 班级表 表2 学生表 文章探讨问题说明请说出下面两组查询的结果是什么?查询1select * from tb_Class a left join tb_Student b on a.classid=b.classid where b.score查询2select * from tb_Class a left join tb_Stu原创 2013-11-26 19:49:44 · 2076 阅读 · 0 评论 -
例说SQL Server 2008 日期和时间函数
1 返回系统当前日期的函数GETDATE()例:SQL查询:SELECT GETDATE()执行结果: 2 返回指定日期是一个月中第几天的函数DAY(date)例:SQL查询:SELECT DAY('2014-3-15 00:00:00')执行结果: 3 返回指定日期中月份的函数MONTH(date)例:SQL查询:SELEC原创 2014-04-03 21:26:10 · 5265 阅读 · 0 评论 -
SQL Server数据类型转换
SQL Server数据类型转换隐式转换:类型相近的数据之间可以进行隐式转换,如int和float等。显式转换:隐式转换无法实现的数据之间需要进行显式转换,如int与nvarchar等。T-SQL中有两个显式转换函数,分别是CAST函数和CONVERT函数。例:SELECT CAST('130808' AS DATE),CONVERT(TIME,'2012-5-13 1转载 2014-04-01 22:02:51 · 1681 阅读 · 0 评论 -
例说SQL Server 2012 数学函数
1 绝对值函数ABS(x)例:SQL查询:SELECT ABS(-1),ABS(0),ABS(1)执行结果: 2 平方根函数SQRT(x)例:SQL查询:SELECT SQRT(4),SQRT(16)执行结果: 3 随机函数RAND(),RAND(x)例:SQL查询:SELECT RAND(),RAND(10)执行结果:原创 2014-04-01 21:33:14 · 2167 阅读 · 0 评论 -
使用表变量保存中间结果来简化我们的查询
在开发中,我们经常会使用到表变量,通常会先将查询的某些中间结果保存在表变量中,为后续的操作做准备。下面给出一个简单的实例来演示一下表变量的这种应用。 该实例使用下面的两张表,示例数据一并给出,如下图所示。表1 Student表表2 Class表该实例需要完成的任务为:查询出教师“yl”的所有学生信息。当然,这个任务很简单,我们完全可以使用下面的SQL查询来完成。原创 2013-10-21 21:29:56 · 4883 阅读 · 0 评论 -
向数据库插入数据后返回新插入行的主键
在开发的时候,大家可能也遇见过下面类似的问题。场景说明:存在表1,表2两张表,两表满足以下条件:表1 的主键为表2的外键表1的主键为自动编号,所以在插入数据时,会自增,无需人为干预现在,想进行如下操作:向表1插入1条新纪录,同时需要向表2插入多条新记录,表2中插入记录的外键为表1新插入记录的主键问题解析:因为表1的主键为自动编号,所以向表1插入新纪录的过程中原创 2013-10-09 23:17:07 · 9861 阅读 · 0 评论 -
SQL中ISNULL用法示例
ISNULL使用指定的替换值替换 NULL。语法ISNULL ( check_expression , replacement_value )参数check_expression将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。replacement_value在 check_expression 为 NULL时将返回的表达式。r原创 2013-11-03 20:37:54 · 19365 阅读 · 2 评论 -
时间戳timestamp
1 时间戳数据库中自动生成的 唯一的二进制的数据,通常用作给数据表的行添加版本戳的机制。timestamp与时间和日期无关。timestamp存储大小为8字节。一个数据表只能有一个timestamp列。每次修改或者插入包含timestamp列的行时,就会在timestamp列中插入增量数据库时间戳值。timestamp列不适合于作为键使用,因为任何更新都会更改timestamp原创 2013-12-02 22:19:26 · 9576 阅读 · 0 评论 -
笛卡尔积与交叉联接
1 笛卡尔积定义设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成的有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB。例如,A={a,b},B={0,1,2},则AxB={,,,,,,}BxA={,,,,,}2 交差联接交差联接是笛卡尔积在SQL中的实现,SQL中使用关键字“CROSS JOIN”来表示交差联接。例如:存在表tb_Cl原创 2013-12-08 21:10:16 · 5705 阅读 · 0 评论 -
例说SQL SERVER 2008内置函数之字符串函数
1 LTRIM与RTRIM>>SQL查询实例SELECT LTRIM(' I am 20 years old. ') AS Result;SELECT RTRIM(' I am 20 years old. ') AS Result;>>查询执行结果 >>函数说明功能:LTRIM函数返回删除了前导空格之后的字符表达式;RTRIM函原创 2013-12-08 11:44:14 · 3793 阅读 · 0 评论 -
SQL脚本批量建库,批量还原库,批量删除库
在我们的开发工作中,经常会面临这样的问题:为了测试需要建立n(n当然不是1,也不是2,而是100,甚至更大)多个与实际环境所使用的数据库相同的数据库。要是靠手工一个接一个的来建立我们所需要的库,当然是可以的。不过这种重复的体力劳动往往让人难以忍受。为了避免纯手工的建库操作,可以考虑使用SQL脚本来完成我们的工作。使用SQL脚本完成的主要的工作包括:批量建n个库,使用备份文件批量还原n个库,测试原创 2013-04-14 19:19:35 · 3477 阅读 · 0 评论 -
根据json数据生成建表脚本的解决方案
开发中,经常需要调用各种接口,而大部分接口都以json格式返回数据。 前段时间,有个需求,需要将json数据保存进数据库,而根据json数据建立相应的数据库表是个很耗体力的工作,所以决定开发一个小工具 ,可以根据json数据自动生成建表脚本。 该工具使用Newtonsoft.Json序列化工具解析json数据,再逐字段生成SQL脚本。下面是工具的主体代码。using Newtonsoft.Jso原创 2016-12-01 10:28:43 · 8496 阅读 · 2 评论