본문 바로가기

데이터베이스

(16)
[MySQL] DML - INSERT, SELECT, UPDATE, DELETE INSERT 테이블에 데이터 삽입 insert into 테이블명 (필드명1, 필드명2, ...) values (필드값1, 필드값2, ...); SELECT 전체 필드와 데이터 검색 select * from 테이블명; 특정 필드의 전체 레코드 검색 select 필드명1, 필드명2, ... from 테이블명; 특정 조건에 맞는 레코드 검색 select 필드명1, 필드명2, ... from 테이블명 where 조건식; 특정 문자열이 포함된 레코드 검색 select 필드명1, 필드명2, ... from 테이블명 where 검색필드 like 문자열_수식; 레코드 정렬 select 필드명1, 필드명2, ... from 테이블명 order by 필드명; UPDATE 레코드 수정 update 테이블명 set 필드명=필..
[MySQL] DDL - CREATE, ALTER, DROP TABLE Create table 테이블 생성 create table 테이블명 ( 필드명1 데이터형, 필드명2 데이터형, ... primary key(필드명) ); Alter table 새로운 필드 추가 alter table 테이블명 add 새로운_필드명 필드_데이터형 [first 또는 after 필드명]; 필드 삭제 alter table 테이블명 drop 삭제할_필드명1, 삭제할_필드명2; 필드 수정 alter table 테이블명 change 수정할_필드명 새로운_필드명 필드_데이터형; 필드 데이터형 수정 alter table 테이블명 modify 필드명 수정할_데이터형; 테이블 이름 변경 alter table 수정할_테이블명 rename 새로운_테이블명; Drop table 테이블 삭제 drop table 테이..
VARCHAR와 CHAR의 차이점 데이터 유형이란? 칼럼을 정의할 때 선언한 데이터 유형은 그 칼럼이 받아들일 수 있는 자료의 유형을 규정한다. 지정한 크기(size)도 중요한 기능을 제공한다. 선언한 유형이 아니거나 지정한 크기를 넘어선 자료가 입력되는 상황에 에러를 발생시킨다. CHARACTER(s) VARCHAR(s) 고정길이문자열 가변길이문자열 표현 CHAR VARCHAR / VARCHAR2 s 1~2000(오라클), ~8000(SQL 서버)byte -> 실제 데이터의 크기 1~4000(오라클), ~8000(SQL 서버)byte -> 데이터유형 크기의 최댓값 공백도 하나의 문자로 취급 비교 연산자 모두 CHAR 타입일 경우 서로 다른 문자가 나올 때까지 비교 길이가 다르면 작은쪽에 스페이스를 추가하여 길이를 같게 한 후 비교 달라..
[Oracle] 트랜잭션 Transaction, TCL 트랜잭션이란? 트랜잭션은 데이터베이스의 논리적 연산 단위이다. 하나의 트랜잭션에는 하나 이상의 SQL 문장이 포함된다. 트랜잭션은 의미적으로 분할할 수 없는 최소의 단위이다. 트랜잭션은 ALL OR NOTHING의 개념이다. e.g. 계좌이체라는 작업 단위는 두 개의 스텝이 모두 성공적으로 완료되어 을 때 종료된다. 둘 중 하나라도 실패할 경우 계좌이체는 원래의 금액을 유지하고 있어야만 한다. 트랜잭션 특성 ⭐️원자성 ⭐️ (atomicity) 트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니 면 전혀 실행되지 않은 상태로 남아 있어야 한다. (all or nothing) 원자성을 충족하기 위해 데이터베이스는 잠금(LOCK) 기능을 제공하고 있는데, 잠금은 트랜잭션이 수행하는 동안 특정 데이터..
[macOS] SQL Developer - The Network Adapter could not establish the connection 에러 해결 The Network Adapter could not establish the connection 이라는 메세지가 뜰 경우 Docker의 컨테이너 목록을 조회하면 다음과 같이 아무것도 뜨지 않을 것이다. $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 따라서 다시 이미지를 pull 해주면 된다. $ docker run -d -p 더보기 $ docker run -d -p 49161:1521 deepdiver/docker-oracle-xe-11g 저는 deepdiver님의 이미지를 사용하였습니다 :) 그리고 다시 Docker의 컨테이너 목록을 조회하면 다음과 같이 이미지가 있는 것을 확인할 수 있다. $ docker ps CONTAINER..
[Oracle] DML - SELECT, INSERT, UPDATE, DELETE INSERT 입력하기 테이블에 데이터는 한 번에 한 건만 입력된다. 방법은 두 가지 유형이 있다. 유형 1. INSERT INTO (COLUM_LIST) VALUES (COLUMN_LIST에 넣을 VALUE_LIST); SQL> INSERT INTO PLAYER 2 (PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO) 3 VALUES ('2002007', '박지성','K07','MF',178,73,7); 칼럼의 데이터 유형이 문자 유형일 경우 작은따옴표를 붙인다. 정의하지 않은 칼럼은 Default로 NULL 값이 입력된다. Primary Key나 Not Null로 지정된 칼럼은 NULL이 허용되지 않는다. 유형 2. INSERT IN..
[Oracle] DDL - CREATE, ALTER, DROP, RENAME, TRUNCATE CREATE TABLE 테이블 생성 CREATE TABLE 테이블명 ( 칼럼명1 DATATYPE [DEFAULT 형식], 칼럼명2 DATATYPE [DEFAULT 형식], 칼럼명3 DATATYPE [DEFAULT 형식] ); SQL> CREATE TABLE PLAYER( 2 PLAYER_ID CHAR(7) NOT NULL, 3 PLAYER_NAME VARCHAR2(20) NOT NULL, 4 TEAM_ID CHAR(3) NOT NULL, 5 BIRTH_DATE DATE, 6 CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID) 7 ); Table created. 생성된 테이블 구조 확인 DESCRIBE 테이블명; 또는 DESC 테이블명; SQL> DESCRIBE PLAYER; ..
[Oracle] the password will expire within 7 days 에러 해결 오라클을 접속하였는데 다음과 같은 경고 메세지가 떴을 것이다. 패스워드가 만료된다고 하는데 이는 간단한 쿼리문으로 쉽게 해결이 가능하다. SQL Developer 1. sys 계정 LIMIT 검색 SELECT RESOURCE_NAME, LIMIT FROM DBA_PROFILES WHERE PROFILE = 'DEFAULT' AND RESOURCE_TYPE = 'PASSWORD'; 다음과 같이 PASSWORD_LIFE_TIME의 LIMIT이 180으로 되어 있을 것이다. 이것을 UNLIMITED로 바꿔주면 된다. 2. UNLIMITED로 바꾸기 ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; 터미널 SQL> CONN SYS/ORACLE AS SYSDB..