했던것들/MySQL

했던것들/MySQL

Error Code: 1175. safe update mode 해제 SQL문

DELETE, UPDATE를 할 때 id를 참조하여 바꾸지 않으면 1175 에러가 난다. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. 언제나 키 컬럼을 참조해서 row를 변경, 삭제할 수 있다면 좋을 것이지만, 간단한 테스트나 연습의 경우에는 그러기가 좀 곤란하다 그럴때는 safe mode를 해제해주면 된다. set sql_safe_updates=0;

했던것들/MySQL

일대다(one to many) 관계 연습

다이어그램 회원가입시 customers 페이지에 개인정보가 저장된다. (id가 고유하게 존재한다.) orders는 회원이 물건을 구매할 시 row가 생성되는 테이블이다. (id가 고유하게 존재한다.) orders의 개별 id는 고유하지만, 회원 정보가 있어야만 물건을 구매할 수 있으므로, orders의 customer_id는 customers의 id를 외래키로 참조한다. 하나의 회원이 여러개의 orders row를 가질 수 있으므로, 이는 일대 다 관계에 해당한다. SQL문 // customers 테이블 생성 CREATE TABLE customers ( id INT AUTO_INCREMENT, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NUL..

했던것들/MySQL

Error Code: 1093. You can't specify target table 'people' for update in FROM clause

문제 DELETE나 UPDATE 사용할 때, 메인 쿼리에서 만들어낸 서브쿼리를 직접적으로 참조하면 에러가 발생한다. DELETE FROM people WHERE name = (SELECT name FROM people WHERE name = 'PJY' LIMIT 1); 위의 SQL에서 에러가 발생했다. 해결 1. DELETE나 UPDATE 사용 시 서브쿼리를 사용하지 않는 방법 DELETE FROM people WHERE name = 'PJY' LIMIT 1; 서브쿼리를 사용하지 않는 편이 성능상으로나 쿼리 가독성으로나 더 좋은 방법이다. (+ LIMIT 거는 이유) 한번에 너무 많은 ROW를 삭제하면 데이터베이스에 부하가 가해지므로, 다른 트랜잭션이 처리되지 않아 데드락이 걸릴 수 있다. 이를 방지하기..

했던것들/MySQL

데이터베이스(SQL) 도입하기

mysql을 배워서 프로젝트에 도입해보았다. mySQL 접속 mysql을 설치했다면, mysql에 접속해야 한다. mySQL이 설치된 폴더 경로로 이동한 후 명령 프롬프트를 통해 MySQL에 접속할 수 있는데, 내 경우, 경로는 C:\Program Files\MySQL\MySQL Server 8.0\bin 이다. mysql -h [접속할주소] -u [사용자명] -p Enter password: [암호 입력] 접속한 후 프롬프트가 mysql> 형태로 바뀌었다면 접속이 된 것이다. mysql> 이후 SQL 명령어를 입력하면 mysql을 사용할 수 있다. 스키마(데이터베이스) 생성 스키마를 생성해보자. 먼저 명령 프롬프트로 진행할 경우 mysql에 접속이 되어있어야 한다. CREATE SCHEMA [데이터베이..

2DC
'했던것들/MySQL' 카테고리의 글 목록