MySQL 데이터베이스의 전체 레코드 수 확인하기
MySQL에서 데이터베이스에 속한 모든 테이블의 레코드(행) 수를 한 번에 구하려면, INFORMATION_SCHEMA.TABLES 뷰의 TABLE_ROWS 컬럼과 집계 함수 SUM()을 함께 사용하면 됩니다. 각 테이블을 일일이 COUNT(*)로 조회하는 것보다 훨씬 간편합니다.
전체 레코드 수를 구하는 기본 문법
SELECT SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'yourDatabaseName';
'yourDatabaseName' 부분을 실제 데이터베이스 이름으로 바꿔 실행하면 해당 데이터베이스 전체의 레코드 합계가 반환됩니다.
실행 예시
예를 들어 business 데이터베이스의 전체 레코드 수를 구하는 쿼리는 다음과 같습니다.
mysql> SELECT SUM(TABLE_ROWS)
-> FROM INFORMATION_SCHEMA.TABLES
-> WHERE TABLE_SCHEMA = 'business';실행 결과
+-----------------+ | SUM(TABLE_ROWS) | +-----------------+ | 450 | +-----------------+ 1 row in set (13.54 sec)
위 결과를 보면 business 데이터베이스의 모든 테이블에 저장된 레코드는 총 450개입니다.
테이블별 레코드 수 개별적으로 조회하기
데이터베이스 전체 합계가 아니라 각 테이블의 레코드 수를 따로 확인하고 싶다면, TABLE_NAME과 TABLE_ROWS 컬럼을 함께 조회하면 됩니다.
mysql> SELECT table_name, table_rows
-> FROM INFORMATION_SCHEMA.TABLES
-> WHERE TABLE_SCHEMA = 'business';실행 결과
+------------------------------------------------------------------+------------+ | TABLE_NAME | TABLE_ROWS | +------------------------------------------------------------------+------------+ | add1daydemo | 2 | | addcheckconstraintdemo | 0 | | addcolumntable | 0 | | addconstraintdemo | 2 | | adding5hours | 2 | | addingunique | 2 | | addnotnulldemo | 2 | | alphademo | 0 | | autoincrement | 4 | | autoincrementtable | 5 | | backticksymbol | 4 | | bitdemo | 2 | | blobtabledemo | 0 | | bookindexes | 4 | | booleandemo | 0 | | chardemo | 0 | | checkdemo | 0 | | checkingintegerdemo | 2 | | clonestudent | 3 | | college | 0 | | colortable | 0 | | columnexistdemo | 0 | | columnnameasnumberdemo | 2 | | columnnamewithspace | 4 | | columnslist | 0 | | columnvaluenulldemo | 2 | | commaseperatedemo | 2 | | commentdemo | 0 | | commentdemo2 | 0 | | commentdemo3 | 0 | | countrycitydemo | 2 | | currentdatetime | 0 | | currenttimeadding2hours | 0 | | currenttimezone | 1 | | dateadddemo | 0 | | datetimedemo | 3 | | deletedemo | 5 | | deleterecord | 6 | | demo | 2 | | demo1 | 0 | | demoascii | 2 | | demoauto | 2 | | demobcrypt | 0 | | demoemptyandnull | 0 | | demoint | 0 | | demoonreplace | 2 | | demoschema | 0 | | demowhere | 2 | | distcountdemo | 4 | | distinctdemo | 8 | | distinctdemo1 | 4 | | duplicatebookindexes | 4 | | duplicatedeletedemo | 4 | | duplicatefound | 4 | | employeeinformation | 2 | | employeerecords | 0 | | employeetable | 0 | | enumdemo | 2 | | enumvalues | 0 | | escapedeom | 0 | | existsrowdemo | 4 | | findandreplacedemo | 4 | | finddemo | 2 | | firsttable | 2 | | firsttabledemo | 3 | | foreigntable | 2 | | foreigntabledemo | 2 | | functionindexdemo | 0 | | functiontriggersdemo | 0 | | groupconcatenatedemo | 4 | | groupdemo | 4 | | groupdemo1 | 4 | | groupt_concatdemo | 4 | | ifelsedemo | 4 | | imagedemo | 2 | | incasesensdemo | 4 | | indexingdemo | 0 | | insertingemojidemo | 1 | | insubquerydemo | 2 | | int1demo | 0 | | intdemo | 2 | | ipv4addressdemo | 0 | | ipv6demo | 0 | | jasonasmysqldemo | 2 | | keydemo | 2 | | last10recordsdemo | 12 | | lastinsertiddemo | 3 | | lastinsertrecordiddemo | 3 | | latandlangdemo | 0 | | lengthandcharlengthdemo | 1 | | limitoffsetdemo | 11 | | lowcardinality | 2 | | milliseconddemo | 0 | | modifycolumnnamedemo | 0 | | modifydatatype | 0 | | moneydemo | 2 | | moviecollection | 6 | | multipleindexdemo | 0 | | multiplerecordwithvalues | 4 | | myisamtabledemo | 2 | | myisamtoinnodbdemo | 0 | | mytable | 0 | | mytable1 | 0 | | mytabledemo | 2 | | newstudent | 0 | | nextiddemo | 2 | | nextpreviousdemo | 9 | | nonasciidemo | 4 | | nthrecorddemo | 4 | | nulldemo | 0 | | nullwithselect | 6 | | numbercolumndemo | 0 | | numberofcolumns | 2 | | ondemo | 4 | | orderdemo | 2 | | originaltable | 4 | | parentdemo | 0 | | pasthistory | 4 | | presenthistory | 2 | | primarytable | 2 | | primarytable1 | 2 | | primarytabledemo | 2 | | proctabledemo | 3 | | querybetweentwodates | 0 | | querydatedemo | 0 | | qutesdemo | 2 | | randomoptimizationdemo | 8 | | randoptimizedemo | 26 | | repairtabledemo | 3 | | rowcountdemo | 8 | | rowintocolumn | 4 | | rownumberdemo | 4 | | rowstranspose | 2 | | rowstransposedemo | 4 | | rowvaluedemo | 8 | | saveintotextfile | 2 | | saveoutputintext | 0 | | schemadatabasemethoddemo | 0 | | secondtable | 2 | | secondtabledemo | 2 | | sequencedemo | 7 | | singlequotesdemo | 2 | | smallintdemo | 0 | | sortingvarchardemo | 6 | | sourcetable | 4 | | spacecolumn | 2 | | stringoccurrencedemo | 3 | | stringtodatedemo | 0 | | student | 2 | | studentenrollment | 0 | | studentrecordwithmyisam | 0 | | studenttable | 4 | | swappingtwocoulmnsvaluedemo | 5 | | table1 | 2 | | table2 | 3 | | tabledemo | 0 | | tabledemo2 | 0 | | tabledemo3 | 0 | | tableforeign | 0 | | tablename1tablename1tablename1tablename1tablename1tablename1demo | 0 | | tablepri | 0 | | tbldemotrail | 6 | | tblf | 0 | | tblfirst | 2 | | tblfunctiontrigger | 0 | | tblifdemo | 4 | | tblnull | 0 | | tblp | 0 | | tblselectdemo | 6 | | tblstudent | 2 | | tbluni | 0 | | tblupdatelimit | 8 | | textdemo | 0 | | textintonumberdemo | 4 | | texttabledemo | 0 | | texturl | 0 | | timestampdemo | 0 | | timestamptodatedemo | 0 | | tinyint1demo | 0 | | tinyintdemo | 2 | | trailingandleadingdemo | 2 | | transcationdemo | 2 | | triggedemo | 0 | | trigger1 | 0 | | trigger2demo | 0 | | trimdemo | 2 | | trimdemo2 | 0 | | truefalsetable | 0 | | uniondemo1 | 3 | | uniondemo2 | 7 | | uniqueautoid | 3 | | uniqueconstdemo | 2 | | uniquedemo | 2 | | uniquedemo1 | 2 | | unsigneddemo | 2 | | updatewithlimit | 5 | | updtable | 4 | | usernameandpassworddemo | 2 | | varchardemo | 0 | | varchardemo1 | 0 | | varchardemo2 | 0 | | varcharurl | 0 | | variableastablename | 2 | | variablenametable | 0 | | whereconditon | 4 | | wordcountdemo | 0 | | xmldemo | 0 | +------------------------------------------------------------------+------------+ 209 rows in set (0.08 sec)
결과를 보면 총 209개의 테이블이 조회되었으며, 각 테이블마다 저장된 레코드 수를 한눈에 파악할 수 있습니다.
참고 사항
TABLE_ROWS값은 InnoDB 스토리지 엔진을 사용하는 테이블의 경우 근사치(approximate)로 반환됩니다. 정확한 레코드 수가 필요하다면 해당 테이블에 대해SELECT COUNT(*) FROM 테이블명;쿼리를 직접 실행해야 합니다.- MyISAM 엔진 테이블은
TABLE_ROWS값이 정확하게 유지됩니다. - 테이블 이름 순으로 정렬된 결과를 원한다면 쿼리 끝에
ORDER BY table_name;을 추가하면 됩니다.