본문 바로가기

IT 프로그래밍 관련/MySQL16

데이터베이스의 테이블 인덱스 생성 데이터베이스의 테이블의 인덱스는 쉽게 이야기하면 해당 컬럼을 그룹화하여 , 조회시 더 빨리 할 수 있도록 하는 역할을 한다. ( where 절이 있는 쿼리문에서 사용한다. ) 만약에 만개의 데이터가 들어있는 테이블이 있다고 가정하면 , 일반적으로는 , 첫번째 데이터부터 만번째 데이터까지 순 서대로 읽어내려오면서 where 절에 있는 조건에 맞는 것들을 scanning해서 select한다고하면 , 인덱스를 설정하면 , 만개의 데이터 중 where 절에 있는 조건이 맞는 것들만 따로 추려서 해당 데이터를 찾는다. 이러한 과정으로 데이터를 찾기때문에 좀 더 빠른 데이터 찾기가 가능하다. **** SQL 쿼리중 where 절이 있는 쿼리를 할때는 scanning방식은 전체데이터를 다 스캔하기 때문에 처리속도가 .. 2021. 4. 12.
MySQL null 을 채워주는 ifnull함수 null 데이터를 채워주는 ifnull함수가 있다. 아래의 두개의 테이블이 있다. 위의 두 테이블을 left join 으로 합쳐 students 테이블의 first_name, papers 테이블의 title, grade 컬럼을 보려 한다. (papers 테이블의 student_id 는 foreign key 로 students 테이블의 id컬럼을 참조한다) 1 2 3 4 select s.first_name, p.title, p.grade from students s left join papers p on s.id = p.student_id; cs 위의 코드로 조인을 하게 되면, 아래와 같이 null 데이터가 존재한다. 이러한 null 데이터는 ifnull 함수로 처리할 수 있다. 1 2 3 4 select.. 2021. 3. 17.
MySQL 여러 테이블에서 foreign key 사용법 앞서 두개의 테이블을 연결해서 사용해봤다. 이번에는 두개가 아닌 여러개의 테이블에서의 foreign key 사용법에 대해 보겠다. tv 프로그램에 관한 리뷰 앱을 개발한다고 가정하면, 아래와 같은 테이블들과 , 그 테이블들의 연결이 필요하다. 리뷰를 쓴 사람들의 정보가 있고, tv프로그램에 관한 정보가 있고, 리뷰에 관한 정보를 담은 테이블을 만드는데, 여기서 리뷰정보 테이블은, 어떤 프로그램 리뷰를 썼는지 , 누가 썼는지 알아야 한다. 그렇기에 리뷰 테이블에서는 두개의 테이블과 연결이 되어야 한다. (리뷰쓴사람의 정보와, tv프로그램을 가져와 연결이 되도록 해야한다.) 이렇게 테이블을 만들어 보겠다. 1 2 3 4 5 6 7 create table reviewers (id int auto_increme.. 2021. 3. 17.
MySQL 정규화, 테이블의 연결 join MySQL 에서는 테이블을 설계할때 모든 필요한 데이터를 한꺼번에 테이블로 설계하지 않고, 관련되어 있는 데이터끼리 중복되지 않게 따로 테이블을 여러개로 나눈다. 그리고 각 테이블의 유니크한 primary key를 가져와서 서로 연결하는 형식을 띈다. 이렇게 테이블을 설계하는 것을 정규화라고 한다.. 테이블을 만들어보겠다. 1 2 3 4 create table students( id int auto_increment primary key, first_name varchar(100) ); create table papers ( title varchar(100), grade int, student_id int, foreign key(student_id) references students(id) on del.. 2021. 3. 17.
728x90