출처: https://bumcrush.tistory.com/182 [맑음때때로 여름]
# chapter03_06
# 집합(set)
# 집합 (순서X, 중복X, 추가 및 삭제 O)


# 선언

a = set()
print(a)
b = set([1,2,3,4])
c = set([1,4,5,6])
d = set([1,2,'pen','cap','plate'])
e = {'foo','bar','baz','foo','qux'} #key가없이 원소만 나열한다면 SET
f = {42, 'foo', (1,2,3), 3.14159}

# 출력
print ('a-',type(a),a, 2 in a )
print ('b-',type(b),b, 2 in b )
print ('c-',type(c),c)
print ('d-',type(d),d)
print ('e-',type(e),e)
print ('f-',type(f),f, 2 in f )


# 튜플 변환 (Set>>tuple)
print()
t=tuple(b)
print('t-',t)
print(type(t))
print('t-', t[0], t[1:3])


# 리스트 변환
l = list(c)
l2 = list(e)
print('l-', l, type(l))
print('l2-', l2, type(l2))


# 길이
print(len(a))
print(len(b))
print(len(c))
print(len(d))
print(len(e))
print(len(f)) #갯수/ 중복xxx


# 집합 자료형 활용
# 교집합.
s1 = set([1,2,3,4,5,6])
s2 = set([4,5,6,7,8,9])
print('s1 & s2 :' ,s1 & s2)
print('s1 & s2 :' ,s1.intersection(s2))
# 합집합.
print('s1 | s2 : ', s1|s2)
print('s1 | s2 : ', s1.union(s2))
# 차집합
print('s1 - s2 : ', s1 - s2)
print('s1 - s2 : ', s1.difference(s2))
# 중복원소가 있는지 알려주는 함수
print('s1 & s2 ', s1.isdisjoint(s2)) #False 일떄 교집함이 있다는뜻!! (dis)
# 부분 집합 확인
print('subset : ', s1.issubset(s2))
print('superset : ',s1.issuperset(s2))


# 데이터 추가/삭제.
s1 = set([1,2,3,4])
s1.add(5)
print(s1)
s1.remove(2)
print(s1)
# remove로 없는 원소를 삭제하려고 하면 Key error 라는 에러가 나타난다
s1.discard(3)
print(s1)
s1.discard(7) # 없는 원소를 삭제하려고 해도 에러X (예외발생X)
s1.clear() #전부삭제(리스트도마찬가지임)
print(s1)
# 챕터03_5
# 파이썬 딕셔너리
# 범용적으로 가장 많이 사용
# 딕셔너리 자료형 (순서X, 키 중복X, 수정O, 삭제O)


# 선언 / a= (튜플), [리스트], {딕셔너리}
ex = {'key': 'value'}
a = {'name' : 'kim', 'phone' : '01011111111', 'birth' : '870514'}
b = {0 : 'hello python'}
c = {'arr' : [1,2,3,4,5]}
d = {
    'Name' : 'Niceman',
    'City' : 'Seoul',
    'Age'  : 20,
    'Grage': 'A',
    'status' : True
}

# 자주쓰이진 않지만 리스트안에 튜플 형태로 선언하기도 한다. (불편..)
e = dict([
    ('Name', 'Niceman'),
    ('City', 'Seoul'),
    ('Age', 20),
    ('Grage', 'A'),
    ('status', True)
])

f=dict(
    name='niceman',
    city='Seoul',
    age = 20,
    grade = 'A',
    status = True
)


# 타입
print('>>>>>>>')
print('a  - ', type(a), a)
print('b  - ', type(b), b)
print('c  - ', type(c), c)
print('d  - ', type(d), d)
print('e  - ', type(e), e)
print('f  - ', type(f), f)
print()

# 출력
print('>>>>>>>')
print('a  - ', a['name'])           # 키가 존재 X > 에러발생
print('a  - ', a.get('name'))       # 키가 존재 X > NONE으로 처리
print('b  - ', b[0])
print('b  - ', b.get(0))
print('f  - ', f.get('city'))
print('f  - ', f.get('age'))
print()

# 딕셔너리 추가
print('>>>>>>>')
a['address'] = 'seoul'
a['name'] = 'jin'  # 원래 있던 값(name)을 추가하면 수정해버린다 (kim>jin)
a['rank'] = [1,2,3]
print('a  - ', a)
print()

# 딕셔너리 길이 확인
print('>>>>>>>')
print('a  - ', len(a)) #키의 갯수
print('b  - ', len(b))
print('c  - ', len(c))
print('d  - ', len(d))
print('e  - ', len(e))
print('f  - ', len(f))
print()


# dict_keys, dict_values, dict_items  : 반복문(__iter__)에서 사용가능
print('>>>>>>>')
# .keys() 키값들만 가져온다.
print('a  - ',  a.keys())
print('c  - ',  c.keys())
print('d  - ',  d.keys())
print('e  - ',  e.keys())
print('e  - ',  list(e.keys()))
print('a  - ',  list(a.keys()))
#.values 밸류값만 가져온다.
print('c  - ',  c.values())
print('d  - ',  d.values())
print('e  - ',  e.values())
#.itmes 키와 밸류값을 가져온다.
print('c  - ',  c.items())
print('d  - ',  d.items())
print('e  - ',  e.items())
print('e  - ',  list(e.items()))
print('d  - ',  list(d.items()))
print()
print('>>>>>>>')
print('a  - ', a.pop('name'))
print('a  - ', a)
print('c  - ', c.pop('arr'))
print('c  - ', c)
print()
print('f  - ', f.popitem())
print('f  - ', f)
print('f  - ', f.popitem())
print('f  - ', f)
print('f  - ', f.popitem())
print('f  - ', f)
print('f  - ', f.popitem())
print('f  - ', f)
print('f  - ', f.popitem())
print('f  - ', f)
print()
print('a  - ', 'birth' in a ) # birth라는 키가 a에 있는가.
print('a  - ', 'city' in b)


#수정.
print('>>>>>>>')

a['test']='test_dict'
print('a  - ', a)

a['test']='test_dict2'
print('a  - ', a)

a.update(test='test_dict3')
print('a  - ', a)

temp = {'test' : 'test_dict4'}
a.update(temp)
print('a  - ', a)
#chapter03_04
# 파이썬 튜플
# 리스트와 튜플 비교
# 튜플 자료형( 순서와 중복은 가능하지만, 수정과 삭제가 불가능(del/remove)_리뮤테이블

# 선언

t1 = ()
t2 = (1, 2)
t3 =(1,)  # 1개는 끝이 , 로 끝나야 tuple로 인식한다 (1)=int
t4  = 1, 2, 3



a=()
b=(1,)
c=(11,12,13,14)
d=(100, 1000, 'Ace', 'Base', 'Captain')
e=(100, 1000, ('Ace', 'Base', 'Captain'))

# 인덱싱
print('>>>>>>>>>')
print('d - ' ,d[1])
print('d - ' ,d[0]+d[1]+d[1])
print('d - ', d[-1])
print('e - ', e[-1]) #튜플반환
print('e - ', e[-1][1])

print('chane list - ', list(e[-1][1]))


# 수정xxx
# d[0] = 1500

# 슬라이싱
print('>>>>>>>>>')
print('d - ', d[0:3])
print('d - ', d[2:])
print('e - ', e[2][1:3])

# 튜플 연산
print('>>>>>>>>>')
print('c+ d - ', c+d)
print('c * 3 - ', c*3)

# 튜플 함수
print('>>>>>>>>>')
a = ( 5, 2, 3, 1, 4)
print('a - ',a)
print('a - ', a.index(3)) #3의 위치
print ('a - ', a.count(2)) # 2의 갯수

# 팩킹 & 언팩킹

# 팩킹 ( 하나로 묶는다 )

t = ('foo','bar','baz','qux')
print(t)


# 언팩킹1
(x1, x2, x3, x4) = t #()없어도 가능, 하지만 언팩킹을 알려주기위해 ()를 쓰는편,
print(type(x1), type(x2), type(x3), type(x4) ) #str
print(x1, x2, x3, x4)


# 팩킹&언팩킹1

t2 = 1, 2, 3 #괄호가 없어도 튜플임
t3 = 4, 3
x1, x2, x3 = t2
x4, x5, x6 = 4, 5, 6

print(t2)
print(t3)
print(x1, x2, x3)
print(x4, x5, x6)

'python_basic' 카테고리의 다른 글

[파이썬] if문  (0) 2020.11.21
[파이썬] 집합 ([]) {,}  (0) 2020.11.21
[파이썬] 딕셔너리 { : }  (0) 2020.11.21
[파이썬] 리스트 []  (0) 2020.11.13
[파이썬] 문자형 자료의 연산과 함수, 슬라이싱  (0) 2020.11.11
[파이썬] 숫자형 자료와 연산  (0) 2020.11.08
[파이썬] 변수의 선언  (0) 2020.11.08

 

package dept;

public class Dept {
	
	// VO : 데이터를 저장하는 기능만 가지는 클래스, read Only
	// DTO : 데이터틀 저장하는 기능을 가지는 클래스, Write 가능
	
	public Dept(int deptno, String dname, String loc) {
		super();
		this.deptno = deptno;
		this.dname = dname;
		this.loc = loc;
	}
	
	private int deptno;
	private String dname;
	private String loc;
	
	
	
	
	@Override
	public String toString() {
		return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]";
	}

	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
	
}

 

package dept;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionProvider {

	public static Connection getConnection() throws SQLException {
		
		Connection conn = null;

         // 2. DB 연결 localhost == 127.0.0.1
         String jdbcUrl = "jdbc:mysql://localhost:3306/project?serverTimezone=UTC";
         String user = "hyo";
         String password = "admin";
         conn = DriverManager.getConnection(jdbcUrl, user, password);

         return conn;
	}
	
}

 

 

package dept;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

// DAO : Data Access Object -> 데이터베이스 처리하는 기능만 가지는 클래스
public class DeptDao {

	private static DeptDao dao = new DeptDao();
	
	private DeptDao() {
	}
	
	public static DeptDao getInstance() {
		return dao;
	}
	
	

	// 부서 입력
	int insertDept(Dept dept, Connection conn) {

		int resultCnt = 0;

		// DB 연결 : Connection
		try {
			// Statement
			// SQL : Insert into
			String sql = "insert into dept values(?,?,?)";
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, dept.getDeptno());
			pstmt.setString(2, dept.getDname());
			pstmt.setString(3, dept.getLoc());

			// sql 실행
			resultCnt = pstmt.executeUpdate();

			pstmt.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}

		// 결과
		return resultCnt;

	}

	// 부서 정보를 수정 : Dept
	int updateDept(Dept dept, Connection conn) {

		int resultCnt = 0;

		// DB 연결 : Connection
		try {
			// Statement
			// SQL : Update
			String sql = "update dept set dname=?, loc=? where deptno=? ";
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setInt(3, dept.getDeptno());
			pstmt.setString(1, dept.getDname());
			pstmt.setString(2, dept.getLoc());

			// sql 실행
			resultCnt = pstmt.executeUpdate();

			pstmt.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}

		// 결과
		return resultCnt;

	}

	// 부서정보 삭제
	int deleteDept(int deptno, Connection conn) {

		int resultCnt = 0;

		// DB 연결 : Connection
		try {
			// Statement
			// SQL : delete
			String sql = "delete from dept where deptno=?";
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setInt(1, deptno);

			// sql 실행
			resultCnt = pstmt.executeUpdate();

			pstmt.close();

		} catch (SQLException e) {
			e.printStackTrace();
		}

		// 결과
		return resultCnt;
	}

	// 부서의 전체 리스트
	List<Dept> listDept(Connection conn) {

		List<Dept> list = new ArrayList<Dept>();

		Statement stmt = null;

		try {
			stmt = conn.createStatement();

			String sql = "select * from dept order by deptno";

			ResultSet rs = stmt.executeQuery(sql);

			while (rs.next()) {
				// Dept d = new Dept(rs.getInt(1), rs.getString(2), rs.getString(3));
				// list.add(d);
				list.add(new Dept(rs.getInt(1), rs.getString(2), rs.getString(3)));
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return list;
	}

	// 부서 하나 검색
	Dept searchDept(int deptno, Connection conn) {
		
		Dept dept = null;

		Statement stmt = null;

		try {
			stmt = conn.createStatement();

			String sql = "select * from dept where deptno="+deptno;

			ResultSet rs = stmt.executeQuery(sql);

			if(rs.next()) {
				dept = new Dept(rs.getInt(1), rs.getString(2), rs.getString(3));
			}

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return dept;

	}

}

 

 

package dept;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.Scanner;

public class DeptManager {

	// 사용자 입력
	Scanner sc = new Scanner(System.in);

	DeptDao dao = DeptDao.getInstance();

	// 부서입력 메소드 : 사용자에게 입력 받은 데이터를 DAO를 이용해서 DB 입력
	void insertDept() {

		// 부서정보를 받아서 인스턴스를 생성하고 dao.insertDept()

		System.out.println("부서정보를 입력합니다.");
		System.out.println("부서번호를 입력해주세요.");
		String deptno = sc.nextLine();
		System.out.println("부서이름을 입력해주세요.");
		String dname = sc.nextLine();
		System.out.println("지역 이름을 입력해주세요.");
		String loc = sc.nextLine();

		Dept dept = new Dept(Integer.parseInt(deptno), dname, loc);

		Connection conn = null;

		int resultCnt = 0;

		try {
			conn = ConnectionProvider.getConnection();
			
			resultCnt = dao.insertDept(dept, conn);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(resultCnt>0) {
			System.out.println("입력되었습니다.");
		} else {
			System.out.println("입력이 실패했습니다.");
		}
	}


	// 부서 정보 수정 메소드 : 사용자에게 입력 받고 데이터를 DAO를 이용해서 수정
	void editDept() {
		
		System.out.println("수정을 원하시는 부서번호를 입력해주세요.");
		String deptno = sc.nextLine();
		System.out.println("새로운 부서 이름을 입력해주세요. ");
		String dname = sc.nextLine();
		System.out.println("새로운 지역 이름을 입력해주세요.");
		String loc = sc.nextLine();
		
		Dept dept = new Dept(Integer.parseInt(deptno), dname, loc);
		

		Connection conn = null;
		
		int resultCnt = 0;

		try {
			conn = ConnectionProvider.getConnection();
			
			resultCnt = dao.updateDept(dept, conn);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(resultCnt>0) {
			System.out.println("수정되었습니다.");
		} else {
			System.out.println("수정이 실패했습니다.");
		}
		
		
	}

	
	// 부서 정보를 삭제
	void delDept() {
		
		System.out.println("삭제를 원하시는 부서번호를 입력해주세요.");
		String deptno = sc.nextLine();

		Connection conn = null;
		
		int resultCnt = 0;

		try {
			conn = ConnectionProvider.getConnection();
			
			resultCnt = dao.deleteDept(Integer.parseInt(deptno), conn);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(resultCnt>0) {
			System.out.println("삭제되었습니다.");
		} else {
			System.out.println("지우려는 정보가 존재하지 않습니다.");
		}
		
		
	}
	
	void listDept() {
		
		Connection conn = null;
				
		List<Dept> list = null;

		try {
			conn = ConnectionProvider.getConnection();
			
			list = dao.listDept(conn);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(list.isEmpty()) {
			System.out.println("저장된 정보가 없습니다.");
		} else {
			
			for(Dept d : list) {
				//System.out.println(d);
				System.out.printf("%5s", d.getDeptno()+"\t" );
				System.out.printf("%12s", d.getDname()+"\t" );
				System.out.printf("%12s", d.getLoc()+"\n" );
			}
			
			
		}
		
	}
	
	void searchDept() {
		
		System.out.println("부서를 검색합니다.");
		System.out.println("찾으시는 부서의 번호를 입력해주세요.");
		String deptno = sc.nextLine();
		

		Connection conn = null;

		Dept dept = null;

		try {
			conn = ConnectionProvider.getConnection();
			
			dept = dao.searchDept(Integer.parseInt(deptno), conn);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		if(dept!=null) {
			System.out.println(dept);
		} else {
			System.out.println("찾으시는 정보가 존재하지 않습니다.");
		}
		
		
	}


}

 

 

package dept;

import java.util.Scanner;

public class DeptMain {

	public static void main(String[] args) {

		DeptManager manager = new DeptManager();

		Scanner sc = new Scanner(System.in);

		// 데이터 베이스 드라이버 로드
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");

			while(true) {

				System.out.println("부서관리 메뉴를 입력해주세요.");
				System.out.println("1. 입력, 2. 수정, 3.삭제, 4. 전체리스트, 5. 검색, 6. 종료");
				System.out.println("__________________________________________________");

				String select = sc.nextLine();

				switch (select.charAt(0)) {
				case '1':
					manager.insertDept();
					break;
				case '2':
					manager.editDept();
					break;
				case '3':
					manager.delDept();
					break;
				case '4':
					manager.listDept();
					break;
				case '5':
					manager.searchDept();
					break;
				case '6':
					System.out.println("프로그램을 종료합니다.");
					return;
				}
			}
			

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class JDBCMysqlStatementTest {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		Connection conn = null;
		
		try {
			// 1. 드라이버 로드
	         Class.forName("com.mysql.cj.jdbc.Driver");
	         System.out.println("Driver Load!");
			
			// 2. DB 연결     localhost == 127.0.0.1
	         String jdbcUrl ="jdbc:mysql://localhost:3306/project?serverTimezone=UTC";
	         String user = "hyo";
	         String password = "admin";
	         
	         conn = DriverManager.getConnection(jdbcUrl, user, password);
	         System.out.println("데이터베이스에 접속했습니다!");
			
			// 3. statement 인스턴스생성
			
			Statement stmt = conn.createStatement();
			
			System.out.println("부서 이름을 입력해주세요.");
			String userDname= sc.nextLine();
			System.out.println("부서의 위치를 입력해주세요.");
			String userLoc = sc.nextLine();
			
			
			// 입력 : insert
			
			String sqlInsert = "insert into dept (deptno, dname, loc) values (80, '"+userDname+"','"+userLoc+"')";
				
			
			int resultCnt = stmt.executeUpdate(sqlInsert); // sql문을 실행하고 횟수반환
			if(resultCnt>0) {
				System.out.println("정상적인 입력");
			}
			
			// 4. sql 실행 : 부서리스트 출력
			String sql="select * from dept order by deptno";
			ResultSet rs = stmt.executeQuery(sql);
			
			// 5. ResultSet을 이용해서 결과 출력
			while(rs.next()) { 			// rs.next(); // boolean Type
	              int deptno = rs.getInt("deptno");
	              String dname = rs.getString("dname");
	              String loc = rs.getString(3);
	              
	              // System.out.println(deptno+"\t"+dname+"\t"+loc);
	              System.out.printf("%5s",deptno+"\t");
	              System.out.printf("%12s",dname+"\t");
	              System.out.printf("%12s",loc+"\n");

			}
			
			rs.close();
			stmt.close();
			conn.close();		
			
		} catch (ClassNotFoundException e) {
			System.out.println("Driver 로드 실패");
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
		 
		
		
		
	}

}​
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCMysqlConnectionTest {

   public static void main(String[] args) {

      Connection conn = null;
      
      try {
         // 1. 드라이버 로드
         Class.forName("com.mysql.cj.jdbc.Driver");
         System.out.println("Driver Load!");
         
         // 2. DB 연결       localhost == 127.0.0.1
         String jdbcUrl ="jdbc:mysql://localhost:3306/project?serverTimezone=UTC";
         String user = "hyo";
         String password = "admin";
         
         conn = DriverManager.getConnection(jdbcUrl, user, password);
         System.out.println("데이터베이스에 접속했습니다.");
         
         // ....
         
         
         conn.close();
         
   
      } catch (ClassNotFoundException e) {
         System.out.println("Driver 로드 실패");
         e.printStackTrace();
      } catch (SQLException e) {
         e.printStackTrace();
      }
      
      
      
      
      
   }

}
package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class JDBCMysqlPreparedTest {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		Connection conn = null;

		try {
			// 1. 드라이버 로드
			Class.forName("com.mysql.cj.jdbc.Driver");
			System.out.println("Driver Load!");

			// 2. DB 연결 localhost == 127.0.0.1
			String jdbcUrl = "jdbc:mysql://localhost:3306/project?serverTimezone=UTC";
			String user = "hyo";
			String password = "admin";

			conn = DriverManager.getConnection(jdbcUrl, user, password);
			System.out.println("데이터베이스에 접속했습니다.");

			// Statement stmt = conn.createStatement();

			System.out.println("부서 번호 입력해주세요.");
			int userDeptno = sc.nextInt();
			sc.nextLine();
			System.out.println("부서 이름을 입력해주세요.");
			String userDname = sc.nextLine();

			System.out.println("부서의 위치를 입력해주세요.");
			String userLoc = sc.nextLine();

			// PreparedStatement 인스턴스 생성
			String sqlInsert = "insert into dept values (?, ?, ?)";

			PreparedStatement pstmt = conn.prepareStatement(sqlInsert);
			pstmt.setInt(1, userDeptno);
			pstmt.setString(2, userDname);
			pstmt.setString(3, userLoc);

			int resultCnt = pstmt.executeUpdate();

			if (resultCnt > 0) {
				System.out.println("정상적으로 입력되었음.");
			} else {
				System.out.println("데이터 입력이 되지 않았음.");
			}

			// 부서 리스트 출력
			String sqlList = "select * from dept order by loc";
			pstmt = conn.prepareStatement(sqlList);
			ResultSet rs = pstmt.executeQuery();

			while (rs.next()) {
				System.out.print(rs.getInt(1) + ", ");
				System.out.print(rs.getString(2) + ", ");
				System.out.print(rs.getString(3) + "\n");
			}

			rs.close();
			pstmt.close();
			conn.close();

		} catch (ClassNotFoundException e) {
			System.out.println("Driver 로드 실패");

		} catch (SQLException e) {
			e.printStackTrace();
		}

	}

}

1) 커넥트 파일 위치 알아두기 

- 헛갈리지 않게 따로 복사해서 보관해두는 것도 좋다.

 

2) 라이브러리 불러오기  Build Path - Configure Build Path

 

3 Add Extenal Jars

 

 

4-1) Mysql

4-2) Oracle sql

 

 

1) 계정생성

create user `tester`@`localhost` identified by 'test123';
drop user tester;
create user `tester`@`localhost` identified by 'test123';
drop user `tester`@`localhost`;

 

 

2) 스키마생성

 

3) 스키마권한주기 add entry (project 아까만든거)

grant option : 권한을 주는 권한

 

 

4) 커넥션 생성

 

 

5) 테이블 생성 (tables 우클릭)

AI ) 시퀀스가 없고 대신 이게 있음 auto incremental

테이블 만들때 utf8 general_ci(디폴트)로 설정해서 알아서 되어있음

옆에 아이콘들 누르면 정보보기 / 수정 / 현재 데이터 조회할 수 있다.

 

6) 입력하기

 

SELECT `member`.`idx`,
    `member`.`userid`,
    `member`.`password`,
    `member`.`username`,
    `member`.`regdate`
FROM `project`.`member`;


INSERT INTO `project`.`member`
(`userid`,`password`,`username`)
VALUES
('king',1111,'king');


UPDATE `project`.`member`
SET
`userid` = 'hyosoen'
WHERE `idx` = 1;

DELETE FROM `project`.`member` WHERE `idx`=1;

rollback;
commit;

'DB > MYSQL' 카테고리의 다른 글

[MYSQL] CAST (형변환)  (0) 2021.03.30
[MYSQL] date_format / left join on / if문 / 시간비교  (0) 2021.03.24
[MYSQL] 설치  (0) 2020.11.19

dev.mysql.com/downloads/file/?id=499589

 

MySQL :: Begin Your Download

The world's most popular open source database

dev.mysql.com

 [excute 누름]

 

[mysql 기본포트 3306]

[admin/admin]

[add 눌러서 모자란거설치]

package Homework;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Jdbc_Homework1 {

	public static void main(String[] args) {

			// 2020.11.18
		
		Connection conn = null;
		
		try {
			
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("Oracle Driver Load !!!");

			
			String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:orcl";
			String user = "scott";
			String password = "tiger";
			
			conn = DriverManager.getConnection(jdbcUrl, user, password);
			System.out.println("데이터베이스에 접속했습니다.");
			System.out.println("");
			
			
			// 인스턴스 생성하기
			PreparedStatement pstmt = null;
			
////////////// 1) EMP 테이블에 새로운 사원 정보를 입력하는 프로그램을 작성해보자.
			// emp : empno, ename, job, mgr, hiredate, sal, comm, deptno
			String sqlQ1 = "insert into emp values (seq_emp_empno.nextval,?,?,?,?,?,?,?)";
			pstmt = conn.prepareStatement(sqlQ1);
			pstmt.setString(1,"hyoseon");
			pstmt.setString(2,"gamer");
			pstmt.setInt(3,7839);
			pstmt.setString(4,"20/11/18");
			pstmt.setInt(5,10000);
			pstmt.setInt(6,2000);
			pstmt.setInt(7,30);
			
			int resultCnt = pstmt.executeUpdate();			
			if (resultCnt>0) {
				System.out.println("");
				System.out.println("-------------------- 문제 1번) 정상입력");
				System.out.println("-------------------- 새로운 사원정보 입력 / ename : hyoseon");
				System.out.println("");
				resultCnt=0;
			}else {
				System.out.println("입력이 되지 않았음");
			}
			
			
			// 부서 리스트 출력
//////////////2) EMP 테이블의 모든 데이터를 출력하는 프로그램을 작성해보자.
			
			
			System.out.println("");
			System.out.println("-------------------- 문제 2번) 모든데이터출력");
			System.out.println("");
			String sqlList="select * from emp order by empno";
			pstmt=conn.prepareStatement(sqlList);
			ResultSet rs = pstmt.executeQuery();
			
			while(rs.next()) {
				System.out.print(rs.getInt(1)+"\t");
				System.out.print(rs.getString(2)+"\t");
				System.out.print(rs.getString(3)+"\t");
				System.out.print(rs.getInt(4)+"\t");
				System.out.print(rs.getString(5)+"\t");
				System.out.print(rs.getInt(6)+"\t");
				System.out.print(rs.getInt(7)+"\t");
				System.out.print(rs.getInt(8)+"\t");
				System.out.println("");
				
			}
////////////// 3) EMP 테이블에 서 “SCOTT” 사원의 급여(sal) 정보를 1000으로 바꾸는 프로그램을 작성해보자.
			String sqlQ3 = "update emp set sal=1000 where ename='SCOTT'";
			Statement stmt = conn.createStatement();
			resultCnt = stmt.executeUpdate(sqlQ3);
			if (resultCnt>0) {
				System.out.println("");
				System.out.println("-------------------- 문제 3번) 정상입력");
				System.out.println("-------------------- 스캇 월급 1000으로 수정!");
				System.out.println("");
			}else {
				System.out.println("입력이 되지 않았음");
			}
////////////// 4)EMP 테이블에 서 “SCOTT” 이름으로 검색한 결과를 출력하는 프로그램을 작성해보자.
			System.out.println("");
			System.out.println("-------------------- 문제 4번) Scott 검색 데이터 출력");
			
			String sqlQ4 = "select * from emp where ename='SCOTT'";
			
			rs = stmt.executeQuery(sqlQ4);
			if(!rs.next()) {
				System.out.println("검색결과 X");
			}else {
				do {
					System.out.print(rs.getInt(1)+"\t");
					System.out.print(rs.getString(2)+"\t");
					System.out.print(rs.getString(3)+"\t");
					System.out.print(rs.getInt(4)+"\t");
					System.out.print(rs.getString(5)+"\t");
					System.out.print(rs.getInt(6)+"\t");
					System.out.print(rs.getInt(7)+"\t");
					System.out.print(rs.getInt(8)+"\t");
					System.out.println("");
				}while(rs.next());
				}
			
			
					

//////////////5.모든 사원정보를 출력하되 부서정보를 함께 출력하는 프로그램을 작성해보자.
			System.out.println("");
			System.out.println("-------------------- 문제 5번) 사원정보 + 부서정보 함께 출력");
			System.out.println("");
			String sqlList2="select * from emp, dept where emp.deptno=dept.deptno";
			pstmt=conn.prepareStatement(sqlList2);
			rs = pstmt.executeQuery();
			
			while(rs.next()) {
				System.out.print(rs.getInt(1)+"\t");
				System.out.print(rs.getString(2)+"\t");
				System.out.print(rs.getString(3)+"\t");
				System.out.print(rs.getInt(4)+"\t");
				System.out.print(rs.getString(5)+"\t");
				System.out.print(rs.getInt(6)+"\t");
				System.out.print(rs.getInt(7)+"\t");
				System.out.print(rs.getInt(8)+"\t");
				System.out.print(rs.getInt(9)+"\t");
				System.out.print(rs.getString(10)+"\t");
				System.out.print(rs.getString(11)+"\t");
				System.out.println("");
				
			}
			
			
		} catch (ClassNotFoundException e) {
	         System.out.println("Driver 로드 실패");
	      } catch (SQLException e) {
	         e.printStackTrace();
	      }
		
		
	}

}

STATEMENT

 

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class JDBCOracleStatementTest {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		Connection conn = null;
		
		try {
			// 1. 드라이버 로드
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("Oracle Driver Load !!!");
			
			// 2. DB 연결     localhost == 127.0.0.1
			String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:orcl";
			String user = "scott";
			String password = "tiger";
			
			conn = DriverManager.getConnection(jdbcUrl, user, password);
			System.out.println("데이터베이스에 접속했습니다.");
			
			// 3. statement 인스턴스생성
			
			Statement stmt = conn.createStatement();
			
			System.out.println("부서 이름을 입력해주세요.");
			String userDname= sc.nextLine();
			System.out.println("부서의 위치를 입력해주세요.");
			String userLoc = sc.nextLine();
			
			
			// 입력 : insert
			
			String sqlInsert = "insert into dept values (SEQ_DEPT_DEPTNO.NEXTVAL,'"+userDname+"','"+userLoc+"')";
				
			
			int resultCnt = stmt.executeUpdate(sqlInsert); // sql문을 실행하고 횟수반환
			if(resultCnt>0) {
				System.out.println("정상적인 입력");
			}
			
			// 4. sql 실행 : 부서리스트 출력
			String sql="select * from dept order by deptno";
			ResultSet rs = stmt.executeQuery(sql);
			
			// 5. ResultSet을 이용해서 결과 출력
			while(rs.next()) { 			// rs.next(); // boolean Type
				int deptno = rs.getInt("deptno");
				String dname = rs.getString("dname");
				String loc = rs.getString(3);
				System.out.println(deptno+", "+ dname+ ", "+loc);
				
			}
			
			rs.close();
			stmt.close();
			conn.close();		
			
		} catch (ClassNotFoundException e) {
			System.out.println("Driver 로드 실패");
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
		 
		
		
		
	}

}

 

 

PREPAREDSTATEMENT

 

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class JDBCOraclePreparedTest {

	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
		Connection conn = null;
		
		try {
			// 1. 드라이버 로드
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("Oracle Driver Load !!!");
			
			// 2. DB 연결     localhost == 127.0.0.1
			String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:orcl";
			String user = "scott";
			String password = "tiger";
			
			conn = DriverManager.getConnection(jdbcUrl, user, password);
			System.out.println("데이터베이스에 접속했습니다.");
			
		
			//Statement stmt = conn.createStatement();
			
			System.out.println("부서 이름을 입력해주세요.");
			String userDname= sc.nextLine();
			System.out.println("부서의 위치를 입력해주세요.");
			String userLoc = sc.nextLine();
			
			
			// PreparedStatement 인스턴스 생성
			String sqlInsert = "insert into dept values (Seq_dept_deptno.nextval, ?, ?)";
			
			PreparedStatement pstmt = conn.prepareStatement(sqlInsert);
			pstmt.setString(1, userDname);
			pstmt.setString(2, userLoc);
			
			int resultCnt = pstmt.executeUpdate();
			
			if(resultCnt>0) {
				System.out.println("정상적으로 입력되었음.");
			}else {
				System.out.println("데이터 입력이 되지 않았음.");
			}
			
			// 부서 리스트 출력
			String sqlList ="select * from dept order by loc";
			pstmt = conn.prepareStatement(sqlList);
			ResultSet rs = pstmt.executeQuery();
			
			while(rs.next()) {
				System.out.print(rs.getInt(1)+", ");
				System.out.print(rs.getString(2)+", ");
				System.out.print(rs.getString(3)+"\n");
			}
			
			rs.close();
			pstmt.close();
			conn.close();
			
		} catch (ClassNotFoundException e) {
			System.out.println("Driver 로드 실패");
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		
		 
		
		
		
	}

}

 

 

PREPAREDSTATEMENT 2) 검색

 

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class JDBCOraclePreparedTest2 {

   public static void main(String[] args) {

      Scanner sc = new Scanner(System.in);
      
      Connection conn = null;
      
      try {
         // 1. 드라이버 로드
         Class.forName("oracle.jdbc.driver.OracleDriver");
         System.out.println("Oracle Driver Load!");
         
         // 2. DB 연결       localhost == 127.0.0.1
         String jdbcUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
         String user = "scott";
         String password = "tiger";
         
         conn = DriverManager.getConnection(jdbcUrl, user, password);
         System.out.println("데이터베이스에 접속했습니다.");
         
         
         // 3. statement 인스턴스생성
         PreparedStatement pstmt = null;

         
         System.out.println("검색하고 싶은 부서 이름을 입력하세요.");
         String searchDname = sc.nextLine();
         
         // 부서 정보 리스트 
         String sqlSelect = "select * from dept where dname=? order by loc";
         
         pstmt = conn.prepareStatement(sqlSelect);
         pstmt.setString(1, searchDname);
         
         ResultSet rs = pstmt.executeQuery();
         
         if(!rs.next()) {
            System.out.println("검색 결과 X");
         } else {
            do  {
               System.out.print(rs.getInt(1)+"\t");
               System.out.print(rs.getNString(2)+"\t");
               System.out.print(rs.getNString(3)+"\n");
            } while(rs.next());
         }
         
         
         rs.close();
         pstmt.close();
         conn.close();
         
         
         
      } catch (ClassNotFoundException e) {
         System.out.println("Driver 로드 실패");
      } catch (SQLException e) {
         e.printStackTrace();
      }
      
      
      
      
      
   }

}

+ Recent posts