1  插入记录

1.1  INSERT



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



mysql操作sql记录 mysql 操作数据记录_数据库

(先创建一张数据表)

mysql操作sql记录 mysql 操作数据记录_赋值_02

(不指定列,插入一行数据,注意id主键的赋值)

mysql操作sql记录 mysql 操作数据记录_MySQL_03

(查看数据表)

mysql操作sql记录 mysql 操作数据记录_数据库_04

(再插入一条数据,并查询,可以发现id递增)

mysql操作sql记录 mysql 操作数据记录_数据库_05

(对于主键,可使用“NULL”或“DEFAULT”对其赋值)

mysql操作sql记录 mysql 操作数据记录_赋值_06

(若省略列名,则所有的列都要赋值,否则出现错误)

mysql操作sql记录 mysql 操作数据记录_数据库_07

(对于数值型数据,可以使用表达式赋值)

mysql操作sql记录 mysql 操作数据记录_mysql操作sql记录_08

(定义列的时候,我们将age设有候选值10)

mysql操作sql记录 mysql 操作数据记录_mysql操作sql记录_09

(插入数据时,将age写为DEFAULT)

mysql操作sql记录 mysql 操作数据记录_数据库_10

(查看数据表,发现age已被自动赋值为候选值10)

mysql操作sql记录 mysql 操作数据记录_数据_11

(同时,可以插入多条数据,只要逗号隔开即可,也可以使用函数)

mysql操作sql记录 mysql 操作数据记录_数据_12

(查看数据表,第七行的password是‘123’的哈希值)

1.2  INSERT SET


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


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

注:只能一次性插入一条记录,不能一次性插入多条数据。

mysql操作sql记录 mysql 操作数据记录_mysql操作sql记录_13

(使用该语句插入数值,并查看数据表)

1.3  INSERT SELECT


1 INSERT [INTO] tb1_name [(col_name,...)] SELECT...


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

五分钟开始

2  更新记录(UPDATE)

2.1  单表更新


1 UPDATE [LOW_PRIORITY] [IGNORE] tb1_name SET col_name1={expr1|DEFAULT} [,col_name2={expr2|DEFAULT}]...[WHERE where_condition]


说明:省略WHERE语句将导致所有的数据都要更新。

mysql操作sql记录 mysql 操作数据记录_MySQL_14

(将所有的“age”全部加5)

mysql操作sql记录 mysql 操作数据记录_赋值_15

(查看数据表验证,与上相比确实加5)

mysql操作sql记录 mysql 操作数据记录_数据_16

(改变多列数据且运用表达式,并查看数据表验证)

mysql操作sql记录 mysql 操作数据记录_数据库_17

(利用WHERE将id为偶数的age加10,并查看数据表)

2.2  多表更新

3  删除记录(DELETE)

3.1  单表删除


1 DELETE FROM tb1_name [WHERE where_condition]


说明:省略WHERE语句将导致所有的数据删除。

mysql操作sql记录 mysql 操作数据记录_数据库_18

(将id=6的那条数据删除,并查看数据表验证)

mysql操作sql记录 mysql 操作数据记录_数据_19

(将数据删除后,即时id号不连续,添加数据后仍以最大的id号加1为标准,而并不是去补充删除了的id号)

3.2  多表删除

4  查询表达式解析(SELECT)

4.1  FROM基础语句


1 SELECT select_expr [,select_expr...]
2 [
3     FROM ta1_name
4     [WHERE where_condition]
5     [GROUP BY {col_name | position} [ASC | DESC],...]
6     [HAVING where_condition]
7     [ORDER BY {col_name | expr | position} [ASC | DESC],...]
8     [LIMIT {[offset,] row_count | row_count OFFSET offset}]
9 ]


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

mysql操作sql记录 mysql 操作数据记录_mysql操作sql记录_20

(查看数据表中有多少列)

mysql操作sql记录 mysql 操作数据记录_赋值_21

(返回数据表的id和username列,列的顺序是按照程序的顺序“id,username”排列的)

mysql操作sql记录 mysql 操作数据记录_赋值_22

(tb1_name.*可以表示命名表的所有列,适用于后期学习的数据表连接)

mysql操作sql记录 mysql 操作数据记录_MySQL_23

(可以使用 [AS] alias_name为其赋予别名,AS可以省略但是不建议)

4.2  WHERE语句进行条件查询

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

mysql操作sql记录 mysql 操作数据记录_MySQL_24

(将id为偶数的id、username显示)

mysql操作sql记录 mysql 操作数据记录_数据库_25

(将id大于2的数据输出)

mysql操作sql记录 mysql 操作数据记录_mysql操作sql记录_26

(将id大于2或者小于1的数据输出,注意OR语句)

mysql操作sql记录 mysql 操作数据记录_数据库_27

(将id大于2并且password等于123的数据输出,注意AND语句)

mysql操作sql记录 mysql 操作数据记录_数据库_28

(将username为T开头的数据检索出来)

mysql操作sql记录 mysql 操作数据记录_数据库_29

(注意与上式的区别:‘%’是任意字符,‘_’是单个字符)

4.3  GROUP BY对查询结果分组

mysql操作sql记录 mysql 操作数据记录_mysql操作sql记录_30

(当前数据表中的所有数据)

mysql操作sql记录 mysql 操作数据记录_mysql操作sql记录_31

(对数据中的“sex”分组,结果为:NULL和0)

4.4  HAVING设置分组条件

mysql操作sql记录 mysql 操作数据记录_数据_32

(分组时,要么HAVING后的指数在SELECT内(第二条语句),要么是聚合函数的形式(第三条语句),否则将会出现错误(第一条语句))

4.5  ORDER BY对查询结果排序

mysql操作sql记录 mysql 操作数据记录_数据库_33

(普通:遵循了记录的插入顺序)

mysql操作sql记录 mysql 操作数据记录_赋值_34

(按照插入的倒序排列)

mysql操作sql记录 mysql 操作数据记录_数据库_35

(按照age从小大到大排序(默认ASC正序))

mysql操作sql记录 mysql 操作数据记录_MySQL_36

(按照age从大到小排序)

可以根据多个数据排序,如:


1 SELECT * FROM users ORDER BY age,id;//对于age相同的值,根据id排序


4.6  LIMIT限制查询数量

mysql操作sql记录 mysql 操作数据记录_MySQL_37

(第一种语法结构:返回前5条数据)

mysql操作sql记录 mysql 操作数据记录_数据_38

(第二种语法结构:返回从5开始的2条数据)

mysql操作sql记录 mysql 操作数据记录_mysql操作sql记录_39

(相应的,可以多条语句组合使用)