본문 바로가기

MySQL

(11)
MySQL - regexp,rlike MySQL 8.0.26 버전 리포트입니다. (오라클과 sql_server에 대해서만 기술되어 구석구석 문법이 다른 것 같습니다.) 정규표현식 사용시 where 절에서 regexp_like를 사용하는 예제입니다. (sql가이드 p.386) syntax error 라고 메시지를 보게 되는데요, 당황하지 않고 구글에 물어보았습니다! 다음 예제 구문을 실행시킬 수 있습니다. select ename from emp where ename regexp '^s'; select ename from emp where ename rlike '^s'; regexp와 rlike 의 차이점 자체는 잘모르겠네요. 똑같이 행동하는 것처럼 보입니다. 두 테이블의 결과표입니다. SMITH SCOTT 그리고 정규표현식 사용시 알파벳 대소..
MySQL - ratio_to_report 구현 MySQL 8.0.26에서 ratio_to_report() 함수가 실행되지 않습니다. (스칼라) 서브쿼리를 이용해서 간단하게 구현하였습니다. select ename,sal, round(sal/(select sum(sal) from emp where job = 'salesman'),2) from emp where job = 'salesman'; 다음은 결과표입니다. ALLEN 1600.00 0.29 WARD 1250.00 0.22 MARTIN 1250.00 0.22 TURNER 1500.00 0.27
MySQL - rollup 사용 group by 절에서 rollup(column1,.. )의 형태로 사용할 수 있다고 알려져 있습니다. MySQL 8.0.26 에서는 작동하지 않았습니다. select b.dname, a.job, count(*) as emp_cnt, sum(a.sal) as sal_sum from emp a,dept b where b.deptno = a.deptno group by dname,job with rollup; 위 예문과 같이 with 절을 삽입하여 rollup 옵션을 적용시킬 수 있습니다. group by 컬럼을 그대로 이용합니다. 다음은 결과표입니다. 잘 구동되네요! ACCOUNTING CLERK 1 1300.00 ACCOUNTING MANAGER 1 2450.00 ACCOUNTING PRESIDENT 1..
MySQL - rownum 구현 8.0.26 버전 mysql입니다. select a.player_id,a.player_name,a.back_no from (select PLAYER_NAME,PLAYER_ID,BACK_NO,row_number() over() num from player) a where rownum < 10; 을 실행하면 rownum이 없다고 메세지가 뜹니다. sql 가이드북에서는 (sql 자격증책) rownum sudo column이라고 시스템적으로 제공된다고 적혀있습니다. 그러나 select ename,sal from emp where rownum < 4 order by sal desc; 실행 시 rownum이 칼럼을 정의하지 않았다고 메시지가 뜨게 됩니다. (책 예제) 해결방법은 서브쿼리를 이용하였는데요, row_n..
MySQL - index, view, group by # INDEX 인덱스는 테이블의 기초정보를 가져다줍니다. 테이블을 모두 읽지 않기 때문에 잘 모르는 테이블을 수정할 때 유용하게 사용할 수 있을 것으로 보입니다. 테이블 레코드 추가/변경 시 인덱스도 자동으로 수정됩니다. db가 큰 경우 index를 잘 이용하면 시간적 측면에서 적절한 타협을 볼 수 있을 것 같습니다. 위 코드는 index 생성, 추가, 확인, 제거 입니다. show index 로 테이블의 인덱스를 보면 여러 가지 값이 보이는데 자세한 의미는 tcpschool을 참고해 주세요. http://tcpschool.com/mysql/mysql_index_create 코딩교육 티씨피스쿨 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등 tcpschool.c..
MySQL - join, union, sub-query # CREATE TABLE Reservation(ID INT, Name VARCHAR(30), ReserveDate DATE, RoomNum INT); CREATE TABLE Customer (ID INT, Name VARCHAR(30), Age INT, Address VARCHAR(20)); INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(1, '홍길동', '2016-01-05', 2014); INSERT INTO Reservation(ID, Name, ReserveDate, RoomNum) VALUES(2, '임꺽정', '2016-02-12', 918); INSERT INTO Reservation(ID, Name, ReserveDate,..
MySQL - foreign key create table에서 foregin key를 이용하는 방법입니다. test2 테이블을 만들 때 test 1의 테이블을 참조해서 customer_ID를 작성하였습니다. 만약에 참조할 상위 필드에 제약조건이 없다면 에러가 발생합니다. (error code 1822) 문법은 다음과 같습니다. ALTER TABLE Reservation ADD CONSTRAINT CustomerID # 제약조건 이름 FOREIGN KEY (ID) REFERENCES Customer (ID); 위 예제는 test1 , roomNum에서 제약조건이 없기 때문에 unique를 걸어준 후 test2에 참조하도록 alter table을 이용했습니다. 다음은 결괏값입니다. 다음은 주어진 제약조건을 제거하는 방법입니다. 제약조건 이름을..
MySQL - constraint table 을 생성할 때 insert into 로 데이터 입력시 제약조건을 걸 수 있습니다. tcpschool 본문에서 스크랩 했습니다. CREATE TABLE Test ( ID INT NOT NULL default 0, Name VARCHAR(30), ReserveDate DATE, RoomNum INT ); 문법은 위와 같이 (필드명) (형식) (제약조건) 순서로 적으면 됩니다. 사용할 수 있는 조건을 알아 보겠습니다. not null : 데이터 입력시 null 로 둘 수 없게 만드는 조건 입니다. unique : 중복데이터를 피하게 만드는 조건 입니다. primary key : not null 과 unique 모두 적용하는 조건 입니다. 그러나 테이블당 하나의 필드만 primary key로 지정할 ..

반응형