mssql 작업을 할때 SELECT * INTO new_table_name FROM backup_table_name을 이용하면 간편하게 백업을 할수있다. 그러다 혹시라도 잘못 했을경우 기존데이터를 돌려놔야하는데 이때 간단하게 사용가능한것이 테이블 스크립팅기능 복원 시켜야할 테이블에 오른쪽클릭 > 테이블 스크립팅 > INSERT > 새 쿼리 편집기 창을 클릭하면 아래와 같이 해당 테이블의 INSERT 문이 생성된다. INSERT INTO [dbo].[User] ([Username] ,[Password] ,[IsAdmin]) VALUES ( , ,) GO 이때 아래와 같이 기존의 백업했던 테이블을 SELECT 해준다. INSERT INTO [dbo].[User] ([Username] ,[Password] ,..
B라는 테이블의 데이터를 A라는 테이블의 데이터로 업데이트 할 때 사용한다. 주로 ON은 PK(id)를 가지고 사용한다. UPDATE A SET A.DATA = B.DATA FROM (SELECT DATA FROM TABLE_A) AS A INNER JOIN (SELECT DATA FROM TABLE_B) AS B ON A.DATE2 = B.DATA2 -- 다른 데이터베이스내에 있는 TABLE도 가능하다. UPDATE A SET A.DATA = B.DATA FROM (SELECT DATA FROM TABLE_A) AS A INNER JOIN (SELECT DATA FROM DATABASE_NAME.dbo.TABLE_B) AS B ON A.DATE2 = B.DATA2
MULTI JOIN의 경우는 2개이상의 TABLE을 JOIN할때 사용한다. INNER JOIN문을 추가해서 넣어주면 된다. 이후에 원하는 컬럼들을 SELECT해서 출력해주면 된다. -- orders 테이블을 o, customers 테이블을 c, order_statuses 테이블을 os로 치환 -- 먼저 orders 테이블과 customers 테이블을 JOIN하고 -- 추가적으로 orders 테이블과 order_statuses 테이블을 JOIN 한다. SELECT o.order_id, o.order_date, c.first_name, c.last_name, os.name as status FROM orders o INNER JOIN customers c ON o.customer_id = c.customer..
하나이상의 테이블의 데이터를 출력 할 때 사용하는것이 바로 조인(JOIN) 이다. JOIN의 기본값은 INNER JOIN인데 따로 명시를 안하고 JOIN이라고 쓸 경우 INNER JOIN이 된다. JOIN은 ON 명령어로 JOIN 되는 조건을 묶어주면 된다. 또한 JOIN은 TABLE의 별칭을 정해서 사용하는 경우가 많은데 TABLE명을 다 쓰게 될 경우 쿼리자체가 늘어나기 때문이다. 기본적인 사용방법 SELECT * FROM table_name a INNER JOIN table_name b ON a.column = b.column ORDER BY도 사용가능하다. -- orders 테이블을 o로 치환, customers 테이블을 c로 치환 -- 후에 각 테이블의 customer_id이 같은 필드들만 출력..
1. IS NULL & IS NOT NULL IS NULL, IS NOT NULL은 해당 컬럼이 NULL 상태인지 아닌지 검색 해주는 구문이다. NULL 상태는 빈값('')과 다르며 이 개념은 여타 다른 언어에서도 많이 사용된다. -- phone 컬럼이 NULL상태인 데이터를 검색 SELECT * FROM customers WHERE phone IS NULL; -- phone 컬럼이 NULL상태가 아닌 데이터를 검색 SELECT * FROM customers WHERE phone IS NOT NULL; 2. ORDER BY ORDER BY의 경우 특정 컬럼을 기준으로 정렬할때 많이 쓰이며, 대부분의 경우 PK(고유키)와 함께 사용된다. 기본값은 ASC (Ascending 오름차순)이며 내림차순을 원할때는..
mysql 정규표현식은 크게 다음과 같은 형태로 구성되어있다. ^ 시작 $ 끝 | or와 비슷 [abcd] 해당문자열들이 들어가있는지 [-] 검색하려는 문자열의 범위를 지정해줌 -- '%field%'와 똑같은 구문 field라는 값이 들어간 값을 찾는다. SELECT * FROM customers WHERE last_name REGEXP 'field'; -- last_name의 값이 field로 끝나는 값을 찾는다. SELECT * FROM customers WHERE last_name REGEXP 'field$'; -- last_name의 값이 field로 시작하는 값을 찾는다. SELECT * FROM customers WHERE last_name REGEXP '^field'; -- '%field%'..
관계연산자 & BETWEEN & AND & IN & WHERE 조건을 좀더 다양하게 활용하기 위해서 알아야할 기본적인 것들이다. 관계연산자는 AND 와 OR 인데 사실상 대부분의 사람들은 아는개념이다. 단어의 뜻만 알아도 어느정도 느낌이 온다. AND 는 말그대로 "그리고" 이다. SELECT * FROM tbl WHERE A AND B AND C 이렇게 구문을 작성할 경우 A조건 B조건 C조건 3개가 동시에 만족할때만 WHERE절을 통과해서 출력되게 된다. 한마디로 A조건이면서 B조건이기도하고 또한 C조건도 만족한다. 이렇게 생각하면 편한다. OR 는 "이거나" 정도로 생각하면 될거같다. SELECT * FROM tbl WHERE A OR B 이런식으로 구문을 작성하게 되면 A조건이나 B조건 중에 하나..
데이터베이스는 백업이 중요하다 어떤 방법이든간에 백업은 하면할수록 좋은거 같다. 저장용량이 많다는 가정하에 MS-SQL에서 하나의 테이블을 가장 간단하게 백업할수 있는 방법중 하나는 SELECT * INTO 구문을 사용하는 것이다. SELECT * INTO 백업할_테이블_이름_날짜_숫자 FROM 백업할_테이블_이름 이런식으로만 해주어도 해당 테이블을 간단하게 백업 해둘수 있다. 크고작은 작업 중에 뭔가 불안하다 싶으면 이렇게 백업을 해두고 작업을 하면 걱정을 덜수 있다.
WHERE WHERE절의 경우 조건을 줄때 사용하게 된다. WHERE절을 자유자제로 사용할줄 알아야지 SQL문을 능숙하게 다룰수 있다고 말하겠다. SELECT 필드이름 FROM 테이블이름 WHERE 조건식; 이것이 기본적인 WHERE절의 사용방법이다. SELECT * FROM tbl WHERE name = '홍길동'; 해당 테이블에 name이라는 필드중에 홍길동이라는 이름이 있으면 해당 이름의 모든 필드를 보여준다. 이런식으로 가장 간단하게 사용할수있는건 " = " 을 이용해서 조건을 주는것이다. 하지만 이런경우는 그렇게 많지 않으니, 여러가지 조건을 줄수있는 방법을 알아놔야한다.
USE USE는 SELECT를 하기전에 사용할 데이터베이스를 지정할때 사용하는 아주 기본적인 명령어 이면서 중요하다. USE db_name; 이렇게 지정해 놓은 후에는 다시 USE를 사용하지 않거나 새쿼리를 하지 않는이상은, 모든 쿼리문은 해당 데이터베이스에서 실행 하게된다. 간단해보여도 잘못사용하거나 사용하지 않으면 큰일이 발생 할 수있으니 조심해서 사용해야겠다.
SELECT 모든 SQL문의 시작이 SELECT 문인거 같다. SELECT는 원하는 데이터를 가져와 주는 기본적인 구문이다 SELECT * FROM tablename 가장 간단하게 사용하는 법은 이런식이다 해당 테이블의 모든 필드를 불러오게 된다. SELECT fieldname1,fieldname2 FROM tablename 이런식으로 특정 필드네임만 불러와서도 사용이 가능하다. 순서대로 따지면 SELECT FROM WHERE GROUP BY HAVING ORDER BY 순서대로 들어가게 된다. 원래 정석대로라면 훨씬 더 어렵겠지만 이정도만 사용하여도 크게 무리는 없는거 같다.
ROLLUP 함수는 간단하게 GROUP BY 절에서 중간합계를 구하고 싶을때 사용한다. 기본적인 패턴은 아래처럼 사용한다. SELECT group by절로 묶을 열, 집계함수를 사용할 열 등 FROM 테이블 GROUP BY group by절로 묶을 열 WITH ROLLUP; 이렇게 사용하게 group by절로 묶인 열의 중간합계를 보여준뒤에 최종합계 나오게된다. SELECT num, groupName, SUM(price*amount); FROM buyTbl GROUP BY groupName, num WITH ROLLUP; 실행시켜보면 중간중간에 각 그룹의 소합계를 알려준다. ROLLUP절은 ORDER BY 절과는 사용할수 없으며, LIMIT를 사용할 경우 결과가 해석하기 어렵게 나올수 있기 때문에 사용할..