DB/MySQL

· DB/MySQL
1. AUTO_INCREMENT란? 테이블을 사용할 때 데이터의 수를 pk로 사용해야 할 때가 있다. 이 경우 새로 데이터를 insert할 때 데이터 수를 확인해야 pk값을 겹치지 않게 추가할 수 있다. insert마다 데이터 수를 계속 받아오는 것은 비효율적이므로 AUTO_INCREMENT를 통해 insert문을 보내면 자동으로 데이터 수가 증가하도록 할 수 있다. 2. 쿼리 및 결과 table 생성 쿼리문은 다음과 같다. CREATE TABLE plant ( plant_id INTEGER NOT NULL AUTO_INCREMENT, plant_name VARCHAR(20) NOT NULL, watering_cycle VARCHAR(20) NOT NULL, temperature VARCHAR(20) N..
· DB/MySQL
1. 문제 발생 및 원인 .sql 파일로 데이터를 추가하는데 아래 같은 에러가 발생했다. 해당 문제는 프라이머리 키에 중복된 키가 들어가서 발생하는 문제다. 이로 인해 5개의 데이터가 추가되어야 했지만 4개 밖에 추가되지 않았다. 2. 문제 해결 plant테이블의 primary key는 plant_id로 아래와 같이 설정되어 있었다. plant_id INT NOT NULL AUTO_INCREMENT 이때 .sql 파일에서 다음과 같이 plant_id에 0~4를 넘겼다. INSERT INTO plant(plant_id, plant_name, watering_cycle, temperature, sunshine_period) VALUES (0, "로즈마리", ...); INSERT INTO plant(plan..
· DB/MySQL
1. 문제 상황 .sql 파일을 불러와 테이블을 만들고 insert문을 수행했는데 아래와 같이 한글 데이터가 입력되지 않는 문제가 발생했다. 해당 database의 인코딩은 UTF-8로 올바르게 설정되어 있기 때문에 sql파일이 아니라 따로 한 줄씩 명령어를 입력해주면 해당 insert문들이 올바르게 동작했다. 2. cmd 창의 인코딩 cmd 창의 인코딩 형식을 살펴보니 chcp 949(ANSI/OEM-한국어)였다. 그래서 해당 설정을 chcp 65001(UTF-8)로 변경하여 source명령어를 실행시켜봤다. 해당 명령어를 수행하면 인코딩을 올바르게 변경할 수 있다. 3. source 명령 실행 source 명령어를 실행하여 데이터를 추가하고 select문을 통해 데이터를 확인해보면 아래와 같이 데이터..
· DB/MySQL
1. 1822 Error Foreignkey 설정시 1822 에러가 발생하면 아래와 같이 "Failed to add the foreign key constraint. Missing index for constraint '(자식 테이블 이름)' in the referenced table '(부모 테이블 이름)'" 문구가 발생한다. 해당 문제는 부모 테이블에서 foreign key로 가져오려는 column이 primary 혹은 unique로 설정되어 있지 않기 때문이다. 따라서 foreign key로 가져오려는 columne을 primary나 unique로 꼭 설정해주자. 2. 3780 Error 3780도 1822와 비슷한 에러가 발생한다. 3780은 아래와 같이 "Failed to add the fore..
· DB/MySQL
1. ".sql" 파일 여러 sql문을 실행할 때 한 줄씩 작성하다보면 불편함을 느낄 수 있다. 이러한 문제를 해결하기 위해 한 번에 sql문을 담고있는 .sql파일을 DB에 전달할 수 있다. MySQL의 경우 source 명령문을 지원한다. 2. source 명령문 먼저 .sql 파일이 있다고 할 때 해당 경로를 가져와서 아래와 같이 작성하면 명령을 수행할 수 있다. 이때 주의할 점은 '\(역슬래시)'로 경로를 구분하지 않고 '/(슬래시)'로 구분한다는 점이다. 위와 같이 올바르게 쓰면 아래와 같이 명령문이 잘 실행되는 것을 볼 수 있다.
· DB/MySQL
SQL은 테이블 혹은 열을 as를 통해 다른 이름으로 사용할 수 있다. 쿼리 예시는 다음과 같다. SELECT deptno as number, name as departName FROM department; 위 sql은 기존의 deptno와 name 이라는 열을 각각 number, departName으로 변경한 테이블을 요청하는 쿼리다. 결과는 다음과 같다.
· DB/MySQL
1. select version(); cmd에서 mysql에 접속한 뒤 "select version();"을 수행하면 아래와 같이 버전을 확인할 수 있다. 2. mysql --version/-V 혹은 cmd에서 "mysql --version" 혹은 "mysql -V"를 사용하면 mysql 버전을 확인할 수 있다.
· DB/MySQL
MySQL에 존재하는 유저를 확인하려면 먼저 mysql 데이터 베이스에 접근해야 한다. 이를 위해 아래처럼 use command를 사용하여 mysql 데이터 베이스로 이동한다. 이후 select 구문을 활용하여 "select user, host from user;"을 사용하면 아래와 같이 유저들의 정보를 확인할 수 있다.
코딩마루
'DB/MySQL' 카테고리의 글 목록