오늘 작성한 SQL에 대한 내용은 SQL의 보편적인 내용이라고 확언할 수 없다.
Windows SQL Server에서 유효한 내용들.
실습에 쓴 SQL 서버는 풀 버전은 아니고, 실습용으로 조금 축소된 버전.
- Windows SQL Server 설치 과정
SQL 서버 설치 파일 관리자 권한으로 실행 > 미디어 다운로드(가장 우측) > Express Core 선택 > 설치 완료 후 폴더 열어서 실행 파일 관리자 권한으로 실행(압축 풀기) > 끝나면 SQL 설치 센터가 나온다 > 새 SQL Server 독립 실행형 설치(첫 항목) 클릭 > 원래는 MS 업데이트 확인 체크해야 하지만 실습이니 해제 > 에러 넘기고 다음 > 작업 완료 후 방화벽 경고는 무시하고 넘기기 > DB 엔진 서비스, SQL 서버 복제, SQL 클라이언트 연결 SDK 모두 체크/인스턴스 루트(DB가 들어가는 경로) 확인 후 다음 > 인스턴스 명명(서버 이름)을 기본 인스턴스로 체크, SQL Server 디렉터리 확인 > 서버 브라우저는 안 쓰고, 서버 엔진만 쓰고(기본값으로 두고) 다음 > 이 SQL 서버는 Windows와 함께 돌아가므로 Windows의 인증 모드(강력하다) 함께 사용 가능. Windows 인증 모드 체크, 다음(다른 탭은 건드리지 않음) > 설치 완료. 끝
SSMS는 기본값으로 쭉 설치 > 재시작하면 완료.
- Window SQL Server 설정
시작 메뉴 목록 > MS SQL Server Tools 18 > MS SQL Server Management Studio 진입 > 들어가면 '서버에 연결'
-> 기본 설정(서버 유형 데이터베이스 엔진, 서버 이름 FIRST, 인증 Windows 인증)으로 연결
-> 상단의 '새 쿼리' 클릭하면 빈 화면이 뜬다.
-> 좌측 상단의 master는 현재 접근 중인 DB를 의미
-> '실행'을 누르면 작성한 SQL문 전송
-> 좌측의 '개체 탐색기'는 DB를 GUI로 보여준다.
-> '데이터베이스' 항목으로 내려가 보면 데이터베이스가 저장되는 부분과 백업되는 부분이 있다.
-> '보안' 항목에서 인증 방식 변경 가능
-> 보안> 로그인을 보면 계정들이 나오는데, sql 서버 최고 관리자는 sa다. 로그인 차단되어 있음.
C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Backup
-> 이 경로에 백업 파일을 넣어 실습을 진행
-> 백업 파일이 있다면 DB로 복구시킬 수 있다.
-> 개체 탐색기>데이터베이스 우클릭> 데이터베이스 복원> 원본을 디바이스에서 찾아 넣는다> 확인 누르면 DB 생성됨
-> 생성된 데이터베이스 우클릭 > 이름을 AD로 바꾸고
DBMS = SQL Server 2016, MySQL, MariaDB 등
데이터베이스 : 데이터의 집합
DBMS 안에 DB, DB 안에 테이블, 테이블 안에 데이터
Windows 인증 모드/혼합 모드(Windows의 사용자로도 SQL 서버에 로그인 가능)
-> 전자는 Windows 인증을 거쳐 들어가는 것/후자는 SQL 서버로 다이렉트로 진입
-> 보안상 혼합 모드는 권장되지 않는다.
-> 로컬에서는 그게 그거지만, 원격 접속에서는 확연히 다르다.
- DBMS : DB를 관리/운영하는 역할
-> 여러 사용자나 응용 프로그램(SDK, IIS 등)이 공유하거나 동시 접근이 가능해야 한다.
-> SQL Server는 DB를 자료가 저장되는 (파일로 구성된)디스크 공간으로 취급.
-> DBMS(SQL Server) 안에 각 도메인들이 사용하는 여러 DB가 있는 것
-> SSMS로 DBMS에 접근
웹 서버 안의 웹 페이지로 로그인한다는 것은
-> 아이디와 패스워드가 웹 서버 내부에 저장되어 있는 것은 아니다. 웹 서버는 웹 서비스만 제공.
-> 로그인 요청이 들어오면 웹 서버가 DB 서버에게 아이디와 패스워드를 확인, DB 서버가 결과를 웹 서버에게 응답
-> 웹 서버가 로그인 허용/거부 여부를 결정
- DB의 중요한 특징
- 데이터의 무결성(Integrity) : 데이터를 직접적으로 수정하지 않는 이상, 해당 데이터는 원본 그대로 유지되어야 한다.
- 데이터의 독립성 : 무결성 유지를 위해 데이터를 독립적으로 저장
- 보안
- 데이터 중복 최소화
- 데이터의 안전성 향상
- 응용 프로그램 제작 및 수정이 쉬워짐
DBMS가 여러 종류가 있다 : 계층형(Hierachical)/망형(Network)/관계형(Relational) 등
SQL은 관계형 DB에서 사용되는 언어
-> DBMS 제작사와 독립적
-> 다른 시스템으로의 이식성이 좋음
-> 계속 발전하는 SQL 표준
-> 대화식 언어
-> 분산형 클라이언트/서버 구조
-> 모든 DBMS의 SQL문이 완벽하게 같지는 않음에 주의
요구사항 분석/설계/모델링 : 정보시스템 구축 절차 요약 - 외울 필요는 없고 이해만
-> 정보시스템은 분석/설계/구현/시험/유지보수의 5단계를 거친다.
-> 분석 : 무엇을 할 것인가
-> 설계 : 시스템을 어떻게 구축할 것인가
-> 분석/설계가 전체 공정의 절반 이상을 차지
-> 분석/설계에서 가장 중요한 과정 중 하나는 DB 모델링 : 현실의 데이터를 SQL 서버에 어떻게 옮겨 놓을 것인지 결정
-> 데이터의 특성을 추출해 SQL 서버로 옮긴다.
DB 생성 절차 : DBMS 설치, DB 생성, 테이블 생성, 데이터 입력, 데이터 조회/활용
Transaction : DB가 처리하는 하나의 작업. 쿼리의 작업 단위
-> 반드시 성공하거나, 하나라도 잘못되면 모조리 Rollback : 원자성
스키마(Scheme) : DB를 구성하는 개체, 속성, 관계 등 이것저것을 의미.
행(레코드), 열(속성)
- SQL 실습
USE DB명;
-> 사용할 DB 선택 : USE AD;
-> Windows SQL Server는 SHOW 명령어가 없다. SHOW DATABASES; 이런 거 안됨.
-> 대신 쓰는 SQL문 : SELECT name, database_id, create_date FROM sys.databases ;
SELECT {select_list} FROM {Table_list};
-> 이것저것 추가로 넣을 수 있는 구문이 있지만 필수 구문은 이 정도.
[ WITH <common_table_expression>]
SELECT select_list [ INTO new_table ]
[ FROM table_source ]
[ WHERE search_condition ]
[ GROUP BY group_by_expression ] [ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
* 는 모든 문자열(전체 = 모든 속성)을 의미
Windows SQL Server에서 SQL문을 실행할 경우에는 화면에 있는 모든 SQL을 실행.
-> 이전 라인에 있는 SQL문을 이미 실행했더라도, 다른 SQL문을 적고 실행하면 다시 실행된다.
-> 해당 SQL문을 드래그해서 실행하면 그 문장만 실행된다.
한 줄 주석 처리는 앞에 -- 붙이고, 여러 줄 주석 처리는 /* 와 */ 사이
1. 설정된 서버의 명칭 확인
SELECT @@SERVERNAME
2. 전체 DB 확인
SELECT name, database_id, create_date FROM sys.databases ;
3.DB 내 테이블 확인
SELECT * FROM INFORMATION_SCHEMA.TABLES;
4. 테이블 구조 확인
SELECT
TABLE_NAME,
COLUMN_NAME,
DATA_TYPE,
CHARACTER_MAXIMUM_LENGTH,
IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS;
WHERE 조건문 중...
[속성] LIKE '_종%' : 앞에 어떤 문자(열)가 있고, '종' 문자가 있고, 그 뒤에 다시 문자(열)가 있는 형태
-> 잘 안 씀
서브 쿼리와 ANY/ALL/SOME
-> 서브 쿼리 결과 중 하나라도 만족/모두 만족/(SOME은 ANY와 유사)
ORDER BY [속성] [ASC | DESC]
-> ASC는 오름차순(기본값), DESC는 내림차순
SELECT [복사할 열] INTO [새로운 테이블] FROM [기존 테이블]
-> 새로운 테이블로 복사
SELECT [속성 1], [속성 2] GROUP BY [속성 1]
-> 그룹으로 해당 속성 값들을 묶어주는 역할
-> 예시 : SELECT userID, SUM(amount) FROM buyTBL GROUP BY userID;
-> userID로 그룹을 만들어 특정 userID를 가진 행의 amount들을 모두 합해서 반환
-> 집계 함수로 특정 그룹으로 분리하는 경우엔 GROUP BY, 그룹 구분 없이 중복 데이터 제거를 원할 경우에는 DISTINCT
-> 속성 1이 SELECT에 없어도 된다.
WHERE [조건문 1] HAVING [조건문 2]
-> 집계 함수로 조건 비교를 하는 경우에 사용.
-> 조건문 2에는 집계 함수가 사용된다.
집계 함수
AVG() : 평균을 구함
MIN()/MAX() : 최솟값/최댓값 구함
COUNT() : 행의 개수 구함
STDEV() : 표준편차 구함
VAR() : 분산을 구함
SUM() : 합계를 구함
3교시 초반 다시 듣기.
SQL이 대부분 아는 내용이라 이론 시간에는 좀 지루했다.
'교육' 카테고리의 다른 글
[복습] 3~4주차 복습 (0) | 2021.08.16 |
---|---|
[19일 차] 21.08.13 : Windows Server 8 (0) | 2021.08.13 |
[17일 차] 21.08.11 : Windows Server 6 (0) | 2021.08.11 |
[16일 차] 21.08.10 : Windows Server 5 (0) | 2021.08.10 |
[15일 차] 21.08.09 : Windows Server 4 (0) | 2021.08.09 |
댓글