• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

【MySQL】(四)操作数据表中的记录_mysql

mysql 搞代码 7年前 (2018-06-08) 197次浏览 已收录 0个评论

mysql】(4)操作数据表中的记录

1. 插入记录INSERT

方法一:

INSERT [INTO] tbl_name [(clo_name,…)] {VALUES | VALUE} ({expr | DEFAULT},…),(…),…;

例如:

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); # 插入记录,不指定列的数目时,必须所有的字段都要赋值 INSERT users VALUES(NULL, 'Tom', '123', 25, 1); INSERT users VALUES(NULL, 'Tom2', '123', 28, 1); INSERT users VALUES(DEFAULT, 'Tom3', '111', 28, 1); # 使用数学表达式也可以添加值 INSERT users VALUES(DEFAULT, 'Tom4', '111', 3*7+2/3, 1); # 给年龄DEFAULT,会采用默认值10 INSERT users VALUES(DEFAULT, 'Tom5', '111', DEFAULT, 1); # 一次添加多条记录 INSERT users VALUES(DEFAULT, 'Tom6', '111', DEFAULT, 1), (NULL, 'Rose', md5('213'), DEFAULT, 0);

方法二:

INSERT [INTO] tbl_name SET col_name={exp | DEFAULT},…;

这个方法与第一种方式的区别在于,此方法可以使用子查询(SubQuery),此方法一次性只能插入一条记录。

例如:

INSERT users SET username='Ben', password='456';

方法三:

INSERT [INTO] tbl_name [(col_name, …)] SELECT …;

使用此方法可以将查询结果插入到指定数据表。


2. 单表更新记录UPDATE

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1 | DEFAULT} [, col_name2={expr2 | DEFAULT}] … [WHERE where_condition];

例如:

# 所有记录的年龄都加5 UPDATE users SET age=age+5; # 更新多列 UPDATE users SET age=age-id, sex=0; # 更新id为偶数的记录 UPDATE users SET age=age+10 WHERE id%2=0;

3. 单表删除记录DELETE

DELETE FROM tbl_name [WHERE where_condition];

例如:

DELETE FROM users WHERE id=6;

即使在删除后,id号不连续,那么新增的数据还是会在最大的id号加一。


4. 查询表达时解析

SELECT select_expr [, select_expr …] [FROM table_references [WHERE whrere_condition] [GROUP BY {col_name | position} [ASC | DESC],…][HAVING where_condition][ORDER BY {col_name | expr | position} [ASC | DESC], …][LIMIT {[offset,] row_count | row_count OFFSET offset}]];

每一个表达式表示想要的一列,必须至少有一个。多个烈之间以英文逗号分隔。星号(*)表示所有列。tbl_name.*可以表示命名表的所有列。查询表达式可以使用[AS] alias_name为其赋予别名。别名可用于GROUP BY,ORDER BY或HAVING字句。

例如:

# 查看MySQL版本 SELECT VERSION(); # 查看当前时间 SELECT NOW(); # 只查看前两列 SELECT id, username FROM users; SELECT username, id FROM users; SELECT users.id, users.username FROM users; SELECT id AS userid, username AS uname FROM users; # AS关键字可以省略,但是尽量写上,避免不必要的错误 SELECT id username FROM users;

字段的顺序和结果集都将影响查询出的结果集。

(1). WHERE

条件表达式

对记录进行过滤,如果没有指定WHERE字句,则显示所有记录。在WHERE表达式中,可以使用MySQL支持的函数或运算符。

(2). GROUP BY

查询结果分组

例如:

SELECT sex FROM users GROUP BY sex; # 1表示按照SELECT语句中第一个出现的字段排序 SELECT sex FROM users GROUP BY 1;

(3). HAVING

分组条件

例如:

# 当HAVING语句有age的条件时,前面的SELECT中必须出现这个age字段 SELECT sex, age FROM users GROUP BY 1 HAVING age>35; # 或者是一个聚合函数 SELECT sex, age FROM users GROUP BY 1 HAVING count(id)>=2;

(4). ORDER BY

对查询结果进行排序

例如:

# 按照id降序排列 SELECT * FROM users ORDER BY id DESC; # 同时以两个字段排序age默认升序,id降序 SELECT * FROM users ORDER BY age, id DESC;

(5). LIMIT

限制查询结果返回的数量

例如:

# 从第1条开始返回2条记录 SELECT * FROM users LIMIT 2; # 从第1条开始,偏移2条后,查询2条记录 SELECT * FROM users LIMIT 2 OFFSET 2; # 从第4条开始(从0开始计数),返回2条记录 SELECT * FROM users LIMIT 3, 2; SELECT * FROM users ORDER BY id DESC LIMIT 2, 2; CREATE TABLE test(id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20)); # 将users年龄大于30的数据插入test表 INSERT test(username) SELECT username FROM users WHERE age>=30;

版权声明:本文为博主原创文章,未经博主允许不得转载。

欢迎大家阅读《【MySQL】(四)操作数据表中的记录_mysql,跪求各位点评,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:【MySQL】(四)操作数据表中的记录_mysql

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址