전체 글
-
level 1. 이름이 없는 동물의 아이디SQL/SQL 연습문제 풀이 2022. 1. 16. 20:42
https://programmers.co.kr/learn/courses/30/lessons/59039 코딩테스트 연습 - 이름이 없는 동물의 아이디 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr -- MySQL SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL ORDER BY ANIMAL_ID; -- Oracle SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME I..
-
level 1. 최댓값 구하기SQL/SQL 연습문제 풀이 2022. 1. 16. 20:35
https://programmers.co.kr/learn/courses/30/lessons/59415 코딩테스트 연습 - 최댓값 구하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr -- MySQL SELECT max(DATETIME) FROM ANIMAL_INS; -- Oracle SELECT max(DATETIME) FROM ANIMAL_INS;
-
level 1. 모든 레코드 조회하기SQL/SQL 연습문제 풀이 2022. 1. 16. 20:24
https://programmers.co.kr/learn/courses/30/lessons/59034 코딩테스트 연습 - 모든 레코드 조회하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr -- MySQL SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID; -- Oracle SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID;
-
[PyQt5] QTableWidget sortingEnabled 사용시 에러 주의Python/PyQt5 2022. 1. 10. 10:52
QTableWidget sortingEnabled 테이블의 컬럼명을 클릭하면 정렬을 해주는 기능인데 한 번 써보면 끊을 수 없을 정도로 편리한 기능이다. 하지만 소팅이 걸린 상태에서 데이터를 집어 넣으면 다운될 수 있다. 새로 입력되는 데이터에 대한 정렬을 계속 반복해 오버로드가 발생해서 그런 것 같다. (아님 말고) 테이블에 데이터 입력 시에는 소팅을 해제하자. view = self.tb_search_result view.setSortingEnabled(False) 입력이 끝나고 가능으로 바꿔주면 된다. selectionChanged 비슷한 것으로 selectionChanged 가 있다. 이 기능을 사용하면, 키보드로 테이블을 이동할 때도 이벤트가 발생한다. 마우스로 일일히 클릭할 필요가 없다. 역시 ..
-
[PyQt5] QSqlQuery::value: not positioned on a valid recordPython/PyQt5 2022. 1. 9. 00:53
sql = "SELECT note, rating FROM data WHERE id=1234" query = QSqlQuery(sql) query.first() print(query.value(0)) print(str(query.value(1)) 데이터가 없는 데 query.first() 등을 실행할 때 value: not positioned on a valid record 경고가 발생한다. 작동은 되지만 보기 좋지 않다. sql = "SELECT note, rating FROM data WHERE id=1234" query = QSqlQuery(sql) if query.first(): print(query.value(0)) print(str(query.value(1)) 이렇게 if문으로 처리해 주면 깔끔..
-
[PyQt5] webbrowser openPython/PyQt5 2022. 1. 8. 21:37
Python에는 webbrowser 라이브러리가 있어, 다음과 같이, 쉽게 웹 브라우저를 실행할 수 있다. >>> import webbrowser >>> webbrowser.open('comdoc.tistory.com/') False >>> webbrowser.open('https://comdoc.tistory.com/') True * http[s]:// 로 시작해야 한다. QT에도 같은 기능이 있는데.... from PyQt5.Qt import QDesktopServices, QUrl url = QUrl('https://comdoc.tistory.com/') QDesktopServices.openUrl(url) 임포트 문의 깔끔함을 위해서 기억해도 좋을 것 같다..
-
SQLite 14. INDEXSQL/Sqlite 2022. 1. 1. 22:15
인덱스란? 데이터베이스의 성능, 효율을 높이기 위해, 자주 검색이 발생하는 컬럼이 있다면, 그 컬럼과 ROWID만 다른 테이블로 뽑아낸 뒤, (쉽게 찾을 수 있도록) 컬럼값 기준으로 정렬하여 저장한다. ('컬럼들'이라면 같은 방법으로 컬럼들을 처리하면 된다.) 검색은 정렬된 새 테이블에서 이루어지며, 검색하여 ROWID를 찾은 뒤, 원 테이블의 ROWID와 비교해서 원 데이터를 출력하면 효율적인 검색이 이뤄질 수 있다. 이런 구구절절한 과정을 DBMS가 해주는 데 이 기능을 인덱스라고 한다. SQLite는 B-tree 방식의 정렬을 이용한다고 알려져 있다. 인덱스 생성하기 이렇게 인덱스 걸어줄 테이블과 컬럼을 정하면 인덱스를 사용할 수 있다. CREATE INDEX "name_index" ON "play..
-
SQLite 13. CREATE VIEWSQL/Sqlite 2022. 1. 1. 20:07
SQLite에서 VIEW는 읽기 전용 임시 테이블이다. 저장된 테이블이 아니라 실행될 때마다 데이터를 모으고 가공해서 출력한다. 따라서, 성능상의 이점은 없다. 복잡하거나, 자주 사용되는 쿼리를 VIEW로 만들어 두면 재사용이 편하고, 가독성이 높아진다. 타자와 체중을 같이 반환하는 쿼리를 만들어 보자. 체중 측정이 되지 않은 선수도 포함하려면 LEFT JOIN이 필요하다. SELECT players.id, name, team, position, height, age, date, weight FROM players LEFT JOIN weights ON players.id=weights.id 어렵진 않지만 꽤 긴 쿼리다. 이걸 볼 때마다 입력한다면... --; 위 셀렉트 문 그대로 뷰를 만들자. CREAT..