웹사이트 검색

11 Linux 사용자를 위한 고급 MySQL 데이터베이스 "인터뷰 질문 및 답변"


우리는 이미 Tecmint 커뮤니티에서 호평을 받고 있는 두 개의 MySQL 기사를 게시했습니다. 이것은 MySQL 인터뷰 시리즈의 세 번째 기사이자 인터뷰 장르 칼럼의 16번째 기사입니다.

  1. 15가지 기본 MySQL 인터뷰 질문
  2. 중급자를 위한 10가지 MySQL 데이터베이스 인터뷰 질문

우리는 모두 귀하의 지원으로 인해 여기에 도달했으며 미래에도 귀하의 목적을 추구합니다. 이번 글에서는 인터뷰 측면과 관련된 질문인 MySQL의 실무적 측면에 집중하겠습니다.

1. SELECT 문을 사용하여 실행 중인 서버의 버전을 찾고 현재 데이터베이스의 이름을 인쇄하시겠습니까?

답변: 아래 MySQL 명령은 서버 버전과 현재 선택된 데이터베이스를 표시합니다.

mysql> SELECT VERSION(), DATABASE();

+-------------------------+------------+
| VERSION()               | DATABASE() |
+-------------------------+------------+
| 5.5.34-0ubuntu0.13.10.1 | NULL       |
+-------------------------+------------+
1 row in set (0.06 sec)

데이터베이스 열에는 데이터베이스를 선택하지 않았기 때문에 NULL 값이 표시됩니다. 따라서 다음 명령과 같이 데이터베이스를 선택합니다.

mysql> use Tecmint;

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select VERSION(), DATABASE();

+-------------------------+------------+
| VERSION()               | DATABASE() |
+-------------------------+------------+
| 5.5.34-0ubuntu0.13.10.1 | tecmint    |
+-------------------------+------------+
1 row in set (0.00 sec)
2. 테이블에서 'SAM'을 제외한 모든 사용자를 선택하려면 'Tecmint'라고 말하려면 NOT 연산자(!)를 사용하세요.

답변: 아래 명령문은 'SAM< 사용자를 제외한 'Tecmint' 테이블의 모든 사용자에 대한 모든 열을 표시합니다.'.

mysql> SELECT * FROM Tecmint WHERE user !=SAM;

+---------------------+---------+---------+---------+---------+-------+ 
| date                | user    | host 	 | root     | local   | size  | 
+---------------------+---------+---------+---------+---------+-------+ 
| 2001-05-14 14:42:21 | Anthony | venus  | barb     | venus   | 98151 | 
| 2001-05-15 08:50:57 | TIM     | venus  | phil     | venus   | 978   | 
+---------------------+---------+---------+---------+---------+-------+
3. NOT(!) 연산자로 'AND'를 구현할 수 있나요?

답변: (=)를 사용할 때는 AND 연산자를 사용하고, (!=)를 사용할 때는 OR 연산자를 사용합니다. AND 연산자를 사용한 (=)의 예입니다.

mysql> SELECT * FROM mail WHERE user = SAM AND root = phil

OR 연산자를 사용한 (!=)의 예입니다.

mysql> SELECT * FROM mail WHERE user != SAM OR root != phil

+---------------------+---------+---------+---------+---------+-------+ 
| date                | user    | host    | root    | local   | size  | 
+---------------------+---------+---------+---------+---------+-------+ 
| 2001-05-14 14:42:21 | Anthony | venus   | barb    | venus   | 98151 | 
+---------------------+---------+---------+---------+---------+-------+
  1. = : 같음을 의미합니다.
  2. != : 같지 않음
  3. ! : NOT 연산자를 나타냅니다.

AND & OR은 MySQL에서 조인 연산자로 처리됩니다.

4. MySQL에서는 어떤 IFNULL() 문이 사용됩니까?

답변: MySQL의 쿼리는 IFNULL() 문을 사용하여 정확하게 작성할 수 있습니다. IFNULL() 문은 첫 번째 인수를 테스트하고 NULL이 아니면 두 번째 인수를 반환하고, 그렇지 않으면 두 번째 인수를 반환합니다.

mysql> SELECT name, IFNULL(id,'Unknown') AS 'id' FROM taxpayer;

+---------+---------+ 
| name 	  | id      | 
+---------+---------+ 
| bernina | 198-48  | 
| bertha  | Unknown | 
| ben     | Unknown | 
| bill    | 475-83  | 
+---------+---------+
5. 결과 세트의 시작 또는 끝에서 결과 세트의 특정 행만 보고 싶습니다. 어떻게 하시겠습니까?

답변: 위에 설명된 시나리오를 달성하려면 ORDER BY와 함께 LIMIT 절을 사용해야 합니다.

1개의 기록 표시
mysql> SELECT * FROM name LIMIT 1;

+----+------+------------+-------+----------------------+------+ 
| id | name | birth      | color | foods                | cats | 
+----+------+------------+-------+----------------------+------+ 
| 1  | Fred | 1970-04-13 | black | lutefisk,fadge,pizza | 0    | 
+----+------+------------+-------+----------------------+------+
5개의 기록 표시
mysql> SELECT * FROM profile LIMIT 5;

+----+------+------------+-------+-----------------------+------+ 
| id | name | birth      | color | foods                 | cats | 
+----+------+------------+-------+-----------------------+------+ 
| 1  | Fred | 1970-04-13 | black | lutefisk,fadge,pizza  | 0    | 
| 2  | Mort | 1969-09-30 | white | burrito,curry,eggroll | 3    | 
| 3  | Brit | 1957-12-01 | red   | burrito,curry,pizza   | 1    |   
| 4  | Carl | 1973-11-02 | red   | eggroll,pizza         | 4    | 
| 5  | Sean | 1963-07-04 | blue  | burrito,curry         | 5    | 
+----+------+------------+-------+-----------------------+------+
mysql> SELECT * FROM profile ORDER BY birth LIMIT 1;

+----+------+------------+-------+----------------+------+ 
| id | name | birth      | color | foods          | cats | 
+----+------+------------+-------+----------------+------+ 
| 9  | Dick | 1952-08-20 | green | lutefisk,fadge | 0    | 
+----+------+------------+-------+----------------+------+
6. 오라클 대 MySQL. 어느 것이고 왜?

답변: 두 가지 모두 장점과 단점이 있습니다. 시간이 지나면서 나는 MySQL을 선호합니다.

Oracle 대신 MySQL을 선택한 이유
  1. MySQL은 FOSS입니다.
  2. MySQL은 이식 가능합니다.
  3. MYSQL은 GUI와 명령 프롬프트를 모두 지원합니다.
  4. MySQL 관리는 쿼리 브라우저를 통해 지원됩니다.
7. MySQL에서 현재 날짜를 어떻게 얻나요?

답변: MySQL에서 현재 날짜를 가져오는 것은 아래 SELECT 문을 실행하는 것만큼 간단합니다.

mysql> SELECT CURRENT_DATE();

+----------------+
| CURRENT_DATE() |
+----------------+
| 2014-06-17     |
+----------------+
8. MySQL에서 테이블을 XML 파일로 내보내려면 어떻게 해야 합니까?

답변: MySQL 테이블이나 전체 데이터베이스를 XML 파일로 내보내려면 '-e'(내보내기) 옵션을 사용합니다. 큰 테이블의 경우 수동으로 구현해야 할 수도 있지만 작은 테이블의 경우 phpMyAdmin과 같은 응용 프로그램이 작업을 수행할 수 있습니다.

MySQL의 기본 명령으로 이를 수행할 수 있습니다.

mysql -u USER_NAME –xml -e 'SELECT * FROM table_name' > table_name.xml

여기서 USER_NAME은 데이터베이스의 사용자 이름이고 table_name은 XML로 내보내는 테이블이고 table_name.xml은 데이터가 저장되는 xml 파일입니다.

9. MySQL_pconnect란 무엇입니까? MySQL_connect와 어떻게 다릅니까?

답변: MySQL_pconnect()는 MySQL 데이터베이스에 대한 지속적인 연결을 엽니다. 이는 단순히 페이지가 로드될 때마다 데이터베이스가 열리지 않는다는 것을 의미합니다. 영구 연결을 닫으려면 MySQL_close()를 사용하십시오.

MySQL_pconnect와 MySQL_connect의 간단한 차이점은 다음과 같습니다.

MySQL_pconnect와 달리 MySQL_connect – 페이지가 로드될 때마다 데이터베이스를 열고 MySQL_close() 문을 사용하여 언제든지 닫을 수 있습니다.

10. 데이터베이스 'mysql'의 'user'라는 테이블에 정의된 모든 인덱스를 표시해야 합니다. 이것을 어떻게 달성할 것인가?

답변: 다음 명령은 'user' 테이블의 모든 인덱스를 표시합니다.

mysql> show index from user;
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | 
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
| user  |          0 | PRIMARY  |            1 | Host        | A         |        NULL |     NULL | NULL   |      | BTREE      |         |               | 
| user  |          0 | PRIMARY  |            2 | User        | A         |           4 |     NULL | NULL   |      | BTREE      |         |               | 
+-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
2 rows in set (0.00 sec)
11. CSV 테이블이란 무엇입니까?

답변: CSV는 쉼표로 구분된 값, 즉 문자로 구분된 값을 나타냅니다. CSV 테이블은 일반 텍스트와 표 형식으로 데이터를 저장합니다. 일반적으로 한 줄에 하나의 레코드가 포함됩니다.

각 레코드는 동일한 필드 순서를 갖는 특정 구분 기호(쉼표, 세미콜론 등)로 구분됩니다. CSV 테이블은 가져오기 및 내보내기를 위해 전화 연락처를 저장하는 데 가장 널리 사용되며 모든 종류의 일반 텍스트 데이터를 저장하는 데 사용할 수 있습니다.

지금은 여기까지입니다. 저는 또 다른 흥미로운 기사를 가지고 다시 찾아오겠습니다. 여러분은 읽고 싶어하실 것입니다. 그때까지 Tecmint에 계속 관심을 갖고 연결해 주시기 바랍니다. 아래 댓글 섹션에 귀중한 피드백을 제공하는 것을 잊지 마세요.