- 博客(28)
- 问答 (1)
- 收藏
- 关注
原创 数组字段映射(find_in_set()、charindex())的实现#
需求:Mssql的实现方法# with tb as (select a.*, lesson as lessonnamefrom t2 a, t1 bwhere charindex(','+b.id+',',','+lessonid+',')>0)select id,name,lessonid, ...
2017-10-23 21:47:20
867
转载 MySQL查询本周、上周、本月、上个月份数据的sql脚本
查询当前这周的数据SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now()); 查询上周的数据SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submitt
2017-05-16 09:11:24
5187
1
原创 Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中
Sql Server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件 select * from tablenmae where id in(1,2,3)这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql语句string aa=”1,2,3”;string sqltxt=”select * from tablename wher
2016-10-14 10:52:17
11667
转载 MySql避免"重复插入记录"的方法(INSERT ignore into,Replace into,ON DUPLICATE KEY UPDATE)
案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下 复制代码 1 INSERT IGNORE INTO table_name (email, phone, user_id) VALUES (‘test9@163.com’, ‘99999’, ‘9999’); 这样当有重复记录就会忽略,执行后返回数字0
2016-08-19 14:37:30
2863
转载 让数据库变快的10个建议!
大多数网站的内容都存在数据库里,用户通过请求来访问内容。数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。 1、小心设计数据库 第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。 譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。对于系统和用数据库的开发者来说,这很糟糕。 新建数据库时,应当将信息储存在不同的表里,采
2016-08-01 15:26:12
485
转载 数据库表中数据行去重复
起因我在创建唯一索引时,提示有重复数据,创建失败。于是,我得先去重,然后再创建唯一索引。1.建表CREATE TABLE `demo_table` ( `id` int(10) unsigned NOT NULL, `name` char(255) NOT NULL, `email` char(255) NOT NULL, PRIMARY KEY (`id`)) ENGINE=In
2016-07-29 14:40:32
770
转载 灵活运用 SQL SERVER FOR XML PATH
灵活运用 SQL SERVER FOR XML PATH FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活存储过程来完成的工作。那么以一个实例为主. 一.FOR XML PATH 简单介绍 那么还是首
2016-06-28 22:12:14
376
转载 SQL语句 打印输出 九九乘法表
DECLARE @a INT, @b INT, @str VARCHAR (1000)SET @a = 1WHILE @a <= 9BEGIN SET @b = 1 SET @str = '' WHILE @b <=@a BEGIN SET @str =@str + CONVERT (VARCHAR(1) ,@b) + '*' + CONVERT (VA
2016-06-13 10:01:51
6374
转载 如何查看表和索引的统计信息
如何查看表和索引的统计信息 这几天要求做一个服务器的统计信息,主要针对表和索引。下面我就简单分享几个查询数据表和索引统计信息的方法:1.使用T-SQL 语句实现:select schema_name(t.schema_id) AS '架构', t.name AS
2016-06-08 13:56:18
1535
原创 触发器-数据库中两张表之间的数据同步实现思路(增加、删除、更新)
分别创建增加、删除、更新的触发器(Trigger)来达到两张表之间数据同步的目的。 1:数据同步增加: 如有两张表——A表和B表,创建触发器使当A表插入数据后B表也同步插入数据。其中B表插入数据的字段需要同A表中的字段相对应。 CREATE TRIGGER 触发器名称 ON A表 AFTER INSERT AS BEGIN INSERT INTO B表(B表字段1,B表字段2,B表字段3
2016-05-18 10:47:49
13583
转载 skip-grant-tables:忘记mysql root用户密码的解决办法
大家往往会想到“skip-grant-tables”参数,介绍一个非常有用的mysql启动参数—— --“skip-grant-tables”。顾名思义,就是在启动mysql时不启动“grant-tables”,授权表 。有什么用呢?当然是忘记管理员密码后有用。1.关闭 MySQL数据库,因为root密码忘记了,mysqladmin无法使用,此时,只能通过kill pid关闭程序。2.在my.cnf
2016-05-04 13:55:49
1520
原创 update set from where 用法
两个表a、b,想使b中的memo字段值等于a表中对应id的name值 表a:id,name 1 王 2 李 3 张 表b:id,ClientName 1 2 3 (MS SQL Server) 语
2016-04-14 09:08:14
9670
转载 Mysql 存储过程基本语法
delimiter // 一般情况下MYSQL以;结尾表示确认输入并执行语句,但在存储过程中;不是表示结束,因此可以用该命令将;号改为//表示确认输入并执行。一.创建存储过程1.基本语法:create procedure sp_name() begin ……… end 2.参数传递二.调用存储过程1.基本语法:call sp_name() 注意:存储过程名称后面必须加括号,哪怕该存储过程
2016-03-18 15:12:54
356
原创 求满足条件的行数据相减求差值问题
需求分析有一张含(BBQ,GM,DQ,HJ,DATE)列的表,求相同BBQ,GM,DQ的不同HJ的DATE数据?HJ 2表示含黄金总数HJ 1表示黄金量 求不含黄金数?☆ 这里需要注意的是有些地区(如DQ0101,DQ0102),它只有'含黄金总数',没有单独的'黄金量',求值前就需要做一个判断了。建表结构-- -------------------------
2016-03-03 16:15:56
2209
原创 一个关于 #LAMP面试题# 详解
今天无意间看见了一个 #LAMP面试题#,觉得有点意思,就亲测了下,把结果分享出来。O(∩_∩)O~有一个用户表 table,里面有一个性别字段 xb(男,女),请写一条 SQL,查询“总人数”及“男生人数”。☆ 建表/*Navicat MySQL Data TransferSource Server : 本地Source Server Version : 50045Sourc
2016-02-27 21:48:32
1902
转载 经典MySQL常用语句大全
最常用的显示命令:1、显示数据库列表。show databases;2、显示库中的数据表:use mysql;show tables;3、显示数据表的结构:describe 表名;4、建库:create database 库名;5、建表:use 库名;create table 表名 (字段设定列表);6、删库和删表:drop database 库名;drop table 表名;7、将表中记录清空:d
2016-02-24 12:07:10
3710
转载 对Select into from 与 Insert into select 语句的解释
1.INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:INSERT INTO SELECT语
2016-02-24 10:27:50
373
转载 数据库SQL优化大总结
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:[sql] select id from t where num is null 最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.
2016-01-27 16:42:49
509
转载 最流行的六大数据建模工具
当今的商业决策对基于天的数据依赖越来越强烈。然而,正确而连贯的数据流对商业用户做出快速、灵活的决策起到决定性的作用。建立正确的数据流和数据结构才能保证最好的结果。这个过程叫做数据建模。为了避免认为错误并且加快进度,我们需要使用专业的软件来帮助我们建立数据逻辑模型和物理模型、生成DDL,并且能够生成报告来描述这个模型,同时分享给其他伙伴。本文列出的工具都是从Data to Value公司咨询顾问处精挑
2016-01-19 10:20:43
54464
原创 经典SQL语句大全
一、基础 1、说明:创建数据库CREATE DATABASE database-name 2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'---
2016-01-13 16:13:07
431
原创 mysql的replace into类似于oracle的merge sql语句
mysql的replace into命令replace into的用法,真的很好用,是insert into的增强版。在向表中插入数据时,我们经常会遇到这样的情况:1、首先判断数据是否存在;2、如果不存在,则插入;3、如果存在,则更新。 在SQL Server中可以这样处理:if not exists (select 1 from t where id = 1)?insert into t(id
2016-01-13 13:52:09
3029
转载 理解MySQL——索引
索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要1
2016-01-13 09:48:07
876
原创 sql中替换函数(replace(),STUFF())的用法
1、首尾替换特殊字符UPDATE article SET keywords=RIGHT(keywords,len(keywords)-1)WHERE keywords LIKE '|%'; -- 替换掉最左边的‘|’UPDATE article SET keywords=LEFT(keywords,LEN(keywords)-1) WHERE keywords LIKE '%|'; -- 替换
2016-01-12 09:59:31
3388
原创 图解SQL的各种连接(Inner join,outer join,left join,right join)
关于 SQL Join 的文章是一篇非常棒的新手入门指南。由于 SQL Join 似乎被默认为基础,同时利用文氏图表来解释它,乍一看似乎是很自然的选择。然而,就像文章评论里说的,我也发现在实际测试中,文氏图并没有完全符合SQL Join 语法。
2016-01-07 16:43:49
33881
1
转载 PowerDesigner使用教程
PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一。Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesigner则与其正好相反,它是以数据库建模起家,后来才发展为一款综合全面的Case工具。PowerDesigner主要分为7种建模文件:1. 概念数据模型 (CDM)对数据和信息进
2016-01-06 15:36:05
696
转载 深入详解SQL中的Null
NULL 在计算机和编程世界中表示的是未知,不确定。虽然中文翻译为 “空”, 但此空(null)非彼空(empty)。 Null表示的是一种未知状态,未来状态,比如小明兜里有多少钱我不清楚,但也不能肯定为0,这时在计算机中就使用Null来表示未知和不确定。Tony Hoare 在1965年发明了 null 引用, 并认为这是他犯下的“几十亿美元的错误”. 即便是50年后的今天, SQL
2016-01-06 15:05:34
453
转载 SQL Server中行列转换 Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQL Server2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P完整语法:table_sourcePIVOT(聚合函数(value_column)FOR pivot_columnIN()) UNPIVOT用于将列明转为列值(
2016-01-06 14:24:17
415
转载 over(Partition by…) 一个超级好用的特有(开窗)函数。
over(Partition by…) 一个超级牛皮的特有函数。分析函数over 及开窗函数一:分析函数over Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是 对于每个组返回多行,而聚合函数对于每个组只返回一行。 下面通过几个例子来说明其应用。 1:统计某商店的营业额。 date sale 1
2016-01-06 10:32:08
7924
空空如也
sql计算‘去年同期’的问题,求一优化方案,谢谢。
2016-01-11
TA创建的收藏夹 TA关注的收藏夹
TA关注的人