操作数据表中的记录
插入(insert):
insert users values(null,'Tom','123',25,1);
insert 插入记录时省略列名称的话,赋值时要与列数目对应
给自动标号的列(如id列 )可赋值NULL 或 DEFAULT
mysql> create table users(
-> id smallint unsigned AUTO_INCREMENT PRIMARY KEY,
-> username varchar
-> (20) not null,
-> password varchar(20) not null,
-> age tinyint unsigned not null default 15,
-> sex BOOLEAN
-> );
Query OK, 0 rows affected
插入操作
mysql> INSERT users values(null,'厄加特','123456',default,1);
Query OK, 1 row affected
mysql> INSERT users values(default,'魔法少女','123456',default,1);
Query OK, 1 row affected
mysql> INSERT users (username,password,sex) values('小红','123456liu',0);
Query OK, 1 row affected
第二种insert插入方法(此方法可使用子查询SubQuery):
insert 表名 set 属性=值,属性=值;(此方法一次只能插入一条数据)
mysql> INSERT users SET password='123444444',username='正义巨像';
修改操作:
mysql> UPDATE users set age =age+5;
Query OK, 4 rows affected
Rows matched: 4 Changed: 4 Warnings: 0
mysql> UPDATE users set age=age+id,sex=0;
Query OK, 4 rows affected
Rows matched: 4 Changed: 4 Warnings: 0
mysql> UPDATE users set age=age+100 WHERE id%2=0;
Query OK, 2 rows affected
Rows matched: 2 Changed: 2 Warnings: 0
删除操作
mysql> DELETE FROM users WHERE id=2;
此时如果再插入一条数据 id为最大值+1; 因为AUTO_INCREMENT 原则就是id最大值+1,;
查询操作:
可以使用as 关键字设置别名
as可以省略 但是这样当别名和表中字段相同时就会混淆
SELECT *FROM users;
mysql> SELECT username FROM users;
mysql> SELECT username as u FROM users;
+----------+
| u |
+----------+
| 厄加特 |
| 小红 |
| 正义巨像 |
| 提莫 |
| 伊泽瑞尔 |
| 伊泽瑞尔
|
| 迦娜 |
+----------+
7 rows in set
mysql> SELECT username id FROM users;
+----------+
| id |
+----------+
| 厄加特 |
| 小红 |
| 正义巨像 |
| 提莫 |
| 伊泽瑞尔 |
| 伊泽瑞尔
|
| 迦娜 |
+----------+
mysql> SELECT username FROM users WHERE age=15;
======================================================
条件查询: where
查询结果分组: group by
mysql> SELECT * FROM users GROUP BY id desc;
+----+----------+-----------+-----+------+
| id | username | password | age | sex |
+----+----------+-----------+-----+------+
| 8 | 迦娜 | 1222 | 15 | NULL |
| 7 | 伊泽瑞尔
| 1222 | 15 | NULL |
| 6 | 伊泽瑞尔 | 1222 | 15 | NULL |
| 5 | 提莫 | 1222 | 15 | NULL |
| 4 | 正义巨像 | 123444444 | 224 | 0 |
| 3 | 小红 | 123456liu | 23 | 0 |
| 1 | 厄加特 | 123456 | 21 | 0 |
+----+----------+-----------+-----+------+
查询结果分组的条件: having
mysql> SELECT * FROM users GROUP BY id desc Having id>=5;
+----+----------+----------+-----+------+
| id | username | password | age | sex |
+----+----------+----------+-----+------+
| 8 | 迦娜 | 1222 | 15 | NULL |
| 7 | 伊泽瑞尔
| 1222 | 15 | NULL |
| 6 | 伊泽瑞尔 | 1222 | 15 | NULL |
| 5 | 提莫 | 1222 | 15 | NULL |
+----+----------+----------+-----+------+
对查询结果排序
SELECT * FROM users ORDER BY age,id DESC; (先对age进行降序,结果再对id进行降序)
GROUP BY(分组排列,因此重复的值只出现一次)
ORDER BY(对所有值进行排列)
限制查询结果的返回记录数目:limit
(HAVING 和 LIMIT 不能同时使用)
mysql> SELECT * FROM users ORDER BY id desc,age asc LIMIT 3,3;
由于select返回的查询结果存放在一个集合中 所以使用limit 返回的是第四条记录开始的三条记录
如何把一个表中的记录插入到另一个表中:查找字段顺序 插入字段顺序 数据类型 要兼容
create table users3(
id smallint unsigned AUTO_INCREMENT PRIMARY KEY,
username varchar(20));
==================================
mysql> INSERT users3(id,uname) select id,username FROM users;
Query OK, 7 rows affected
Records: 7 Duplicates: 0 Warnings: 0
mysql> INSERT users3(uname) select username FROM users;
Query OK, 7 rows affected
Records: 7 Duplicates: 0 Warnings: 0
mysql> INSERT users3(uname) select username FROM users where id>4;
增删改查表中的重复单个字段/多个字段
http://www.imooc.com/wenda/detail/347991?block_id=tuijian_yw