데이터베이스 DB/MySQL
-
[MySQL/4일차] JDBC - PreparedStatement데이터베이스 DB/MySQL 2023. 1. 27. 13:01
데이터 입력 파라미터로 int값을 전달 - setInt() public class JDBC_Ex1 { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/scottDB?useSSL=false"; String user = "scott"; String pw = "tiger"; try { // Driver Manager -> Connection -> Statement -> (ResultSet) Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, pw); String sql = "SELECT..
-
[MySQL/4일차] JDBC - Driver Manager, Connection, Statement, ResultSet데이터베이스 DB/MySQL 2023. 1. 27. 10:14
★ 꼭 기억할 순서 Driver Manager -> Connection -> Statement -> (ResultSet) Driver Manager : 자바 어플리케이션을 JDBC 드라이버에 연결. Connection 객체 반환. 서버주소 지정. Connection : Statement 객체 생성. Statement : SQL문 실행 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM book WHERE bookid = 300"); Prepared Statement: 필요한 파라미터들을 동적으로 설정 PreparedStatement pstmt = conn.preparedStatement("INSER..
-
[MySQL/3일차] 뷰데이터베이스 DB/MySQL 2023. 1. 26. 11:48
뷰 가짜 테이블. 자주 사용되는 조회문은 뷰로 만들어서 활용하는 것이 간결하다. 뷰의 생성 CREATE (OR REPLACE) VIEW 뷰이름 [ (열이름 [n]) ] AS (저장할 select문) 예시 -- 20번 부서의 사원 정보를 가져오는 뷰 생성 create view vw_emp20 as (select empno, ename, job, deptno from emp where deptno=20); -- 생성한 뷰 활용 select * from vw_emp20; -- book 테이블에서 '축구'라는 문구가 포함된 자료만 조회하는 뷰 create view vw_book as (select * from book where bookname like '%축구%'); select * from vw_book; ..
-
[MySQL/3일차] 키, 제약조건데이터베이스 DB/MySQL 2023. 1. 26. 11:11
기본키 -- 기본키 지정 create table newcustomer ( custid int primary key, name varchar(40), address varchar(40), phone varchar(30) ); 복합키 가격에는 default값인 10000과, 2000보다 커야 한다는 제약조건 지정 -- 복합키 지정 create table newbook ( bookname varchar(20) not null, publisher varchar(20) unique, price integer default 10000 check(price>2000), primary key(bookname, publisher) ); -- price에는 디폴드값인 10000이 자동으로 들어감 insert into ne..
-
[MySQL/2일차] DDL, DML(select 제외)데이터베이스 DB/MySQL 2023. 1. 25. 16:03
CREATE 테이블 생성 create table emp_ddl ( empno int, ename varchar(10), job varchar(10), mgr int, hiredate datetime, sal double, comm double, deptno int ); 만든 테이블 확인 desc emp_ddl; 테이블 복사하여 생성 -- dept 테이블을 복사하여 dept_temp 테이블 생성 -- create table dept_temp as select * from dept; 테이블의 구조만 복사 -- 테이블의 구조를 복사하여 새 테이블 만들기 -- 데이터는 복사 안됨 CREATE TABLE emp_temp as select * from emp where 11; insert into emp_temp ..
-
[MySQL/2일차] 서브쿼리데이터베이스 DB/MySQL 2023. 1. 25. 14:10
서브쿼리 하나의 sql문 안에 다른 sql문이 중첩된 형태 -- 서브쿼리 -- -- JONES 보다 급여가 높은 사원 조회 -- select * from emp where sal > (select sal from emp where ename='JONES'); 단일행 서브쿼리 실행 결과가 단 하나의 행인 서브쿼리 -- blake보다 입사가 빠른 회원 목록 -- select * from emp where hiredate < (select hiredate from emp where ename='BLAKE'); /* 20번 부서에 속한 사원 중 전체 사원의 평균 급여보다 높은 급여를 받는 사원 정보와 소속 부서 정보 함께 조회하기 */ select e.empno, e.ename, e.job, e.sal, d.d..
-
[MySQL/2일차] 외부 조인, 상호 조인데이터베이스 DB/MySQL 2023. 1. 25. 10:01
왼쪽 외부 조인 LEFT OUT JOIN 오른쪽 테이블을 null로 채움 ex. 상사의 정보를 외부조인 했을 때, 상사가 없는 최상위 직원의 정보도 확인 가능 -- 왼쪽 외부조인 : 오른쪽 테이블에 null을 채움 (상사가 없는 직원의 상사 정보가 null)-- select e.empno, e.ename, e.mgr, m.empno as 'MGR', m.ename as 'MGR_NAME' from emp e left outer join emp m on e.mgr = m.empno order by e.empno; 오른쪽 외부 조인 RIGHT OUT JOIN 왼쪽 테이블을 null로 채움 ex. 상사의 정보를 외부조인 했을 때, 부하직원이 없는 말단직원의 정보도 확인 가능 -- 오른쪽 외부조인 : 왼쪽 테이..
-
[MySQL/1일차] select, 연산자, 함수, 조인데이터베이스 DB/MySQL 2023. 1. 19. 17:53
-- 비교 연산자 -- select * from emp where sal >= 3000; -- 비교 연산자 (char) -- select * from emp where hiredate = 2000 order by deptno, job; select deptno, job, avg(sal) from emp where sal = 2000 order by deptno, job; -- length -- select ename, length(ename) from emp where length(ename)>=5; -- substr -- select job, substr(job, 1, 2), substr(job, 5) from emp; select job, substr(job, -length(job)), substr(..