System & Develop/SQL2008. 6. 19. 09:37
test base : mysql 5.0.44

mysql 5.0.44 사용자 계정 추가 



* 사용자 추가
insert into user values ('localhost','아이디',password('비밀번호'),'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y','Y','Y','Y','Y','Y','0','0','0','0');

* DB 추가
insert into db values ('%',' 데이터베이스명','아이디','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

flush privileges;

SHOW VARIABLES LIKE 'have_innodb';SHOW STATUS LIKE '%innodb%';
Posted by basaaja
System & Develop/SQL2008. 6. 17. 15:16
Test Base : ms-sql 2005

데이터 베이스를 bak파일로 부터 복구 시에는 데이터 베이스의 사용자와 로그인 계정이 일치

하지 않아서 문제가 발생 한다. 이때는 아래의 SP로 사용자와 계정을 일치 시킨다.

*선행 작업 : 사용자를 백업의 사용자와 같은 이름으로 먼저 추가 시킨다.

1. 연결 되지 않은 사용자 조회
use 데이터베이스명;
exec sp_change_users_login 'Report';

2.사용자와 계정 연결
use 데이터베이스명 ;
go
exec sp_change_users_login 'Auth_Fix','사용자',null,'비밀번호';


관련 링크 : How to troubleshoot orphan users in SQL Server databases?
Posted by basaaja
System & Develop/SQL2003. 6. 23. 18:21
SET STATISTICS TIME ON
SELECT p.prIdx,min(p.prTitle),min(p.prImagePath),count(r.rvIdx) as count  FROM beauty_product as p LEFT JOIN beauty_reView as r ON p.prIdx = r.rvPrIdx
GROUP BY p.prIdx
Posted by basaaja
System & Develop/SQL2003. 5. 6. 00:51
delete from AeRang  
where rowid in ( select max(a.rowid) from AeRang a, ( select Name, count(*) from AeRang  
group by Name having count(*) > 1 ) b  
where a.Name = b.Name );  

Posted by basaaja
System & Develop/SQL2003. 4. 22. 15:05
SET STATISTICS IO ON

해보세요 뭐라고 나오는지 ;;
Posted by basaaja
System & Develop/SQL2003. 4. 22. 15:04
SET STATISTICS TIME ON

쿼리 실행 시간을 측정한다

쿼리분석기에 입력하고 쿼리를 실행하면 결과가 출력된다.

ex>

SET STATISTICS TIME ON
SELECT * FROM goods

-----------------------------
SQL Server 실행 시간:
   CPU 시간 = 156ms, 경과 시간 = 14494ms.
ms = milli second , 10의 마이너스 3승 -_-;;

Posted by basaaja
System & Develop/SQL2003. 4. 22. 14:41
클러스터 색인(Clustered Index)

물리적인 행의 순서와 색인된 순서가 동일하다.

        - 연속적인 키 값을 가지는 컬럼들을 검색할 때 유리하다

        일정한 범위를 주고 찾는 경우에 속도 향상에 도움이 된다.

        - 클러스터 색인은 테이블의 물리적 순서를 바꾼다.

        색인의 리프에 실제 데이터가 존재한다.

        - 디폴트는 비 클러스터 색인이다.



고려사항

        - 모든 테이블은 단지 하나의 클러스터 색인을 가질 수 있다.

        - 색인을 생성하는 동안 실제 색인을 저장할 공간의 두배가 필요하다.

        tempdb가 아닌 해당 데이터베이스에 공간이 필요하다

        SORTED DATA키워드를 사용하면 필요한 공간이 줄어든다.

        - 다른 색인보다 가장 먼저 생성되어야한다.

모든 기본키는 클러스터 색인이다?

        - 정렬되어 있어야 더 좋은 속도를 낼 수 있는 컬럼을 클러스터 색인으로 하는 것이 좋다.



비클러스터 색인(Nonclustered Index)

테이블의 논리적인 순서를 가리키는 객체를 생성한다.

        - 컬럼의 물리적인 순서와 색인된 순서가 다르다.

        색인의 리프는 순서와 색인된 순서가 다르다.

        - 일정한 범위를 주고 찾는 경우에는 Table Scan보다 더 느리다.

        - Covered Query의 경우에 유리하다.



고려사항

        - 테이블에 최대 249개의 비 클러스터 색인을 생성할 수 있다

        - 클러스터 색인을 가장 먼저 생성하는 것이 좋다.

        클러스터 색인을 생성한 뒤에 비 클러스터 색인을 생성해야한다.

        비클러스터 색인을 생성한 후에 클러스터 색인을 생성하면 기존의 모든 비 클러스터 색인을 재 생성하게 된다.

출처 : sqler.pe.kr

Posted by basaaja
System & Develop/SQL2003. 4. 15. 23:44


SET NOCOUNT ON


-- CHECK FOR THE TABLE CALLED 'RETORNO'
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS
WHERE ID = OBJECT_ID(N'[DBO].[RETORNO]')
AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1)
        DROP TABLE [DBO].[RETORNO]

-- CREATES THE TABLE

CREATE TABLE RETORNO
(
        CAMPO  CHAR(50)
)


-- IF THE USER DON'T WANT SAME RESULTS ,
--CREATE A TEMPORARY TABLE
IF @REPETIR = 'N'
BEGIN
        CREATE TABLE #ALE
        (
                COD INT
        )
END

-- GET THE TOTAL NUMBER OF RECORDS ,
--USING THE SYSINDEXES TABLE
SELECT @TOTAL = ROWS FROM SYSINDEXES
WHERE ID = object_ID(@TABELA)
AND INDID < 2

-- IF THERE IS A TABLE....
IF @TOTAL IS NOT NULL
BEGIN
        
-- CLEAN THE COUNTER
SELECT @CONTADOR = 0
        
-- DO A LOOP SEVERAL TIMES TO GET THE NUMBER ,
--AND RECORDS , OF RANDOM RECORDS THAT THE USER WANT
WHILE @CONTADOR <> @VEZES
BEGIN

-- INCREASE THE COUNTER
SELECT @CONTADOR = @CONTADOR + 1

-- GET A RANDOM NUMBER USING THE DATE....
SELECT  @VAL = REVERSE((DATEPART(mm, GETDATE()) * 100000 )
          + (DATEPART(ss, GETDATE()) * 1000 )
          + DATEPART(ms, GETDATE()))
        
SELECT @AUX = CONVERT(CHAR,@VAL * ( @CONTADOR )  )
        
SELECT @AUX = REVERSE(SUBSTRING(@AUX,3,5))

SELECT @VALOR = (CONVERT(INT,@AUX)%@TOTAL)+1
        

-- IF THE USER DON'T WANT TO REPEAT DATA...
IF @REPETIR = 'N'
BEGIN
-- CHECK FOR THE USE OF THIS NUMBER
IF NOT EXISTS(SELECT COD FROM #ALE WHERE COD = @VALOR)
BEGIN
                
-- CREATE A DYNAMIC CURSOR WITH SOME RECORDS.
--THE LAST WILL BE THAT RANDOM
EXECUTE('DECLARE CUR_MEU CURSOR SCROLL FOR  SELECT TOP '
        + @VALOR + ' ' + @CAMPO+ ' FROM ' +@TABELA )

OPEN CUR_MEU
-- GO TO THE LAST RECORD
FETCH LAST FROM CUR_MEU INTO @NAME

-- INSERT THE DATA IN THE RETURN TABLE
INSERT INTO RETORNO VALUES(@NAME)

CLOSE CUR_MEU

DEALLOCATE CUR_MEU
                                
-- STORE THE RANDOM NUMBER IN A TABLE
--TO AVOID THE USE OF THIS NUMBER AGAIN
INSERT INTO #ALE VALUES(@VALOR)
                                
END
ELSE
BEGIN
-- IF THIS NUMBER WAS USED THEN
-- DECREASE THE COUNTER AND TRY AGAIN...
SELECT @CONTADOR = @CONTADOR - 1
END
                        
END                
ELSE
BEGIN
-- CREATE A DYNAMIC CURSOR WITH SOME RECORDS.
-- THE LAST WILL BE THAT RANDOM
EXECUTE('DECLARE CUR_MEU CURSOR SCROLL FOR  SELECT TOP '
   + @VALOR + ' ' + @CAMPO+ ' FROM ' +@TABELA )

OPEN CUR_MEU

-- GO TO THE LAST RECORD
FETCH LAST FROM CUR_MEU INTO @NAME

-- INSERT THE DATA IN THE RETURN TABLE
INSERT INTO RETORNO VALUES(@NAME)

CLOSE CUR_MEU

DEALLOCATE CUR_MEU
                                
END
                
END
        
SET NOCOUNT OFF
END

-- IF THE TABLE WAS CREATED , WE MUST DROP IT
IF @REPETIR = 'N'
BEGIN
        DROP TABLE #ALE
END


-- RETURN TO THE USER ALL RANDOM RECORDS
SELECT CAMPO FROM RETORNO

-- DROP THE TABLE WITH THE RANDOM RECORDS
DROP TABLE RETORNO

GO

/* END OF THE STORED PROCEDURE */
        

/* ----------------------------------
USE OF THE STORED PROCEDURE:
1-ARGUMENT: HOW MUCH RANDOM RECORDS
THE STORED PROCEDURE SHOULD RETURN
2-ARGUMENT: NAME OF THE TABLE WICH
THE RANDOM RECORDS SHOULD RETURN
3-ARGUMENT: FIELD ( COLUMN ) OF THE TABLE.
MUST BE A CHAR(50) OR LEAST. THIS CAN BE CHANGED
BY OTHERS DATATYPES WITH A FEW MODIFICATIONS

4?ARGUMENT:  
'S'-> THE PROCEDURE CAN RETORN SAME RANDOM RECORDS
              
'N'-> ALL RECORDS RETURNED SHOULD BE DIFFERENT

OBSERVATION: THIS FOLLOWING EXAMPLES ARE
TESTED BASED ON THE TABLES OF THE NORTHWIND DATABSES
CREATED BY THE INSTALATION PROGRAMAN OF
SQL SERVER 7.0 AND 2000

*/


EXEC PROC_RANDOM 10,'PRODUCTS' , 'PRODUCTNAME', 'S'

EXEC PROC_RANDOM 10,'SUPPLIERS' , 'COMPANYNAME'  , 'N'

EXEC PROC_RANDOM 10,'SUPPLIERS' , 'COMPANYNAME'  , 'S'

EXEC PROC_RANDOM 10,'SUPPLIERS' , 'CompanyName+contactName'  , 'S'

EXEC PROC_RANDOM 10,'SUPPLIERS' , 'CompanyName+contactName'  


/*******************************************/
/* END OF FILE */



Posted by basaaja
System & Develop/SQL2003. 4. 15. 23:14
select dateadd(day,-datepart(dd,@idate),dateadd(month,1,@idate))
Posted by basaaja
System & Develop/SQL2003. 4. 15. 23:00
--drop table #a
create table #a(id int)
go
insert into #a values(1)
insert into #a values(2)
insert into #a values(3)
insert into #a values(4)
go

order by절에다가 case문을 사용하시면 됩니다.

select *
from #a
order by case id when 2 then 1
                 when 3 then 2
                 when 1 then 3
                 when 4 then 4
                 else 9 end

id          
-----------
2
3
1
4

(4개 행 적용됨)

'System & Develop > SQL' 카테고리의 다른 글

랜덤 레코드를 가져오는 SP  (0) 2003.04.15
SqlServer Sp - 해당월의 마지막일 구하기  (0) 2003.04.15
인덱스에 대한 팁하나  (0) 2003.04.15
Mysql Dump  (0) 2003.02.20
BOOKS ONLINE  (0) 2003.02.20
Posted by basaaja