select col from hoge --where col like '%[A-Z][0-9]%' --英大文字に数字が連結している --where col like '%[^A-Z][a-z]%' --1文字目が英大文字でなく、2文字目以降が英小文字 --where col like '%[ぁ-ん]%' --ひらがなを含む --where col like '%[ァ-ン]%' --全角カタカナを含む --where col like '%[亜-龠]%' --漢字を含む
CONVERT(VARCHAR, <日付型フィールド>, 111) -> YYYY/MM/DD CONVERT(VARCHAR, <日付型フィールド>, 112) -> YYYYMMDD
列名 like '%'+char(10)+'%'
len( replace(replace(replace(replace(replace(replace(replace(replace(replace(replace( replace(kekka,'0', '') , '1', ''), '2', ''),'3',''), '4',''),'5',''),'6',''),'7',''),'8',''),'9',''),'.','') ) > 0
DECLARE @cmd sysname, @var sysname SET @var = 'Hello world' SET @cmd = 'echo ' + @var + ' > var_out.txt' EXEC master..xp_cmdshell @cmd
SELECT TOP 100 * FROM <table>
select * from ( select a.ptsid, isnull(cnt,0) cont from pt_basic a, (select ptsid, Count(*) cnt from exam_basic WHERE EXDATE>='20060101' and EXDATE<='20060630' group by ptsid ) b where a.ptsid *= b.ptsid ) a where cont=0
select * from ( select a.ptsid, isnull(cnt,0) cont from pt_basic a LEFT JOIN (select ptsid, Count(*) cnt from exam_basic WHERE EXDATE>='20060101' and EXDATE<='20060630' group by ptsid ) b ON a.ptsid = b.ptsid ) a where cont=0
Microsoft潤・SQL Server潤・の以前のバージョンでは、左外部結合と右外部結合の条件は WHERE 句で *= 演算子および=* 演算子を使用して指定していました。この構文を使用すると、 何とおりにも解釈できるあいまいなクエリに なることがあります。FROM 句で SQL-92 に準拠した外部結合を指定すれば、解釈があいまいに なることはありません。 SQL-92 構文の方が厳密なので、WHERE 句で従来の Transact-SQL 外部結合構文を使用する方法に ついてはこのリリースでは説明していません。SQL Server の今後のバージョンではこの構文は サポートしなくなる予定です。 Transact-SQL 外部結合を使用しているステートメントは SQL-92 構文を使用するように 変更する必要があります。 SQL-92 規格では、FROM 句または WHERE 句のどちらでも内部結合を指定できます。WHERE 句で 内部結合を指定すると、Transact-SQL 外部結合構文で生じたようなあいまいさは生じません。
select * from sysservers
select name from sysdatabases
select * from sysobjects where type='U' order by name
select * from syscolumns where id = object_id('table_name')
select a.name tname, b.name cname from syscolumns a, sysobjects b where a.name='col_name' and a.id=b.id
select * from sysobjects where parent_obj=object_id('table_name')
SELECT constid = CONVERT(int, id), id = CONVERT(int, parent_obj), colid = CONVERT(smallint, info), spare1 = CONVERT(tinyint, 0), status = CONVERT(int, CASE xtype WHEN 'PK' THEN 1 WHEN 'UQ' THEN 2 WHEN 'F' THEN 3 WHEN 'C' THEN 4 WHEN 'D' THEN 5 ELSE 0 END + CASE WHEN info != 0 THEN (16) ELSE (32) END + CASE WHEN (status & 16) != 0 THEN (512) ELSE 0 END + CASE WHEN (status & 32) != 0 THEN (1024) ELSE 0 END + (2048) + CASE WHEN (status & 256) != 0 THEN (16384) ELSE 0 END + CASE WHEN (status & 512) != 0 THEN (32767) ELSE 0 END + CASE WHEN (status & 4) != 0 THEN (131072) ELSE 0 END + CASE WHEN (status & 1) != 0 THEN (1048576) ELSE 0 END + CASE WHEN (status & 1024) != 0 THEN (2097152) ELSE 0 END), actions = CONVERT(int, 4096), error = CONVERT(int, 0) FROM sysobjects WHERE xtype IN ('C', 'F', 'PK', 'UQ', 'D') AND (status & 64) = 0
convert(varchar,date,112) --YYYYMMDDの形式
select manid,datediff(year,birth,getdate()) age from <table_name>
select *,((f1+f2+f3+f4+f5)*ryo) fuk from( select ptsid,exdate,a.ykcd,b.ryo, isnull(ksufuk,0) f1, isnull(asafuk,0) f2, isnull(hirufuk,0) f3, isnull(yorufuk,0) f4, isnull(ssnfuk,0) f5, yoho,yoryo from ykzi_info a, tmykzi b ) c ) dみたいにする
select (JNM_SEI + ' ' + JNM_MEI) as simei from hoge_tbl;
ALTER TABLE <table_name> ADD constraint <pk_name> PRIMARY KEY (<col_name>)最後の列名の指定には()が必ず必要な模様なので注意
ALTER TABLE <table_name> NOCHECK CONSTRAINT <const_name>
if exists (select * from dbo.sysobjects where id = object_id(N'<ビューの名前>') and OBJECTPROPERTY(id, N'IsView') = 1) drop view <ビューの名前>
ALTER TABLE <tablename> ALTER column <col_name> char(15) Not nullみたいな感じ。ただし制約があると失敗するのであらかじめ制約をなんとかしないといけない
alter table <table_name> ADD <column_name> INTEGER DEFAULT 0 not nullみたいな感じ。
alter table <table_name> drop column <column_name>ただしこれだと制約をあらかじめ削除しておかないと失敗する
exec sp_rename '<table_name>.<col_name>', '<new_col_name>';
create unique NONCLUSTERED index Index名 on テーブル名(列1,列2)
drop index テーブル名.Index名
sp_who
CREATE TABLE #temp ( TABLE_NAME sysname, rows sysname, reserved sysname, data varchar(32), index_size varchar(254), unused varchar(100) ) INSERT INTO #temp EXEC sp_MSforeachtable @command1 = "sp_spaceused '?'" SELECT * FROM #temp order by table_name
sp_tables
sp_columns <table_name>
sp_pkeys <table_name>
RESTORE DATABASE <TO_DB> FROM DISK='FROM_DBバックアップファイル' WITH REPLACE, MOVE 'FROM_DBデータ論理名' TO 'TO_DBデータ物理ファイルフルパス.mdf', MOVE 'FROM_DBログ論理名' TO 'TO_DBログの物理ファイルフルパス.ldf'
みたいな感じ。リストア先のDBはREPLACEをつけておけばあってもなくてもOK
-- 読み込みのDISKのファイル名 SELECT @bkfname = 'D:\backup7\MySampleTest.DAT' --データベースの名前 SELECT @dbname2 = 'MySampleCopy' RESTORE DATABASE @dbname2 --復元したDBの名前 FROM DISK = @bkfname --保存先ファイル名 WITH REPLACE --同じ名前のDBがあれば、既存を削除 , MOVE 'MySampleTest_Data' TO 'd:\test\MySampleCopy.mdf' , MOVE 'MySampleTest_Log' TO 'd:\test\MySampleCopy.ldf'
RESTORE FILELISTONLY FROM DISK='<backup_file_name>'
DBCC SHRINKDATABASE ( database_name [ , target_percent ] [ , { NOTRUNCATE | TRUNCATEONLY } ] )
BACKUP LOG [DatabaseName] WITH NO_LOG DBCC SHRINKDATABASE ([DatabaseName], TRUNCATEONLY) DBCC SHRINKFILE ([DatabaseName]_log, 2, TRUNCATEONLY)
sqlcmd -S サーバー名 -U ログインユーザー名 -P パスワード
create database データベース名 on primary ( filename = 'データファイルのフルパス' ) log on ( filename = 'ログファイルのフルパス' ) for attach
データファイルが複数ある時は
on primary ( filename = 'データファイルのフルパス' ) , ( filename = 'データファイルのフルパス' )
となり、必ずひとつはprimaryを指定する。
Use hogeDB go sp_change_users_login 'report'ユーザhogeが表示されるはず
Use hogeDB go sp_change_users_login 'update_one', 'hoge', 'hoge'
create login db_user with password = 'db_user', default_database = デフォルトのデータベース, check_policy = OFF
create user hoge_user for login db_user with default_schema = dbo
exec sp_addrolemember 'db_owner', 'hoge_user'