您的位置:永利集团登录网址 > 计算机教学 > (五)操作数据表中的记录

(五)操作数据表中的记录

2019-12-09 07:27

【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 ...;

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

  1. 单表更新记录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;

 

  1. 单表删除记录DELETE

DELETE FROM tbl_name [WHERE where_condition];

例如:

 

DELETE FROM users WHERE id=6;

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

  1. 查询表达时解析

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;

1. 插入记录INSERT 方法一: INSERT [INTO] tbl_name [(clo_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...; 例如: CR...


INSERT

1、插入记录INSERT

插入记录
INSERT [INTO] tbl_name [(col_name,……)] {VALUES | VALUE} ({expr | DEFAULT},……),(……),……

创建一张新的数据表“users”用于演示:

图片 1

如果不指定字段,就要为所有字段赋值,而“id”字段是自动赋值,因此可以将其赋值为“NULL”或“DEFAULT”,都可以维持原有自增的编号:

图片 2

  其次,记录除了直接填入值之外,还可以写入表达式;而且对于有默认值的字段,可以使用“DEFAULT”来获取默认值,同时可以一次性插入多条记录:

图片 3


1.插入记录:

2、插入记录INSERT SET/SELECT

插入记录
INSERT [INTO] tbl_name SET col_name = {expr | DEFAULT},……
与上一方法的区别在于此方法可以使用子查询(SubQuery),但该方法一次只能插入一条记录。

由于“age”字段有默认值,因此可以不写入值:

图片 4

插入记录
INSERT [INTO] tbl_name [(col_name,……)] SELECT ……
此方法可以将查询结果插入到指定数据表。

创建一张新数据表“test”用于存放查询结果,将“users”数据表中年龄大于等于20岁的用户添加至“test”数据表中:

图片 5

注意保证字段的匹配,例如“test(username)”


INSERT [INTO] tbl_name [(col_name,...)] {VALUES|VALUE} ({expr|DEFAULT})

3、单表更新记录UPDATE

更新记录
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [,col_name2={expr2|DEFAULT}]……[WHERE where_condition]
如果不添加“[WHERE where_condition]”将更新该表中所有记录。

修改数据表“users”的用户年龄为“age-id”的数值,同时修改用户的密码为初始密码:

图片 6

图片 7

将“id”为偶数的用户的年龄增加10岁:

图片 8


//自动排列的字段,可以使用default或null来使用自动排列;

4、单表删除记录DELETE

删除记录
DELETE FROM tbl_name [WHERE where_condition]
如果不添加“[WHERE where_condition]”将更新该表中所有记录。

例如删除“id”为4的用户记录:

图片 9


2.

5、MySQL查询表达式解析

查找记录
SELECT select_expr [,select_expr ……]
[
  FROM tbl_references
  [WHERE where_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 , ORDRE BY或HAVING子句;
查询返回的结果是虚拟表,与实际存储的数据表无关。

之前都是以“SELECT * FROM tbl_name”来查看所有列,其实可以只查看指定的字段,且根据指定字段的顺序来确定最终显示的顺序:

图片 10

数据表实际的排列顺序是“id”字段在前

为字段添加数据表的名称是为了日后进行多表查询时,可以清晰地辨别该字段隶属于哪一张数据表:

图片 11

有时为了简化字段名或其他需要会使用别名:

图片 12

虽然“AS”可以省略,但建议在使用别名时予以保留

<br />
<br />

INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},...

WHERE语句进行条件查询

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

例如查找“id”为6的用户记录:

图片 13

<br />
<br />

说明:与第一种方式区别在于,此方法可以使用子查询(subQuray)。

GROUP BY语句对查询结果分组

查询结果分组
[GROUP BY {col_name | position} [ASC | DESC],……]
其中“ASC”为默认升序,而“DESC”为降序。

例如以年龄升序为依据将用户进行分组:

图片 14

<br />
<br />

3.

HAVING语句设置分组条件

分组条件
[HAVING where_condition]
必须保证分组条件的字段出现在SELECT语句中,或者在聚合函数(AVG、COUNT、MAX、MIN、SUM……)内。

例如将年龄大于15岁的用户按照升序进行分组:

图片 15

<br />
<br />

INSERT [INTO] tbl_name [(col_name,...)] SELECT ...

ORDER BY语句对查询结果排序

对查询结果进行排序
[ORDER BY {col_name | expr | position} [ASC | DESC],……]

例如按照“id”降序排列所有记录:

图片 16

<br />
<br />

说明:此方法可以将查询结果插入到指定数据表。

LIMIT语句限制查询数量

限制查询结果返回的数量
[LIMIT {[offset,] row_count | row_count OFFSET offset}]

从数据表起始位置开始显示2条记录:

图片 17

当按照“id”降序排序时,从第2条记录开始,显示2条记录:

图片 18

注意,记录是从第0条开始排序,且跟“id”等字段无关。


2.单表更新记录UPDATE

6、操作数据表记录的SQL语句汇总:

  • 插入记录INSERT
    INSERT [INTO] tbl_name [(col_name,……)] {VALUES | VALUE} ({expr | DEFAULT},……),(……),……

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

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

  • 单表更新记录UPDATE
    UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1|DEFAULT} [,col_name2={expr2|DEFAULT}]……[WHERE where_condition]

  • 单表删除记录DELETE
    DELETE FROM tbl_name [WHERE where_condition]

  • 查找记录SELECT
    SELECT select_expr [,select_expr ……]
    [
      FROM tbl_references
      [WHERE where_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}]
    ]


版权声明:欢迎转载,欢迎扩散,但转载时请标明作者以及原文出处,谢谢合作!             ↓↓↓

更新记录(单表更新)

UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={espr1|DEFAULT} [col_name]...

3.单表删除记录DELETE

删除记录:

DELETE FROM tbl_name [WHERE ....]

4.查询表达式解析:

查找记录:

SELECT select_expr [,select_expr...]

[

FROM table_references

[WHERE]

[GROUP]

[HAVING]

[ORDER BY]

[LIMIT]

]

查询表达式:

每一个表达式表示想要的一列,必须有至少一个。

多个列之间以英文都好分割。

星号(*)表示所有列。tbl_name.*可以表示命名表的所有列。

查询表达式可以使用[AS] alias_name 为其赋予别名。

别名可用于GROUP BY, ORDER BY或HAVING子句。

5.条件表达式WHERE,

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

6.GROUP BY

查询结果分组:

[GROUP BY {col_name | position} [ASCDESC],...]

SELECT sex FROM users3 GROUP BY sex;

7.HAVING

分组条件

[HAVING whe]

SELECT sex,age FROM users3 GROUP BY 1 HAVING age >35;

使用聚合函数:

SELECT sex FROM users3 GROUP BY 1 HAVING count(id) >=2;

对sex的值得范围进行指定;

8.ORDER BY

对查询结果进行排序

[ORDER BY {col_name|}]

SELECT * FROM users3 ORDER BY id DESC;

(DESC(降序)|ASC(升序))默认是升序。

9.LIMIT

限制查询结果返回的数量:

SELECT * FROM users3 LIMIT 2;

SELECT * FROM users3 LIMIT 3,2;(前一个数字是位置,后一个是数量)

10.INSERT

插入记录:

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

11.LIMIT

限制查询结果返回的数量:

[LIMIT {[offset,] row_count|row_count OFFSET offset}]

本文由永利集团登录网址发布于计算机教学,转载请注明出处:(五)操作数据表中的记录

关键词: