본문 바로가기

Programming/DB (SQL)19

MySQL에서 AutoIncrement로 변경하기. 개발을 하다가, 특정 컬럼을 Auto Increment로 변경해야 할 일이 생겼다. 그래서 아무생각없이, 아래와 같이 쿼리를 날렸다. ALTER TABLE $내테이블명 MODIFY COLUMN $바꾸고자하는컬럼명 bigint auto_increment NOT NULL; 이러니까.. auto_increment로 쓰려면 PK가 되어야한다고 한다. 음? 근데 이 컬럼명은 키로 사용중인데? 다만, 해당 테이블의 키로 쓰는 컬럼이 두개가 있긴했다. 하나는 non-auto-increment이고, 그녀석이 우선순위가 높을 뿐.. auto_increment가 적용된 컬럼만 key로 사용 가능 auto_increment가 적용된 컬럼을 제외한 다른 컬럼만 key로 사용 불가 key( auto_increment, othe.. 2023. 3. 29.
MySQL error 1175. 가끔.. 테이블에 전체 데이터를 update해주어야 할 경우가 있더라.. UPDATE mytable SET myattribute='Val'; 근데.. 이제 위에처럼.. WHERE절이 없으면.. 에러를 토한다. 1175번 오류. 해결 방법은 두 방향이 있다. 먼저.. workbench에서.. 위와 같이 preference에 들어가서, Safe Updates를 체크해제한다. 아니면.. 다음 SQL명령어를 실행 후, update쿼리를 해도 된다. set sql_safe_updates=0; 음.. 이런 거는... 필요한거긴 한데.. ( 무조건 update나 delete의 폐해방지차원..) 가끔은 귀찮다. ㅎㅎ 하지만 있는 것이 더 이득이긴 함. (WHERE절 없이 update하면 대형사고) 2023. 3. 27.
MySQL 8.x에서 변경된 예약어 및 날짜비교 서버에 있는 DB를 테스트용으로 로컬에 설치했다. 그러면서 버전을 8.0.29로 설치했다. (서버는 5.x) 그랬더니.. 멀쩡히 잘 돌던 쿼리가 오류를 막 뱉어낸다. 알고보니.. 쿼리중에 GROUPS라는 이름을 붙여서 쓰고있었는데.. 이것이 예약어가 되어버린것. 그래서 해당 예약어를 찾아서 모두 ` (1옆에 있는 키)를 앞 뒤로 감싸주어 해결. 추가된 예약어들 목록은.. https://dev.mysql.com/doc/refman/8.0/en/keywords.html MySQL :: MySQL 8.0 Reference Manual :: 9.3 Keywords and Reserved Words 9.3 Keywords and Reserved Words Keywords are words that have sig.. 2022. 9. 14.
Function 만들어쓰기 (MySQL) MySQL이라.. MSSQL카테고리에 들어가기엔 조금 이상하지만.. (카테고리명을 바꿀까..?) 저장 프로시저처럼 Function을 만들어서도 사용 가능하다. UUID생성같이 여기저기서 사용될 수 있는 쿼리는.. 코드에 넣지말고 그냥 function으로 빼버리자. DELIMITER $$ CREATE FUNCTION myfunc() RETURNS varchar(20) BEGIN DECLARE generatedUID = varchar(20); SET generatedUID = CONCAT(DATE_FORMAT(NOW(),'%Y%m%d%H%i%s%f'),1,17) LPAD(FLOOR(RAND()*1000),3,'0')); RETURN generatedUID; END DELIMITER ; 위와같이 작성 가능하다.. 2022. 8. 2.
까먹지 않게 SQL 커서를 사용한 구문 커서의 사용예.. 까먹지 않으려고.. DECLARE $(변수명) AS $(변수타입) DECLARE $(커서명) SCROLL CURSOR FOR $(변수에 담을 쿼리) OPEN $(커서명) FETCH NEXT FROM $(커서명) INTO $(변수명) WHILE(@@FETCH_STATUS = 0) BEGIN .. //To do FETCH NEXT FROM $(커서명) INTO $(변수명) END CLOSE $(커서명) DEALLOCATE $(커서명) ex) 실적용 예 DECLARE @MYID AS VARCHAR(20) DECLARE myCursor SCROLL CURSOR FOR SELECT id FROM myTable WHERE name like '이%' OPEN myCursor FETCH NEXT FR.. 2016. 2. 26.
SQL Server Programming요약 1. SELECT쿼리 - 조회 쿼리 SELECT [DISTINCT] [TOP] [INTO] FROM [WHERE] [GROUP BY] [HAVING] [ORDER BY] - 문자열 조회 : 문자열 비교시, =를 이용한 비교는 문자열이 일치해야 한다. (대소문자는 구분 안함) 만약 특정 문자열을 포함하는 경우를 검색하고 싶다면 LIKE문과 패턴을 사용하자 패턴 설명 예 예제 설명 % 어떤 경우라도 LIKE 'Co%' LIKE '%co%' Co로 시작하는 문자열 co가 포함된 문자열 _ 어떤 하나의 문자 LIKE '_ean' ean으로 끝나는 문자열. '_'수만큼 길이가 일치해야 한다. [] []안의 각각의 문자 LIKE '[CK]on%' LINE '[C-K]on' C또는 K로 시작하고, 다음이 co인 문자.. 2014. 12. 10.
728x90