CS/database 9

MySQL SYSDATE(), now()의 차이점

* SYSDATE() 함수가 실행될 때의 시간을 리턴한다. * NOW() 현재의 날짜와 시간을 리턴한다. * 추가적인 설명 SYSDATE() : 트랜잭션이나 쿼리 단위에 관계 없이, 그 함수가 실행되는 시점의 시각을 리턴한다. 따라서 위의 예시를 보면, 실행한 시각을 출력하는 것을 볼 수 있다. NOW() : 하나의 트랜잭션으로, now() 함수가 실행된 첫 시각을 리턴한다. 따라서 위의 예시를 보면, 실행한 첫 시각만을 출력하는 것을 볼 수 있다. 출처 - https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functions 12..

CS/database 2022.03.20

CHAR VS VARCHAR

* CHARACTER(s): CHAR 고정 길이 문자열 정보(Oracle, SQL Server 모두 CHAR로 표현한다. 이는 CHARACTER(s)의 줄임말이다 s는 기본 길이 1바이트, 최대 길이 Oracle 2,000바이트, SQL Server 8,000바이트를 가진다. s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당된 변수 값의 길이가 s보다 작은 경우에는 그 차이 길이만큼 공간으로 채워진다. 예) char(1000)인데 저장된 변수의 길이가 10이라면 나머지 990은 공백공간. -> 비효율적 * VARCHAR(s) CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2로 표현, SQL Server는 VARCHAR로 표헌한다.) s는 최소 길이 1..

CS/database 2021.07.20

MySQL 이모지(Emoji) 문자열 입력

* Emoji? 1997년 일본 휴대폰에서 시작된 이모지는 여러 모바일 운영체제에 추가된 후 2010년대에 전세계적으로 인기를 얻기 시작해, 요즘에도 선풍적인 인기를 끌고 있다. 이모지와 이모티콘은 다른 것이며 이모티콘은 텍스트의 형태이고 이모지는 픽토그램, 인코딩된 문자로 표현될 수 있는 그림이라는 차이점도 있다. * Character Set 바꿔주기 어쨌든 그냥 이모지가 포함된 글을 저장하려고 하면 error가 뜨거나, 이모지 부분이 ?를 뜨는 등 에러가 발생하게 된다. 이 에러가 발생하는 이유는 mysql 세팅이 utf-8로 되어있는 경우에 발생하는데, utf-8은 한 문자를 나타내기 위해서 1바이트에서 4바이트까지 사용한다. 그런데 MySQL의 경우 utf-8을 3바이트 가변 인자로 구현하고 있다..

CS/database 2021.05.18

Subquery

* Subquery? 서브쿼리(Subquery)란 다른 쿼리 내부에 포함되어 있는 select문을 의미한다. 서브 쿼리를 포함하고 있는 쿼리를 외부 쿼리 또는 메인 쿼리라고 부르며 서브쿼리는 내부 쿼리라고도 부른다. 서브쿼리는 비교 연산자의 오른쪽에 기술해야 하며 반드시 괄호로 감싸져 있어야 한다. 서브쿼리는 메인쿼리가 실행되기 전에 한번씩 실행된다. 서브쿼리에서 실행된 결과는 메인 쿼리에 전달되어 최종적인 결과를 출력한다. * 서브쿼리의 종류 중첩서브쿼리(nested subquery): where 문에 작성하는 서브 쿼리 1. 단일 행 2. 복수(다중) 행 3. 다중 컬럼 인라인 뷰(inline view): from 문에 작성하는 서브 쿼리 스칼라 서브 쿼리(scalar subquery): select..

CS/database 2021.04.07

Join

* Join? 하나의 sql 명령문에 의해 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능이다. 두개 이상의 테이블을 '결합'한다는 의미이다. * Inner Join 가장 일반적인 join 종류이며 교집합이다. 동등 조인(Equi- join)이라고도 하며 n개의 테이블 조인 시 n-1개의 조인 조건이 필요하다. 연결고리가 되는 공통 칼럼은 조인 애트리뷰트라고 불리는데 이 조인 애트리뷰트는 참조 무결성 제약조건으로 정의된다. * Full Join 양쪽 테이블을 기준으로 join 조건에 일치하지 않는 데이터까지 출력한다. 그러니까 left outer join과 right outer join을 동시에 실행한 결과를 출력한다. mysql은 지원하지 않으며 oracle만 지원한다. mysql에서 ful..

CS/database 2021.04.06

JDBC Programming 개발 순서

1. JDBC Driver Load: 데이터베이스 규격, 종류 오라클/mysql인지 이런거 알려주기 2. Connection 획득 (DBMS와의 연결 채널을 수립한다. 네트워크 통신으로 치면 소켓 연결임) 3. SQL 실행을 준비한다. (Statment, PreparedStatement 구문을 준비한다.) 4. Statement 구문을 투척한다. (실행하는 단계): DML, Query 5. 필요하다면 결과물을 수집한다.:ResultSet 6. DBMS와의 연결 끊기 EX) INSERT 예시 Connection conn = null; Statement stmt = null; ResultSet rs= null; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn ..

CS/database 2021.03.12

JDBC(Java DataBase Connectivity)

* JDBC (Java DataBase Connectivity)? 자바 프로그래밍 언어로 만들어진 클래스와 인터페이스로 이루어진 API이다. SQL문을 실행할 수 있는 함수 호출 인터페이스이다. DBMS 종류에 독립적인 자바 프로그래밍이 가능하다. 데이터베이스가 달라지더라도 동일한 API를 사용하게 해준다. (드라이버 및 URL만 수정하면 가능하다.) 자바의 특성인 플랫폼 독립적 특성과 DBMS 에 독립적이라는 특성을 동시에 가진다. * JDBC 기능 데이터베이스에 연결 설정한다. SQL 문장을 DBMS에 전송한다. SQL 문장을 전송한 뒤 결과를 처리할 수 있게 해준다. * JDBC 인터페이스 - Database를 만드는 업체에게 제공되는 인터페이스 - 업체에게 제공되는 인터페이스를 각각의 DBMS업체..

CS/database 2021.03.12

SQL 언어

* SQL? SQL (Structured Query Lanuage) - 데이터베이스에 있는 정보를 사용할 수 있도록 지원하는 언어 - 대소문자는 구별하지 않지만 데이터의 대소문자는 구분한다. * SQL 언어의 정의 - 관계형 DB를 조작하기 위한 표준 언어 - 관계 대수와 관계 해석의 수학적이 이론을 기초로 개발 - DB의 구조를 정의하거나 DB에 저장된 데이터를 검색하기 위한 목적 * SQL 언어의 특징 - 비절차적 언어 기존 프로그래밍 언어: 레코드 단위로 처리 조건에 따라 데이터에 대한 접근 경로가 달라진다. SQL 언어: 조건을 만족하는 데이터를 집합 단위로 한꺼번에 처리함 - 대화식으로 사용되거나 응용 프로그램에 삽입하여 사용한다. * SQL 명령문의 종류 데이터 언어: 데이터베이스를 정의하고 ..

CS/database 2021.03.11

데이터베이스 기초-1

데이터베이스는어느 한 조직의 여러 응용 시스템들이 공용할 수 있도록 통합, 저장된 운영 데이터의 집합이다. 1, 통합 데이터: 데이터베이스에서는 원칙적으로 똑같은 데이터가 중복 x 2. 저장 데이터: 저장되어있음 3: 운영 데이터: 어느 조직의 고유한 기능을 수행하기 위해 반드시 유지해야 할 데이터 4: 공용 데이터: 조직에 있는 여러 응용 시스템들이 공동으로 소유하고 유지하며 이용하는 데이터 데이터 베이스의 4가지 특성 1) 실시간 접근성 2) 계속적인 변화 3) 동시 공용 4) 내용에 의한 참조 데이터(data)는 현실 세계로부터 단순한 관찰이나 측정을 통해서 수집된 사실(fact)이나 값(value)을 말함 정보(information)란 어떤 상황에 대한 적절한 결정을 할 수 있게 하는 지식으로서 ..

CS/database 2020.07.23