1. 성의 획순으로 정렬:
선택 * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //최소부터 최대까지
2. 데이터베이스 암호화:
암호화('원래 비밀번호') 선택
pwdencrypt('원래 비밀번호')
select pwdcompare('원래 비밀번호','암호화된 비밀번호') = 1-그렇지 않으면 동일하지 않음 encrypt('원래 비밀번호')
select pwdencrypt( '원래 비밀번호'')
pwdcompare('원래 비밀번호', '암호화된 비밀번호') = 1을 선택하세요. 그렇지 않으면 동일하지 않습니다.
3. 테이블에서 필드를 검색합니다.
선언 @ list varchar(1000),
@sql nvarchar(1000)
select @list=@list+','+b.name from sysobjects a,syscolumns b 여기서 a.id=b.id 및 a.name= 'Table A'
Set @sql='select '+right(@list,len(@list)-1)+' from table A'
exec(@sql)
4. partition:
EXEC master ..xp_fixeddrives
5. 테이블 A와 B가 같은지 비교합니다.
if (select checksum_agg(binary_checksum(*)) from A)=(select checksum_agg(binary_checksum(*)) from B)
'같음' 인쇄
else
'같지 않음' 인쇄
6. 모든 프로파일러 프로세스를 종료합니다.
DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master .dbo.sysprocesses WHERE program_name IN('SQL profiler',N'SQL Profiler')
EXEC sp_msforeach_worker '?'
7. 레코드 검색:
N개 레코드부터 시작
Top N * From 테이블
------------------
N~M 레코드(기본 인덱스 ID가 있어야 함)
상위 M-N 선택 * 테이블에서 Where ID in (테이블에서 상위 M ID 선택) ID 설명별로 정렬
------------ -- ---------
N to end 레코드
Select Top N * From table Order by ID Desc
Case
예 1: 테이블에 10,000개 이상의 레코드가 있고, 첫 번째 테이블의 필드 RecID는 자체 증가 필드입니다. 테이블의 31번째부터 40번째 레코드를 찾는 SQL 문을 작성하세요.
Recid가 없는 A에서 상위 10개 recid 선택(A에서 상위 30개 recid 선택)
분석: 이렇게 작성하면, recid가 테이블에 논리적 인덱스를 가지고 있는 경우 몇 가지 문제가 발생합니다.
Select top 10 recid from A where... 가 인덱스에서 검색되는 반면, 후속 Select top 30 recid from A는 데이터 테이블에서 검색되므로 인덱스의 순서가 데이터 테이블의 순서와 일치하지 않을 수 있습니다. , 결과적으로 쿼리된 데이터는 원래 원하는 데이터가 아닙니다.
솔루션
1. A order by ricid에서 상위 30개 recid를 선택하여 order를 사용합니다. 필드가 자동으로 증가하지 않으면 문제가 발생합니다.
2. 또한 해당 하위 쿼리에 조건을 추가합니다. from A where recid>-1
예 2: 테이블의 마지막 레코드를 쿼리합니다. 테이블과 테이블 구조에 얼마나 많은 데이터가 있는지 모르겠습니다.
Set @s = 'select top 1 * from T where pid in in (select top ' + str(@count-1) + ' pid from T)'
print @s exec sp_executesql @s
9: 현재 데이터베이스의 모든 사용자 테이블 가져오기
xtype='u' 및 status>=0인 sysobjects에서 이름 선택
10: 특정 테이블의 모든 필드 가져오기
id=인 syscolumns에서 이름 선택 object_id('테이블 이름')
id가 있는 syscolumns에서 이름 선택(유형 = 'u' 및 이름 = '테이블 이름'인 sysobjects에서 id 선택)
두 가지 방법은 동일한 효과를 갖습니다
11 : 테이블과 관련된 뷰, 저장 프로시저 및 함수를 봅니다.
sysobjects a, syscomments b에서 a.*를 선택합니다. 여기서 a.id = b.id 및 b.text like '%table name%'
12: 현재 데이터베이스의 모든 저장 프로시저 보기
select name as 저장 프로시저 이름 from sysobjects where xtype='P'
13: 사용자가 만든 모든 데이터베이스 쿼리
select * from master..sysdatabases D where sid not in(master..syslogins에서 sid 선택(name='sa')) 또는 dbid를 선택하고 master..sysdatabases에서 AS DB_NAME으로 이름을 지정합니다. 여기서 sid <> 0x01
14: 특정 데이터베이스의 필드 및 데이터 유형을 쿼리합니다. table
information_schema.columns에서 column_name,data_type 선택 table_name = '테이블 이름'
15: 서로 다른 서버 데이터베이스 간의 데이터 작업
-- 연결된 서버 만들기
exec sp_addlinkedserver 'ITSV ', ' ' , ' SQLOLEDB ', '원격 서버 이름 또는 IP 주소'
exec sp_addlinkedsrvlogin 'ITSV ', 'false',null, 'username', 'password'
--쿼리 예
ITSV에서 *를 선택합니다. 데이터베이스 이름.dbo.테이블 이름
--예제 가져오기
ITSV에서 테이블로 *를 선택합니다.데이터베이스 이름.dbo.테이블 이름
--나중에 더 이상 사용하지 않을 때 연결된 서버를 삭제합니다
exec sp_dropserver 'ITSV', 'droplogins'
--원격/LAN 데이터 연결(openrowset/openquery/opendatasource)
--1.openrowset
--쿼리 예
select * from openrowset( 'SQLOLEDB', 'sql server name'; '사용자 이름 '; '비밀번호', 데이터베이스 이름. 테이블 이름)
-- 로컬 테이블 생성
openrowset( 'SQLOLEDB', 'sql 서버 이름'; '사용자 이름'; '비밀번호'에서 테이블로 선택 , 데이터베이스 이름.dbo. 테이블 이름)
-- 로컬 테이블을 원격 테이블로 가져옵니다.
insert openrowset( 'SQLOLEDB', 'sql server name'; 'user name'; 'password', 데이터베이스 이름. dbo.테이블 이름)
Select *from local table
--Update local table
update b set b. Column A from openrowset( 'SQLOLEDB', 'sql server name'; 사용자 이름 '; '비밀번호', 데이터베이스 이름.dbo.table 이름)을 a.column1=b.column1의 내부 조인 로컬 테이블로 사용
--Openquery 사용 시 연결을 생성해야 함
--첫 번째 생성 연결된 서버를 생성하기 위한 연결
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '원격 서버 이름 또는 IP 주소'
--Query
select * FROM openquery(ITSV, 'SELECT * FROM Database.dbo.테이블 이름')
--로컬 테이블을 원격 테이블로 가져오기
insert openquery(ITSV, 'SELECT * FROM Database.dbo.Table name')
select * from local table
--로컬 테이블 업데이트
b 세트 b. 열 B=a. 열 B
FROM openquery(ITSV, 'SELECT * FROM Database.dbo.tablename')를 a의 내부 조인 로컬 테이블로 설정합니다. .열 A=b .열 A
--3. opendatasource/openrowset
SELECT * FROM opendatasource( 'SQLOLEDB ', '데이터 소스=ip/ServerName;사용자 ID=로그인 이름;비밀번호=비밀번호' ). test.dbo.roy_ta
--로컬 테이블을 원격 테이블로 가져옵니다
opendatasource( 'SQLOLEDB', 'Data Source=ip/ServerName;User ID=Login name;Password=Password').Database를 삽입합니다. dbo.Table name
select * from local table
위 내용은 MYSQL 클래식 구문 - 개발 장의 내용입니다. PHP 중국어 홈페이지(www.php.cn)!