插入记录:
mysql> use world;
Database changed
mysql> CREATE TABLE users(
-> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(20) NOT NULL,
-> password VARCHAR(32) NOT NULL,
-> age TINYINT UNSIGNED NOT NULL DEFAULT 10,
-> sex BOOLEAN
-> );
Query OK, 0 rows affected (0.20 sec)
mysql> #为自动编号的字段赋值;
mysql> INSERT users VALUES(NULL,'Tom','123',25,1);
Query OK, 1 row affected (0.05 sec)
mysql> INSERT users VALUES(NULL,'John','456',25,1);
Query OK, 1 row affected (0.04 sec)
mysql> INSERT users VALUES(DEFAULT,'John','456',25,1);
Query OK, 1 row affected (0.06 sec)
mysql> #可以输入表达式;
mysql> INSERT users VALUES(DEFAULT,'John','4852',3*7-5,1);
Query OK, 1 row affected (0.05 sec)
mysql> SELECT * FROM users;
+----+----------+----------+-----+------+
| id | username | password | age | sex |
+----+----------+----------+-----+------+
| 1 | Tom | 123 | 25 | 1 |
| 2 | John | 456 | 25 | 1 |
| 3 | John | 456 | 25 | 1 |
| 4 | John | 4852 | 16 | 1 |
+----+----------+----------+-----+------+
4 rows in set (0.00 sec)
mysql> SHOW COLUMNS FROM users;
+----------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | | NULL | |
| password | varchar(32) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | 10 | |
| sex | tinyint(1) | YES | | NULL | |
+----------+----------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
mysql> INSERT users VALUES(DEFAULT,'John','4852',DEFAULT,1);
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM users;
+----+----------+----------+-----+------+
| id | username | password | age | sex |
+----+----------+----------+-----+------+
| 1 | Tom | 123 | 25 | 1 |
| 2 | John | 456 | 25 | 1 |
| 3 | John | 456 | 25 | 1 |
| 4 | John | 4852 | 16 | 1 |
| 5 | John | 4852 | 10 | 1 |
+----+----------+----------+-----+------+
5 rows in set (0.00 sec)
mysql> #输入多个记录
mysql> INSERT users VALUES(DEFAULT,'John','4852',DEFAULT,1),(NULL,'Rose',md5('123'),DEFAULT,0);
Query OK, 2 rows affected (0.09 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> #md5是求哈希值;
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 25 | 1 |
| 2 | John | 456 | 25 | 1 |
| 3 | John | 456 | 25 | 1 |
| 4 | John | 4852 | 16 | 1 |
| 5 | John | 4852 | 10 | 1 |
| 6 | John | 4852 | 10 | 1 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 10 | 0 |
+----+----------+----------------------------------+-----+------+
7 rows in set (0.00 sec)
mysql> INSERT users SET username='Ben',password='456';
Query OK, 1 row affected (0.05 sec)
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 25 | 1 |
| 2 | John | 456 | 25 | 1 |
| 3 | John | 456 | 25 | 1 |
| 4 | John | 4852 | 16 | 1 |
| 5 | John | 4852 | 10 | 1 |
| 6 | John | 4852 | 10 | 1 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 10 | 0 |
| 8 | Ben | 456 | 10 | NULL |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
更新记录:
mysql> UPDATE users SET age=age+5;
Query OK, 8 rows affected (0.06 sec)
Rows matched: 8 Changed: 8 Warnings: 0
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 30 | 1 |
| 2 | John | 456 | 30 | 1 |
| 3 | John | 456 | 30 | 1 |
| 4 | John | 4852 | 21 | 1 |
| 5 | John | 4852 | 15 | 1 |
| 6 | John | 4852 | 15 | 1 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 15 | 0 |
| 8 | Ben | 456 | 15 | NULL |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
mysql> #更新多列
mysql> UPDATE users SET age=age-id,sex=0; Query OK, 8 rows affected (0.05 sec)
Rows matched: 8 Changed: 8 Warnings: 0
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 29 | 0 |
| 2 | John | 456 | 28 | 0 |
| 3 | John | 456 | 27 | 0 |
| 4 | John | 4852 | 17 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 6 | John | 4852 | 9 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 8 | Ben | 456 | 7 | 0 |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
mysql> #在更新过程中加条件;
mysql> UPDATE users SET age=age+10 WHERE id%2=0; Query OK, 4 rows affected (0.05 sec)
Rows matched: 4 Changed: 4 Warnings: 0
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 29 | 0 |
| 2 | John | 456 | 38 | 0 |
| 3 | John | 456 | 27 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 6 | John | 4852 | 19 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 8 | Ben | 456 | 17 | 0 |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
删除记录:
mysql> DELETE FROM users WHERE id=6;
Query OK, 1 row affected (0.08 sec)
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 29 | 0 |
| 2 | John | 456 | 38 | 0 |
| 3 | John | 456 | 27 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 8 | Ben | 456 | 17 | 0 |
+----+----------+----------------------------------+-----+------+
7 rows in set (0.00 sec)
mysql> INSERT users VALUES(NULL,'111','222',33,NULL);
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 29 | 0 |
| 2 | John | 456 | 38 | 0 |
| 3 | John | 456 | 27 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 8 | Ben | 456 | 17 | 0 |
| 9 | 111 | 222 | 33 | NULL |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
更新、赋予别名:
mysql> SELECT VERSION();
+------------+
| VERSION() |
+------------+
| 5.7.10-log |
+------------+
1 row in set (0.00 sec)
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2016-04-12 21:43:06 |
+---------------------+
1 row in set (0.04 sec)
mysql> SELECT 3+5;
+-----+
| 3+5 |
+-----+
| 8 |
+-----+
1 row in set (0.00 sec)
mysql> SHOW COLUMNS FROM users;
+----------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------------------+------+-----+---------+----------------+
| id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| username | varchar(20) | NO | | NULL | |
| password | varchar(32) | NO | | NULL | |
| age | tinyint(3) unsigned | NO | | 10 | |
| sex | tinyint(1) | YES | | NULL | |
+----------+----------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
mysql> SELECT id,username FROM users;
+----+----------+
| id | username |
+----+----------+
| 1 | Tom |
| 2 | John |
| 3 | John |
| 4 | John |
| 5 | John |
| 7 | Rose |
| 8 | Ben |
| 9 | 111 |
+----+----------+
8 rows in set (0.00 sec)
mysql> SELECT username,id FROM users;
+----------+----+
| username | id |
+----------+----+
| Tom | 1 |
| John | 2 |
| John | 3 |
| John | 4 |
| John | 5 |
| Rose | 7 |
| Ben | 8 |
| 111 | 9 |
+----------+----+
8 rows in set (0.00 sec)
mysql> SELECT users.id,users.username FROM users;
+----+----------+
| id | username |
+----+----------+
| 1 | Tom |
| 2 | John |
| 3 | John |
| 4 | John |
| 5 | John |
| 7 | Rose |
| 8 | Ben |
| 9 | 111 |
+----+----------+
8 rows in set (0.00 sec)
mysql> #赋予别名
mysql> SELECT id AS userId,username AS uname from users;
+--------+-------+
| userId | uname |
+--------+-------+
| 1 | Tom |
| 2 | John |
| 3 | John |
| 4 | John |
| 5 | John |
| 7 | Rose |
| 8 | Ben |
| 9 | 111 |
+--------+-------+
8 rows in set (0.00 sec)
分组:
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 29 | 0 |
| 2 | John | 456 | 38 | 0 |
| 3 | John | 456 | 27 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 8 | Ben | 456 | 17 | 0 |
| 9 | 111 | 222 | 33 | NULL |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
mysql> SELECT sex FROM users GROUP BY sex;
+------+
| sex |
+------+
| NULL |
| 0 |
+------+
2 rows in set (0.00 sec)
mysql> SELECT sex FROM users GROUP BY 1;
+------+
| sex |
+------+
| NULL |
| 0 |
+------+
2 rows in set (0.00 sec)
mysql> #分组条件:
mysql> SELECT sex,age FROM users GROUP BY age>35;
+------+-----+
| sex | age |
+------+-----+
| 0 | 29 |
| 0 | 38 |
+------+-----+
2 rows in set (0.00 sec)
mysql> #聚合函数是指返回值只有一个值的函数;
mysql> SELECT sex FROM users GROUP BY 1 HAVING count(id)>=2;
+------+
| sex |
+------+
| 0 |
+------+
1 row in set (0.00 sec)
<span id="_xhe_cursor"></span><p>
</p>
<pre class="sql" name="code">mysql> #对分组结果进行排序;
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 29 | 0 |
| 2 | John | 456 | 38 | 0 |
| 3 | John | 456 | 27 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 8 | Ben | 456 | 17 | 0 |
| 9 | 111 | 222 | 33 | NULL |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
mysql> #降序排序;
mysql> SELECT * FROM users ORDER BY id DESC;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 9 | 111 | 222 | 33 | NULL |
| 8 | Ben | 456 | 17 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 3 | John | 456 | 27 | 0 |
| 2 | John | 456 | 38 | 0 |
| 1 | Tom | 123 | 29 | 0 |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
mysql> #用两个字段进行排序;
mysql> SELECT * FROM users ORDER BY age,id DESC;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 8 | Ben | 456 | 17 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 3 | John | 456 | 27 | 0 |
| 1 | Tom | 123 | 29 | 0 |
| 9 | 111 | 222 | 33 | NULL |
| 2 | John | 456 | 38 | 0 |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
限制记录返回的数量:
mysql> SELECT * FROM users;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 1 | Tom | 123 | 29 | 0 |
| 2 | John | 456 | 38 | 0 |
| 3 | John | 456 | 27 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 8 | Ben | 456 | 17 | 0 |
| 9 | 111 | 222 | 33 | NULL |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
mysql> SELECT * FROM users LIMIT 2;
+----+----------+----------+-----+------+
| id | username | password | age | sex |
+----+----------+----------+-----+------+
| 1 | Tom | 123 | 29 | 0 |
| 2 | John | 456 | 38 | 0 |
+----+----------+----------+-----+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM users LIMIT 3,2;
+----+----------+----------+-----+------+
| id | username | password | age | sex |
+----+----------+----------+-----+------+
| 4 | John | 4852 | 27 | 0 |
| 5 | John | 4852 | 10 | 0 |
+----+----------+----------+-----+------+
2 rows in set (0.00 sec)
mysql> #记住SQL是从零开始排序的;
mysql> SELECT * FROM users LIMIT 2,2;
+----+----------+----------+-----+------+
| id | username | password | age | sex |
+----+----------+----------+-----+------+
| 3 | John | 456 | 27 | 0 |
| 4 | John | 4852 | 27 | 0 |
+----+----------+----------+-----+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM users ORDER BY id DESC;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 9 | 111 | 222 | 33 | NULL |
| 8 | Ben | 456 | 17 | 0 |
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 5 | John | 4852 | 10 | 0 |
| 4 | John | 4852 | 27 | 0 |
| 3 | John | 456 | 27 | 0 |
| 2 | John | 456 | 38 | 0 |
| 1 | Tom | 123 | 29 | 0 |
+----+----------+----------------------------------+-----+------+
8 rows in set (0.00 sec)
mysql> SELECT * FROM users ORDER BY id DESC LIMIT 2,2;
+----+----------+----------------------------------+-----+------+
| id | username | password | age | sex |
+----+----------+----------------------------------+-----+------+
| 7 | Rose | 202cb962ac59075b964b07152d234b70 | 8 | 0 |
| 5 | John | 4852 | 10 | 0 |
+----+----------+----------------------------------+-----+------+
2 rows in set (0.00 sec)
mysql> #可以把选择的部分放到另一张表里面;
mysql> CREATE TABLE test(
-> id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(20)
-> );
Query OK, 0 rows affected (0.25 sec)
mysql> SELECT * FROM test;
Empty set (0.00 sec)
mysql> INSERT test(username) SELECT username FROM users WHERE age>=30;
Query OK, 2 rows affected (0.06 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM test;
+----+----------+
| id | username |
+----+----------+
| 1 | John |
| 2 | 111 |
+----+----------+
2 rows in set (0.00 sec)