본문 바로가기

Database/MySQL

(16)
[MySQL] 데이터 모델링 ※ 테이블 생성 시 주의사항 테이블 이름과 컬럼은 항상 알파벳 문자로 시작해야 한다. 테이블의 컬럼 이름은 30자 미만이며 예약어와 같은 이름을 사용할 수 없다. 오라클 테이블 한 계정안에서 테이블 이름은 다른 테이블 이름과 달리 유사해야 한다. 한 테이블 안에서 컬럼 이름은 같을 수 없다. (다른 테이블에서는 가능) file - new model - add Diagram - Place a new Table 더블클릭하면 하단에 테이블 작성란이 뜬다. 밑줄은 외래키! database - forward Engineer - stored connection db 선택 - store in vault... 비번 입력 - next 이 화면 나올 때까지 next하고 그 다음 next - close까지 하면 끝 테이블 ..
[MySQL] DML(SELECT, INSERT,UPDATE,DELETE, 트랜잭션) INSERT INTO INSERT INTO 테이블명 (column1, column2,...) * VALUES (데이터, '데이터',...); 데이터 삽입 확인 ※ 테이블명 뒤 컬럼을 생략하는 경우 VALUES값은 모두 작성해야 한다. insert into emp values(7777, 'PARK', '총무부', 7369, now(), 4000, 100, 40); db가 연동된 이클립스에도 적용된 것을 볼 수 있다. -- 사원번호, 이름만 있을 때 insert into emp(empno, ename) values(8888, 'HONG'); -- 개인키(empno)는 NULL값을 허용하지 않으므로 empno 없이는 레코드를 생성할 수 없다. insert into emp(ename, sal) values('K..
[MySQL] Eclipse DB연동(InsertTest, UpdateTest) [InsertTest] 사원번호, 이름, 급여, 입사일 레코드를 추가하라. import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; public class InsertTest { Connection con = null; PreparedStatement pstmt = null; public InsertTest() { } public void empInsert() { // 사원번호, 이름, 급여, 입사일 레코드 추가 try { // 1. 드라이브 로딩 Class.forName("com.mysql.cj.jdbc.Driver"); // 2. DB 연결 con = DriverManager.getConne..
[MySQL] 집계 함수 GROUP BY, HAVING절 demo 데이터베이스를 이용한 쿼리 연습 cmd 창에 아래 명령어 순서대로 입력 cd\ cd\ demo 파일 경로 mysql -u root -p -- mysql 비밀번호 입력 -- 데이터베이스 생성 create database demo; -- demo 데이터베이스 사용 use demo; -- sql 등록 source mysql_demo.sql show tables; (테이블 출력) [emp 테이블] [dept 테이블] [salgrade 테이블] GROUP BY : 그룹을 묶어줌, 주로 집계함수와 함께 쓰여 데이터를 그룹화해줌 [집계함수] AVG() : 평균 MIN() : 최솟값 MAX() : 최댓값 COUNT() : 행의 개수 COUNT(DISTINCT) : 중복 제외 행의 개수 STDEV() : 표준편..
[MySQL] 내장 함수(숫자, 날짜 및 시간) 숫자 함수 ABS( ) : 절댓값 계산 select abs(-100); -- 100 CEILING ( ) (= CEIL( )) : 올림 FLOOR( ) : 내림 ROUND( ) : 반올림 select ceil(10.1), ceil(-10.1), floor(10.9), floor(-10.9); -- 소수 첫재짜리에서 반올림, 일의자리에서 반올림 select round(192.123,1), round(192.123,-1); MOD(몫, 나누는 수) : 나머지 반환 select mod(10,3); -- 1 RAND() : 0이상 1미만의 실수 반환 select rand(); -- 0이상 10미만 난수 반환 select ceil(rand()*100); -- 0 ~ 100 사이의 난수 반환 날짜 및 시간 함수 A..
[MySQL] 내장 함수(제어 흐름, 문자열) 제어 흐름 함수 IFNULL(수식1, 수식2) : 수식1이 NULL이 아니면 수식1 반환, NULL 이면 수식2 반환 NULLIF(수식1, 수식2) : 수식1과 수식2가 같으면 NULL 반환, 다르면 수식1 반환 문자열 함수 ASCII(아스키 코드), CHAR(숫자) select ascii('A'), char(65); -- 65, A 출력 BIT_LENGTH( ), CHAR_LENGTH( ), LENGTH( ) select bit_length('abc'), bit_length('가나다'); select char_length('abc'), char_length('가나다'); select length('abc'), length('가나다'); BIT_LENGTH는 bit 크기를 반환한다. 'abc'는 3byt..
[MySQL] Eclipse DB연동(SelectTest) demo db를 이클립스와 연동시키기! 이클립스 프로젝트 생성 (JavaSE-1.8로 설정) 클래스 생성 프로젝트에서 오른쪽 마우스 - Build Path - Configure Build Path - Add External JARs 클릭 jar 선택 후 Apply and Close 이렇게 되면 성공 DB 연동 import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class SelectTest { public SelectTest() { } public void start() { /..
[MySQL] SELECT, USE, SHOW, DESCRIBE + 과제 ※ MySQL은 데이터, 쿼리문 모두 대소문자 구분을 하지 않는다. USE USE 데이터베이스 명; : 이 데이터베이스를 사용하겠다고 명시, 앞으로 해당 데이터베이스에서 쿼리를 실행하겠다는 뜻 SHOW SHOW TABLE STATUS; : 테이블 정보 조회(데이터 타입, 데이터 길이 등 세부 정보) SHOW tables; : 테이블의 이름만 조회 DESCRIBE DESCRIBE 테이블 명; or DESC 테이블 명; SELECT SELECT 필드 이름 FROM 테이블 이름 WHERE 조건식; 기본적으로는 위와 같이 사용되고 추가적으로 ORDER BY, GROUP BY, HAVING 절 등이 사용된다 BETWEEN ... AND : 연속적인 값을 가지는 경우 범위 지정 // 키가 180~183인 사람 조회..