시작하기 전 확인
모든 명령은 관리 사용자(새 데이터베이스를 만드는 데 필요한 최소 권한은 CREATE 또는 루트 계정으로 실행된다.
MySQL 셸에 엑세스하려면 다음 명령을 입력하고 메세지가 표시되면 MySQL 루트 사용자 암호를 입력한다.
mysql -u root -p |
MySQL 루트 사용자의 암호를 설정하지 않은 경우 -p 옵션을 생략할 수 있다.
MySQL 데이터베이스 생성
새 MySQL 데이터베이스 생성은 단일 명령을 실행하는 것 만큼 간단하다.
새 MySQL 데이터베이스를 생성하려면 다음 명령을 실행한다.
여기서 database_name은 생성할 데이터베이스의 이름이다.
CREATE DATABASE database_name; # Query OK, 1 row affected (0.00 sec) |
만들려는 이름과, 이름이 같은 데이터베이스가 있는 경우 오류를 방지하려면 IF NOT EXISTS문 사용
CREATE DATABASE IF NOT EXISTS database_name; # Query OK, 1 row affected (0.00 sec) |
위 출력에서 쿼리 확인은 쿼리가 성공했음을 의미하고, 경고 1개는 데이터베이스가 이미 존재하고 새 데이터베이스가
생성되지 않았음을 나타낸다.
Line 1 : 같은 이름의 DB가 있으므로 삭제
Line 2 : 이름이 같은 데이터베이스가 있는 경우 오류 방지
Line 5 : book_db를 사용
Line 7~12 : book_db안에 books이름의 테이블을 생성 후
book_id, title, publisher 와 같은 칼럼들 생성
VARCHAR() : 문자
book_id를 주요 키로 설정
생성한 데이터베이스를 보려면 MySQL 셸 내에서 다음 명령을 실행한다.
SHOW DATABASES; |
위 명령은 서버에 있는 모든 데이터베이스 목록을 인쇄한다.
MySQL 데이터베이스 선택
데이터베이스를 작성할 때 새 데이터베이스는 사용할 수 있도록 선택되지 않는다.
MySQL 세션을 시작하기 전에 데이터베이스를 선택하려면 다음 문을 사용한다.
USE database_name; # Database changed |
데이터베이스를 선택하면 선택한 데이터베이스에서 테이블 작성과 같은 모든 후속 작업이 수행된다.
데이터베이스에서 작업할 때 마다 USE문을 사용하여 선택해야 한다.
다음 명령 끝에 데이터베이스 이름을 추가하여 MySQL 서버에 연결할 때 데이터베이스를 선택할 수도 있다.
mysql -u root -p database_name |
레코드 추가하기
INSERT INTO database_name (컬럼1, 컬럼2, ...) values(값1, 값2, ...) |
레코드 검색/수정/삭제 하기
SELECT column_name FROM database_name [WHERE 조건] [ORDER BY 정렬방식] |
ex) price가 50000원 이상인 책의 이름을 가져오고 싶을 때
SELECT title FROM books WHERE price > 50000;
ex) 출판사(publisher)가 Oreilly인 경우 가격을 찾고싶을 때
SELECT price FROM books WHERE publisher LIKE 'Oreilly'
UPDATE table_name SET column_name = 새로운 값, ... , [WHERE 조건]; |
DELETE FROM table_name [WHERE 조건]; |
JDBC를 이용한 데이터베이스 사용 절차
1. URL로 지정된 JDBC 드라이버를 적재한다 Class.forName("com.mysql.cj.jdbc.Driver"); 2. 데이터베이스 연결 DriverManager.getConnection(url, user, pw); 3. SQL 문장 작성 및 전송 Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM books"); 4. 결과 집합 사용 후 연결 해제 while(rs.next()) { int number = rs.getInt("book_id"); String name = rs.getString("title"); } |
JDBC로 데이터베이스에 연결하기
위 그림에서 MySQL로 book_db를 만들었다.
SQL 문장 실행
Connection, Statement, ResultSet 인터페이스를 사용하여 SQL 문장 실행
Statement s = con.createStatement(); String select = "SELECT * FROM books ORDER BY book_id"; ResultSet rows = s.executeQuery(select) |
결과 집합에서 이동과 처리
• executeQuery 메소드에 의해 반환된 ResultSet 객체에 쿼리 결과 레코드가 모두 저장되어 있다.
• 커서를 사용하여 결과 집합에서 리코드를 하나씩 처리
• 결과 집합(ResultSets) : 쿼리의 조건을 만족하는 레코드들의 집합
• 커서(cursor) : 결과 집합의 레코드들을 포함하고 있는 파일에 대한 포인터. 현재 접근되고 있는 레코드
• 커서 객체는 previous(), first(), last(), absolute(), relative(), beforeFirst(), afterLast() 등과 같은 이동 메소드를 가짐
• SQL에서는 index 번호가 1부터 시작.
커서 이동 예시)
while( rows.next() ) { //현재 레코드 처리 int id = rs.getInt("book_id") |
결과 집합 예시) --> 1-컬럼명으로, 2- index번호로
int id = row.getInt("id"); String name = row.getString("name"); int id = row.getInt(1); String name = row.getString(2); |
검색결과 출력하기
데이터베이스에서 책을 전부 검색하여 콘솔에 출력
데이터베이스 수정하기
테이블을 보면 추가가 되었는 것을 볼 수 있었다...
'Database' 카테고리의 다른 글
[MySQL] WorkBench ERD Diagram (0) | 2022.04.12 |
---|---|
[MySQL] 사용자 추가, 권한 부여,권한 제거 (0) | 2022.04.03 |
[MySQL] CMD(명령 프롬프트) (0) | 2022.04.02 |
데이터베이스 이해하기 (0) | 2022.03.11 |
DB 프로그래밍, MySQL 다운로드 및 설치(Workbench), 연동 (0) | 2022.03.11 |