mysql学习4—插入、查询、删除

CREATETABLE users(

idSMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

usernameVARCHAR(20) NOT NULL,

passwordVARCHAR(20) NOT NULL,

ageTINYINT UNSIGNED NOT NULL DEFAULT 10,

sexBOOLEAN

);


*在表中,若为某子段设置为AUTO_INCREMENT,在插入时即使将此子段设为NULL,实际插入中也会按照默认的顺序赋值。

如下:

INSERTusers VALUES (NULL, 'Tom', '123', 25, 1);

INSERTusers VALUES (NULL, 'John', '456', 25, 1);

结果为

+----+----------+----------+-----+------+

| id| username | password | age | sex |

+----+----------+----------+-----+------+

| 1| Tom | 123 | 25 | 1 |

| 2| John | 456 | 25 | 1 |


插入多条记录用如下语句

INSERT uses VALUES (NULL, 'TOM', '123', 25, 1), (DEFAULT, 'John',md5('123'), 2 * 3, 1);

此处NULLDEFAULT都不影响实际ID值。

*md5('password')为函数,将存入md5值。



更新数据时,可以使用如下语句

UPDATEusers set age = age + 5 WHERE (id % 2) = 0;

*WHERE后为条件,可有可无。


删除单条数据时,可以使用如下语句

DELETEFORM users WHERE id = 5;


查询数据,可以使用如下语句

SELECT sex FROM users;

+------+

|sex |

+------+

| 1 |

| 1 |

| 1 |

| 1 |

+------+

查询分组

SELECTsex FROM users GROUP BY sex;

+------+

|sex |

+------+

| 1 |

+------+

1row in set (0.00 sec)

条件查询分组

SELECTsex FROM users GROUP BY sex HAVING age > 35;

*末尾可考虑加[ASC|DESC],默认ASC升序。DESC降序;

ERROR1054 (42S22): Unknown column 'age' in 'having clause'

因为,没有将age包含在SELECTFROM 之间。

正确方法应该是

SELECTsex , age FROM users GROUP BY sex HAVING age > 35;

+------+-----+

|sex | age |

+------+-----+

| 1 | 40 |

多条件查询排列

默认为SELECT* FROM users

需要将按id降序则

SELECT* FROM users ORDER BY id DESC;

+----+----------+----------+-----+------+

| id| username | password | age | sex |

+----+----------+----------+-----+------+

| 5| Tom | 789 | 25 | 1 |

| 4| Tom | 789 | 25 | 1 |

| 3| Tom | 456 | 25 | 1 |

| 1| Tom | 123 | 40 | 1 |

+----+----------+----------+-----+------+

4rows in set (0.00 sec)

若需要在id相同的时候,以age逆序排列则用如下语句

SELECT* FROM users ORDER BY id DESC, age DESC;

限制查询数量【默认第一条记录为0

LIMIT3; 显示查询前三条

LIMIT03;显示查询前三条

LIMIT14;显示查询26

mysql>CREATE TABLE test(

-> id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

-> username VARCHAR(20)

-> );

QueryOK, 0 rows affected (0.75 sec)


mysql>INSERT test SELECT username FROM users WHERE age >=30;

ERROR1136 (21S01): Column count doesn't match value count at row 1

mysql>INSERT test(username) SELECT username FROM users WHERE age >=30;

QueryOK, 1 row affected (0.37 sec)

Records:1 Duplicates: 0 Warnings: 0


mysql>SELECT * FROM tesx

-> SELECT * FROM tesx;

ERROR1064 (42000): You have an error in your SQL syntax; check the manualthat corresponds to your MySQL server version for the right syntax touse near 'SELECT * FROM tesx' at line 2

mysql>SELECT * FROM test;

+----+----------+

| id| username |

+----+----------+

| 1| Tom |

+----+----------+

1row in set (0.00 sec)


mysql>Ctrl-C -- exit!

Aborted

[pcrane@localhost~]$  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值