MySQL 5.5常用資訊函式

feelpurple發表於2016-05-28
CONNECTION_ID()
顯示連線ID(執行緒ID)

mysql> SELECT CONNECTION_ID();
+-----------------+
| CONNECTION_ID() |
+-----------------+
|              50 |
+-----------------+
1 row in set (0.00 sec)

CURRENT_USER()
顯當前客戶端連線的使用者名稱和主機名

mysql> SELECT CURRENT_USER();
+------------------+
| CURRENT_USER()   |
+------------------+
| system@localhost |
+------------------+
1 row in set (0.00 sec)

DATABASE()
顯示當前連線的資料庫名稱

mysql> SELECT DATABASE();
+--------------------+
| DATABASE()         |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

FOUND_ROWS()
顯示SELECT語句的返回行數,忽略LIMIT語句,在儲存過程裡面很有用。
SQL_CALC_FOUND_ROWS告訴MySQL計算結果集中的行數,忽略LIMIT語句,行數可以透過SELECT FOUND_ROWS()來查詢出

mysql> select * from dept;
+--------+------------+----------+
| DEPTNO | DNAME      | LOC      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
|     30 | SALES      | CHICAGO  |
|     40 | OPERATIONS | BOSTON   |
+--------+------------+----------+
4 rows in set (0.00 sec)

mysql> SELECT SQL_CALC_FOUND_ROWS * FROM dept ORDER BY 1 limit 2;
+--------+------------+----------+
| DEPTNO | DNAME      | LOC      |
+--------+------------+----------+
|     10 | ACCOUNTING | NEW YORK |
|     20 | RESEARCH   | DALLAS   |
+--------+------------+----------+
2 rows in set (0.00 sec)

mysql> SELECT FOUND_ROWS();
+--------------+
| FOUND_ROWS() |
+--------------+
|            4 |
+--------------+
1 row in set (0.00 sec)

ROW_COUNT()
在MySQL 5.5.5版本之前,ROW_COUNT()返回上一條UPDATE, DELETE,或INSERT語句的行數,對於其他語句,這個返回值沒有意義。
在MySQL 5.5.5版本,ROW_COUNT()返回下列值:
DDL語句,例如CREATE TABLE 或 DROP TABLE:0。
DML語句,例如UPDATE, INSERT, 或 DELETE,ALTER TABLE 、 LOAD DATA INFILE和SELECT * FROM table_name INTO OUTFILE 'file_name':實際影響的行。
SELECT語句:-1
SIGNAL 語句: 0

mysql> select * from t20;
+------+
| id   |
+------+
|  200 |
|  100 |
+------+
2 rows in set (0.28 sec)

mysql> insert into t20 select * from t20;
Query OK, 2 rows affected (0.20 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> SELECT ROW_COUNT();
+-------------+
| ROW_COUNT() |
+-------------+
|           2 |
+-------------+
1 row in set (0.00 sec)

SCHEMA()
顯示連線的資料庫名稱
mysql> SELECT SCHEMA();
+----------+
| SCHEMA() |
+----------+
| fire     |
+----------+
1 row in set (0.00 sec)

USER()、SESSION_USER()、SYSTEM_USER()
顯當前客戶端連線的使用者名稱和主機名

mysql> SELECT SESSION_USER();
+------------------+
| SESSION_USER()   |
+------------------+
| system@localhost |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT SYSTEM_USER();
+------------------+
| SYSTEM_USER()    |
+------------------+
| system@localhost |
+------------------+
1 row in set (0.00 sec)

mysql> SELECT USER();
+------------------+
| USER()           |
+------------------+
| system@localhost |
+------------------+
1 row in set (0.00 sec)

VERSION()
顯示資料庫版本

mysql> SELECT VERSION();
+------------+
| VERSION()  |
+------------+
| 5.5.48-log |
+------------+
1 row in set (0.00 sec)

LAST_INSERT_ID()
自增欄位執行上一次INSERT語句的值

mysql> create table test(id int auto_increment not null primary key, name varchar(15));
Query OK, 0 rows affected (0.08 sec)

mysql> desc test;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(15) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> insert into test(name) values('Neo');
Query OK, 1 row affected (0.00 sec)

mysql> insert into test(name) values('Lily');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+----+------+
| id | name |
+----+------+
|  1 | Neo  |
|  2 | Lily |
+----+------+
2 rows in set (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                2 |
+------------------+
1 row in set (0.00 sec)

mysql> insert into test(name) values('Trinity');
Query OK, 1 row affected (0.00 sec)

mysql> select last_insert_id();
+------------------+
| last_insert_id() |
+------------------+
|                3 |
+------------------+
1 row in set (0.00 sec)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26506993/viewspace-2108479/,如需轉載,請註明出處,否則將追究法律責任。

相關文章