Database 22

MySQL) 외래키를 걸었는데, 제약조건이 따라온 경우 문제해결.

User 테이블에 userid 컬럼이 있고, 이 컬럼에는 not null과 unique 제약조건을 걸었다. Notice 테이블에 userid컬럼이 있고, User테이블의 userid와 외래키를 걸었다. 그런데.... 외래키를 걸었더니 User테이블의 userid제약조건인 nn과 unique를 그대로 들고와서 걸렸다. 게시판에는 한 유저가 많은 글을 쓸 수 있어야 하는데 unique가 걸려서 한 유저당, 하나의 글밖에 못쓰는 상황이 된 것이다. 따라서 위의 사진에서 unique에 체크 표시를 풀고 Apply버튼을 눌렀지만 승인되지 않았다.. 구글링을 해도 Foreign key와 unique관계를 뚜렸하게 설명하는 글을 찾기 힘들었다. MySQL을 배운지 얼마되지 않아서 봐도 이해를 못한것일 수도..ㅎㅎ 외..

Database/MySQL 2022.03.24

MySQL) MySQL varchar 한글 글자 수? 바이트? 알아보기

MySQL 버전에 따라 varchar 데이터 타입을 지정할때 괄호()안에 제한을 바이트 단위로 계산해야하는지, 한글 한글자로 계산해야되는지 헷갈렸다. 구글링 해보니 MySQL 4.1버전부터 byte단위가 아닌 character 단위로 바뀌었다는 말이 있는데 혹시 몰라 확실히 하기 위해 직접 테이블을 생성해서 확인해봤다. 나는 현재 8.0버전을 사용중이다! 임시 테이블 생성하기 한글 확인만을 위한거니 name컬럼 하나만ㅎㅎ.. create table temp ( name varchar(3) null ); 값 넣어보기 insert into temp(name) values('가나다'); insert into temp(name) values('가나다라'); varchar(3) 으로 지정했는데 '가나다'는 잘 들..

Database/MySQL 2022.03.24

Oracle DB) DDL - ALTER 테이블 수정(add, rename, modify, drop)

기본 명령어 ALTER TABLE 테이블명 ADD, MODIFY, DROP 1. ADD 추가 가능한 것: 컬럼, 제약조건 1) 컬럼 추가 ALTER TABLE emp01 ADD (job_id varchar2(10)); 2) 제약조건 추가 alter table 테이블명 add constraint 제약조건명 제약조건유형(컬럼명); -- 제약조건 추가(table level 문법) alter table emp01 add constraint emp_mgr_fk foreign key (mgr_id) references emp2(emp_id); alter table emp01 add constraint emp_id_pk primary key(emp_id); 2. MODIFY 수정 가능한 것: 데이터타입, defaul..

Database/Oracle 2022.03.22

Oracle DB) 제약 조건 확인하기(SQLPlus, Developer)

제약조건 확인 테이블을 생성 후 desc 명령으로는 not null외의 제약조건은 확인할 수 없다. null외의 제약조건을 확인하려면 user_constrange 라는 DB사전을 사용해야한다. select constraint_name, constraint_type, search_condition, r_constraint_name from user_constraints where table_name = '테이블명(대문자로)'; 근데, 제약조건을 확인하는 명령문이 너무 길고 매번작성하기 힘들어서 변수로 저장하려한다! sql쿼리문에 변수 넣기 select constraint_name, constraint_type, search_condition, r_constraint_name from user_constra..

Database/Oracle 2022.03.22

Oracle DB) 제약 조건: Primary Key, Foreign key, Unique, Not Null, Check

제약조건이란? 데이터의 무결성을 지키기 위한 제한된 조건. 특정 데이터를 입력 할 때 무조건 입력되는 것이 아닌, 지정한 조건을 만족했을 때 입력되도록 제약한다. 종류: Primary key, Foreign key, Unique, Not Null, Check 제약조건 선언 시기 1) 데이블 생성 시: create구문으로 테이블 선언 시. 2) 테이블 생성 후: alter 구문으로 수정한다. 제약조건명 사용자(개발자)가 지정. 고유하고 의미있는 이름 부여. 권장 이름: 테이블명의 약자_컬럼명 약자_제약조건 유형의약자 ex) emp_empid_pk emp_email_uk dept_dname_nn dept_sal_f => 한글자씩으로만 줄여써도된다. 잘 알아볼 수 있도록 편리하게! 제약조건명은 생략할수 있다...

Database/Oracle 2022.03.15

Oracle DB) 데이터 정의어(DDL) - CREATE 테이블 생성, 복사

DQL 데이터 질의어 : select DML 데이터 조작어 : insert, update, delete DDL 데이터 정의어 : create, alter, drop, truncate **DDL은 자동으로 commit이 되서 좀 더 신중하게 작성하는것이 좋다. DB안에 존재하는 객체 종류 Table, View, Sequence, Index, Synonym 테이블명과 컬럼명 이름 규칙 - 문자로 시작한다. - 문자, 숫자, 특수문자(_, #, $) 혼합 가능 1. 테이블 생성 CREATE 생성 방법1) 직접 생성 CREATE TABLE 테이블명 ( 컬럼명 테이터타입(컬럼사이즈), 컬럼명 데이터타입(컬럼사이즈), ...... ); 생성 방법2) 서브쿼리로 생성 CREATE TABLE 테이블명 AS SELECT..

Database/Oracle 2022.03.15

Oracle DB) 단일행 함수 - 문자함수(자르기, 연결하기 등등)

단일행 문자 함수: 문자 입력을 받아 문자나 숫자값을 반환한다. 1. 대소문자 변환함수 대보문자 변환은 보통 문자열을 비교해서 찾을 때 많이 사용한다. a로 시작하는 사람을 찾고싶은데 oracle db는 대소문자를 구분하기때문에 LIKE = 'a%' 로 찾으면 대문자로 시작하는 사람은 안나온다. 따라서 DB에 들어있는 값을 변환해서 찾으면 모든 경우를 다 찾을 수 있다. lower() 소문자로 변환 upper() 대문자로 변환 INITCAP() 맨 앞글자만 대문자고 나머지는 소문자 select emp_name from emps where LOWER(emp_name) = 'apple'; 2. 문자조작 함수 1) concat(a, b) : 두 인수를 연결해서 하나의 문자열로 반환. select concat(..

Database/Oracle 2022.03.02

Oracle DB) SELECT 연습

1. 중복제거 연습 EMPLOYEES 테이블로부터 사원들이 담당하고 있는 업무(job_id) 리스트를 중 복없이 출력하는 구문을 작성하시오. select distinct job_id from employees; 2. Alias 연습 employees 테이블로부터 employee_id, last_name, job_id, hire_date를 출력하되 다음과 같은 컬럼명으로 재명명하여 출력하는 구문을 작성하시오. select employee_id "Emp#", last_name "Employee", job_id "Job", hire_date "Hire Date" from employees; 3. 리터럴 문자 넣기 연습 employees 테이블로부터 last_name과 job_id를 이어서 출력하되 중간에 쉼표..

Database/Oracle 2022.03.02

OracleDB) SELECT문과 WHERE, ORDER BY

SELECT 검색할 컬럼 FROM 테이블명 ( + 조건); select문과 같이 사용하는 기타 문법 1) Alias: 출력할때 원하는 이름으로 출력할 수 있도록 한다. Alias에 공백, 대문자를 넣고싶으면 큰따옴표 안에 작성하면 작성한 그대로 된다. 문법: 컬럼명 as 새로운이름 SELECT emp_name as name, salary*12 "Total Salary" from employees; 2) || 연결연산자: 컬럼들의 값을 합쳐서 출력한다. 작은따옴표 ' ' 안에 넣으면 문자열 출력 가능. SELECT 'The job id for ' || UPPER(last_name) || ' is ' || LOWER(job_id) AS "EMPLOYEE DETAILS" FROM employees; 3) DI..

Database/Oracle 2022.03.02

MySQL) MySQL 설치 다운로드

1. 페이지로 이동해서 다운로드 1) https://www.mysql.com/ 에 접속하여 상단의 Downloads 클릭 2) 하단의 MySQL Community (GPL) Downloads 클릭 3) 나중에 체크표시되있는거 3개 다 필요한데, 우선 제일 아래에 MySQL Installer for Windows을 다운받는다. 4) 두번째꺼 다운로드. 32-bit는 내 컴퓨터가 64bit여도 상관없으니 다운받아도된다. 5) 로그인 하라고 나오는데 밑에 no thanks 하면 그냥 다운받을 수 있다. 2. 다운로드 받은 설치파일 실행 1) Choosing a Setup type : 기본 Developer Default 2) 계속 Next -> Execute 눌러서 설치 Execute를 누르면 동그라미에 초록..

Database/MySQL 2022.03.02
반응형