SQL TSQL函数和检查约束以确保表中存在父值

ALTER TABLE [dbo].[Message]  WITH CHECK ADD  CONSTRAINT [CK_Message] CHECK  (([InReplyToId] IS NULL OR [dbo].[CheckInReplyToMessageId]([InReplyToId])>=(0)))
GO
ALTER TABLE [dbo].[Message] CHECK CONSTRAINT [CK_Message]



CREATE FUNCTION [dbo].[CheckInReplyToMessageId] 
(
    @MessageId BigInt
)
RETURNS bit
AS
BEGIN
    DECLARE @RetVal bit

    SET @RetVal = (SELECT MessageId
                     FROM Message
                     WHERE MessageId = @MessageId)

    RETURN isnull(@RetVal, 0)

END

SQL SQL速记

Instead of writing:

SELECT books.title, books.short, books.releasedate, authors.firstname, authors.lastname
FROM books, authors
WHERE books.author_id = authors.id AND authors.id = 21

You can write:

SELECT b.title, b.short, b.releasedate, a.firstname, a.lastname
FROM books b, authors a
WHERE b.author_id = a.id AND a.id = 21

SQL 生成插入语句

USE AdventureWorks
GO
DECLARE @Columns VARCHAR(max);
SET @Columns = '[CultureID], [Name], [ModifiedDate]'
DECLARE @Table VARCHAR(max);
SET @Table = 'Production.Culture'

DECLARE @SQL VARCHAR(max)
SET @SQL = 'DECLARE @S VARCHAR(MAX)
SELECT @S = ISNULL(@S + '' UNION '',
''INSERT INTO ' + @Table + '(' + @Columns + ')'')
+ CHAR(13) + CHAR(10)
+ ''SELECT '' + ' + REPLACE(REPLACE(REPLACE(@Columns, ',', ' + '', '' + '),
'[', ''''''''' + CAST('),']',' AS VARCHAR(max)) + ''''''''')
+' FROM ' + @Table
+ ' PRINT @S'

EXEC (@SQL)

SQL 完整备份脚本

USE [master] ;

/* PRIVATE FIELD(s) */
DECLARE @Database SYSNAME ;
DECLARE @FileName NVARCHAR(500) ;

/* FILL FIELD(s) */
SELECT  @Database = 'NOMBRE DE LA BASE DE DATOS'
SELECT  @FileName = @Database + '_' + CONVERT(NVARCHAR, GETDATE()) + '.bak' ;


/* BACKUP DATABASE */
BACKUP DATABASE @Database TO DISK = @FileName 
GO

SQL 带设备的完整备份脚本

USE [master] ;

/* PRIVATE FIELD(s) */
DECLARE @Database SYSNAME ;
DECLARE @FilePath NVARCHAR(500) ;
DECLARE @FileName NVARCHAR(500) ;
DECLARE @BackupName NVARCHAR(500) ;
DECLARE @DeviceName NVARCHAR(500);

/* FILL FIELD(s) */
SELECT  @Database = 'DATA BASE NAME'
SELECT  @FilePath = N'D:\Backup\';
SELECT  @FileName = @FilePath + @Database + '.bak' ;
SELECT  @DeviceName = @Database + '_' + 'dump';

/* CREATE BACKUP DEVICE */
IF (SELECT COUNT(*) FROM sys.backup_devices WHERE NAME=@DeviceName)<=0
BEGIN
	EXEC sp_addumpdevice 'disk', @DeviceName, @FileName;
END

/* BACKUP DATABASE */
BACKUP DATABASE @Database TO @DeviceName
GO

SQL Redux Auth Table SQL

-- phpMyAdmin SQL Dump
-- version 2.11.9.4
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jan 02, 2009 at 12:09 PM
-- Server version: 5.0.67
-- PHP Version: 5.2.6

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

--
-- Database: `redux`
--

-- --------------------------------------------------------

--
-- Table structure for table `groups`
--

CREATE TABLE IF NOT EXISTS `groups` (
  `id` tinyint(3) unsigned NOT NULL auto_increment,
  `name` varchar(20) NOT NULL,
  `description` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `meta`
--

CREATE TABLE IF NOT EXISTS `meta` (
  `id` mediumint(8) unsigned NOT NULL auto_increment,
  `user_id` mediumint(8) unsigned NOT NULL,
  `first_name` varchar(50) NOT NULL,
  `last_name` varchar(50) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Table structure for table `users`
--

CREATE TABLE IF NOT EXISTS `users` (
  `id` mediumint(8) unsigned NOT NULL auto_increment,
  `group_id` mediumint(8) unsigned NOT NULL,
  `ip_address` char(16) NOT NULL,
  `username` varchar(15) NOT NULL,
  `password` varchar(40) NOT NULL,
  `email` varchar(40) NOT NULL,
  `activation_code` varchar(40) NOT NULL default '0',
  `forgotten_password_code` varchar(40) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

SQL TSQL获取刚刚插入的行的SQL自动编号ID

BEGIN
  	  INSERT INTO [dbo].[Transaction]
	  (
		[TotalAmountPaid]
		,[TransactionDttm]
	  )
	  VALUES
	  (
		@TotalAmountPaid
		,@TransactionDttm
	  )
	
	  Select SCOPE_IDENTITY() as 'TransactionID'
	END

SQL TSQL转换DateTime

--UK/NZ format dd/mm/yyyy
select CONVERT(DATETIME, '21/03/2000', 103)

--US format mm/dd/yyyy
select CONVERT(DATETIME, '03/21/2000', 101)

SQL 从午夜获取今天的日期

DateAdd(Day, DateDiff(Day, 0, GetDate()), 0)

SQL 更新记录时触发更新记录的时间戳

CREATE TRIGGER dbo.myTable_Updated
ON dbo.myTable
FOR UPDATE
AS
BEGIN
UPDATE	dbo.myTable
SET	LastUpdated = CURRENT_TIMESTAMP
WHERE	Id IN
(
	SELECT i.Id
	FROM inserted i
);
END
GO