つ⋅⌄⋅)づ⌁⌁도움⌁⌁⋆
2020.06.08_수업일지 ( 데이터베이스 ) 본문
** 오늘의 꿀 팁!
cmd - ipconfig -> 내 IP 찾을 수 있다
SSMS 주석 : -- - 한 줄 주석
*~~~* - 블록 주석
ALL = *
- Select 실행시키기
< 테이블 외의 데이터베이스 개체의 활용 >
테이블에서는 기본키 PK가 가장 중요하다!
인덱스 : 책의 제일 뒤에서 붙어 있는 '찾아보기'와 같은 개념 -> 한 페이지씩 찾는 것보다 찾아보기를 통해 찾아가는 것이 더욱 효율적으로 찾을 수 있다 ( 속도 훨씬 빠름 )
뷰 : 가상의 테이블 / 사용자의 입장에서는 테이블과 같게 보이지만, 뷰는 실제 행 데이터를 자기고 있지 않으며, 테이블에 링크(Link)된 개념 - 그저 보기 위해서 실행되지는 것 ( 보여주고 싶은 것만 보여주기 위해서 가상의 테이블을 만든 것)
뷰 -> 시뷰 -> 원하는 뷰 만들기 -> 생성 -> 보여주고 싶은 것만 체크 -> 뷰 이름 생성
실행시키면 똑같은 값이 나옴 -> 하지만 View 값은 가상의 값
저장 프로시저 : SQL Server에서 제공하는 프로그래밍 기능
( 메서드 = 함수 = 프로시저 )
저장 프로시저 -> 오른쪽 클릭 -> 새로 만들기 -> 저장프로시저
실행시키면 저장 프로시저에 myProc 생성
트리거 : 테이블에 부착되어서, 테이블에 INSERT나 UPDATE 또는 DELETE 작업이 발생하면 실행되는 코드
백업과 복원
1 ) 백업
shopDB -> 태스크 -> 백업과 복원 선택 ->
2 ) 복원
shopDB -> 태스크 -> 복원 -> 데이터베이스
서버 탐색기 - 데이터 연결 - 연결 추가 - 이름 IP , SQL 서버, 패스워드 , shopDB 선택하고 확인
도구 상자 - 데이터 그리드 뷰 - 끌어당겨서 winform에 넣기 - 데이터그리드뷰 보기 - 프로젝트 데이터 소스 추가
데이터베이스 - 데이터 세트 - 새 연결 ( 똑같이 선택) - 원하는 것 선택하면 실행된다
< SQL Server의 툴과 유틸리티 사용하기 >
- 테이블을 만드는 SQL문을 자동 생성하는 법
< Transact - SQL 기본 >
** T - SQL = >1. DML : 데이터를 조작하기 위한 언어 ( 가장 많이 사용 )
- 선택(Slecet)-R/삽입(Insert)-C/삭제(Delete)-D/수정(Update)-U -> CRUD
- 트랜잭션(transaction) 을 발생 ( SELECT 제외 )
C | R | U | D | |
회원 | o | o | o | X |
-> CRUD 중 D를 안 만들겠다
2. DDL : 데이터베이스 개체를 생성(Create)/삭제(Drop)/변경(Alter) / 데이터 정의 언어
- 트랙잭션 반생시키지 않음 -> 잘못만들면 지우고 새로 만들어야해서
3. DCL : 사용자에게 어떤 권한을 부여하거나 빼앗을 때 사용 / 데이터 제어 언어
- Grant/Revoke/Deny
- SELECT 문 : 데이터베이스 내의 테이블에서 원하는 정보를 추출하는 명령이다
[ WITH <common table expression)>]
Select select _list [INTO new table]
[ FROM table source ] [ WHERE search condition ]
[ GROUPby group_by_xpression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC! DESC ] ]
SELECT 열 이름
FROM 테이블 이름
WHERE 조건
INT IDEINT IDENTITY = 숫자 하나씩 늘려 순번을 매기겠다
PRIMARY KEY = 무조건 기본 NOT NULL
FOREIGN KEY REFERENCES userTBL(userID) = userTBL에서 useID를 가져와서 사용하겠다 ( 참조하겠다 )
groupName -> NULL 허용하겠다
마지막에는 , 를 넣어주지 않는다
데이터베이스 다이어그램 오른쪽 클릭- 새로운 데이터베이스 다이어그램 - 추가해준다
< 특정한 조건의 데이터만 조회하는 SELECT .....FROM ......WHERE >
WHERE 절은 조회하는 결과에 특정한 조건을 줘서 원하는 데이터만 보고 싶을 때 사용한다
-> ' '안에 있는 것 전체를 찾고 싶을 때는 =
- >L로 시작하는 사람을 찾고 싶을 때 LKE L% 를 사용해서 찾는다
- >부호를 사용해서도 사용 가능하다
-> 2개의 조건을 걸 수도 있다 ( AND, OR )
-> 같은 값이 나온다 BETWEEN 사용했을 때 더 간편하다
->IN 을 사용하면 더 간단하게 사용 가능
-> '_누구' _ 에는 누가 들어가도 괜찮다 그러나 글자수는 3글자로 맞쳐줘서 나온다
'김_ _' 도 가능 / 갯수와 매칭된다
( 서브쿼리 / ANY, ALL, SOME )
김경호의 키가 값에 들어가서 김경호 키보다 큰 사람을 도출해낸다
(SELECT height
FROM userTBL = (177)
WHERE name = '김경호')
- 오류의 경우 - 여라가지의 값이 나오게 되면 에러 발생한다 -> IN 절 사용
- ANY 는 뭐든지 상관없다를 의미
- ORDER BY : 결과가 출력되는 순서를 조절하는 구문
- price 를 내림차순으로 하고 같은 price를 가지고 있는 것은 userID 오름차순으로 정리된다
- 같은 내용을 지우는 것이 DISTINT / userTBL 안에 addr을 꺼내기 & ASC 내림차순으로 정렬
- SQL 서버에 특화된 TOP() -> TOP안에 있는것만을 도출 / DESC이용해 밑에서부터 도출도 가능
- SELECT INTO : 테이블을 복사해서 사용할 경우 사용 / 필요한것만 복사해서 사용하고 싶을 때
userID 와 prodName만 복사해서 새로운 테이블을 만듬 / 복사한 것은 내용만 복사해서 키와 나머지들은 없다.
( GROUP BY, HAVING과 집계 함수 )
: 결과를 그룹으로 묶어준다
-> 열이름 없음 이 나온다 / SUM = 숫자를 센다 / GROUP BY = 그룹으로 묶어서 계산해준다
이름을 지어주는 것 -> AS
함수명 | 설명 |
AVG() | 평균을 구한다 |
MIN() | 최소값을 구한다 |
MAX() | 최대값을 구한다 |
COUNT() | 행의 개수를 센다 |
COUNT_BIG() | 개수를 센다 ( 단 결과값이 bigint형이다 ) |
STDEV() | 표준편차를 구한다 |
VAR() | 분산을 구한다 |
- COUNT 는 숫자를 센다
- ~~이 없는 것으 찾을 때는 WHERE ____IS NULL 을 사용
WHERE 사용불가 -> HAVING 사용해준다 -> ASC 사용시 내리차순으로 정리
WHERE - 값들을 필터링 - 집계함수는 나타낼 수 없다 -> HAVING 사용
HAVING - 집계함수에 대해서 조건을 제한하는 것 -> 반드시 GROUP BY 뒤에 나와야 한다 ( 순서 중요 )
ORDER BY - 정렬시 사용