MySQL教程(十一)—— 操作数据表中的记录

1  插入记录

1.1  INSERT

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

(先创建一张数据表)

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

(查看数据表)

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

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

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

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

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

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

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

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

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

1.2  INSERT SET

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

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

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

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

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语句将导致所有的数据都要更新。

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

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

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

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

2.2  多表更新

3  删除记录(DELETE)

3.1  单表删除

1 DELETE FROM tb1_name [WHERE where_condition]

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

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

(将数据删除后,即时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子句。

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

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

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

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

4.2  WHERE语句进行条件查询

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

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

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

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

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

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

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

4.3  GROUP BY对查询结果分组

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

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

4.4  HAVING设置分组条件

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

4.5  ORDER BY对查询结果排序

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

(按照插入的倒序排列)

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

(按照age从大到小排序)

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

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

4.6  LIMIT限制查询数量

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

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

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

4.7  附录

23个MySQL常用查询

MySQL查询、子查询、连接查询

posted @ 2018-02-19 20:13  祁俊辉  阅读(201)  评论(0编辑  收藏  举报