728x90
반응형
728x90
반응형
아래 코드 입력 CREATE TABLE DB1.현재DB 테이블 명 LIKE DB2.복사할 DB 테이블 명; INSERT INTO DB1.현재DB 테이블 명 SELECT * FROM DB2.복사할 DB 테이블 명;
mySQL은 update나 delete 시 동일 테이블을 사용하는 것이 불가능 하다. 따라서 tmp라는 일회성 테이블을 생성하여 서브쿼리로 집어넣으면 실행이 가능함 동일 table sum값을 다시 동일테이블 column에 update해야할 일이 있어서 아래와 같이 작성하였더니 위와 같은 오류가 발생함. update mentiboard set boardlike = (select sum(boardLike)+1 as boardLikes from mentiboard where num = 23); 따라서 위와 같이 설명한대로 서브쿼리를 하나 더 집어넣어서 tmp라는 테이블로 임시 저장한 후에 동일하게 실행하였더니 문제없이 되는 중 update mentiboard set boardlike = (select sum(..
데이터를 수집하다보면 중복되는 SQL 데이터를 제거하고 싶을 때가 있다. 그 때 아래의 쿼리문을 입력하면 제거 가능 DELETE t1 FROM newslistspecial t1 JOIN newslistspecial t2 ON t1.title=t2.title AND t1.originallink = t2.originallink AND t1.description = t2.description where t1.num > t2.num;
DB를 사용할 때 종종 여러가지 테이블을 한군데로 묶어서 사용하고 싶을 때가 있다. 만약 특정 연결값이 있다면 한번에 묶어서 VIEW로 볼 수도 있고 그 값이 변경이 된다면 그 연결된 값도 변경이 되면 좋지 않을까? 그래서 사용할 수 있는 것이 FOREIGN KEY이다 예시를 들어보자 만약 유저 정보와 그 유저의 거래정보를 저장하는 테이블이 있다고 가정하자 유저 테이블: 거래정보 테이블: 유저테이블의 num값을 FOREIGN KEY의 references로 삼고 userboard의 num을 foreign key의 자식 객체로 정의하려면 아래와 같이 정의한다. ALTER TABLE userboard ADD FOREIGN KEY(num) REFERENCES userinfo(num) [ON DELETE CASC..
DB를 관리할 때는 아래 정규화(DB Normalization)을 지켜야 한다. 지키지 않을경우 어긴 테이블을 분리하여야 함!!! 1. 원자성 (atomic) : 각각의 값에서 하나의 값만 참조하여야 한다. 2. 복합키인 경우, 모든 컬럼의 값은 복합키에 모두 종속되어야 한다. - 복합키 중에서 어떤 특정키에 다른 속성이 종속되어서는 안된다. 예시로 주민번호를 들어보자. 주민번호를 알면 이름을 유일하게 특정할 수 있는 것처럼 이름은 주민번호에 종속되는 개념이다. 하지만 주민번호는 이름에 종속되지 않는다. 또 다른 예시를 들어보면 우리가 항상 예시로 자주 만드는 연락처가 있다. 사번, 이름, 부서번호가 저장된 DB가 있다면, 이 때 이름과 부서번호는 사번에 종속된다. 하지만 사번은 다른 객체에 종속되지 않..
오늘의 DB를 연동시킬 수 있게 도와주는 새로운 클래스는 Connection, Statement ,ResultSet! DB를 연동시키기 위해서 하나의 파일을 다운받아야 하는데, 이 JAR파일이 Connection의 인터페이스 메서드를 오버라이딩 해줌으로써 SQL와 연동시킬 수 있다. Connection은 인터페이스로 개발자가 서버 연동을 위해 메서드를 구현할 필요 없이 서버 배포자에게 메서드 구현을 전가해 개발자의 편의를 높였다. 아래의 링크에 들어가서 JAR파일을 다운받고, 프로젝트의 build path에 들어가서 classpath에 넣어주자. https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.28 솔직히 DB 연동하는 법을 먼저 배울..
더블쿼리 더블쿼리를 주는 간단한 예제 CROSS JOIN을 사용해서 각각의 table value 값에 average 값을 추가 SELECT * FROM dbtable, (SELECT avg(sal) FROM dbtable)ts WHERE sal > (SELECT avg(sal) FROM dbtable); #크로스 조인을 사용해서 평균값과 평균보다 급여를 많이 받는 인원을 표시 FORIEGN KEY FORIEGN KEY를 설정할 때 부모와 자식간에 값의 변동이 있으면 table value값이 고아(?)가 되므로 찾을 수가 없다. 따라서 on update cascade, on delete cascade를 사용해서 값이 지워질 때나 변경될 때 두 table이 연동하여 변경되도록 설정 #부모의 값이 변경되면 자..
describe city; # 테이블 보기 desc country; # describe 줄여서 가능 desc countrylanguage; select * from city; select name, District from city where 5000000 = 5000000; #groub by 뒤에 where을 사용할 수 없으므로 having을 대신 사용 = having 사용 시 동일한 max나 min같은 조건문을 달아줘야됨 select name, CountryCode, Population, sum(Population) from city group by CountryCode, name with rollup; #중간결산인 rollup, name과 countrycode로 묶은 값의 인구수 총합을 중간에 출력..