与MySQL零距离接触—操作数据表中的记录

慕课网视频笔记

插入记录INSERT:

方式1:

INSERT [INFO] tbl_name [(col_name,...)] {VALUSES|VALUE} ({expr|DEFAULT},...),(),...
insert users values(1,23,"Tom"),(2,23,"Jeo");   #同时插入两条数据

附注:如果省略列名,则需要为每个列赋值,其中如果不给自增字段赋值或者其赋值为NULL,或为其赋值为DEFAULT,都不改变其规则。INSERT users(username,passwd,age,sex) VALUES('TOM','123','25',1);这时id是自增字段,所以可以不为其赋值,或者INSERT users VALUES(NULL,'TOM','123','25',1);就是上面说的赋值为NULL时候,不改变其规则,还是1,2,3这样的自增形式。

非自增字段,我们可以这样写:INSERT users VALUES(3,'','132','22',0);这时候第二列的值就是空值了。

方式2:

INSERT [INFO] tbl_name se col_name={expr|DEFAULT},...   #与第一种方式的区别在于,此方法可以使用子查询(SubQuery),但是这种方法一次只能插入一条记录。
insert users SET username="Ben",password="456";

方式3:

-- INSERT...SELECT
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]

update users set age = age + 5;
update users set age = age - id,sex = 0;
update users set age = age + 5 where id % 2 = 0;   //id是偶数时,年龄增加。

表单删除记录DELETE:

#删除记录(单表删除)
DELETE FROM tbl_name [WHERE where_condition]
DELETE FROM users WHERE id = 6;

再插入数据时,尽管id = 6的数据删除了,但是再插入时,id是7了(对于id自增的)。

查询表达式解析:

查找记录:

SELECT select_expr [,select_expr...]
[
    FROM table_references
    [WHERE where_condition]
    [GROUP BY {col_name|position} [ASC|DESC],... ]
    [HAVONG where_condition]
    [ORDER BY {col_name|expr|positiob} [ASC|DESC], ...]
    [LIMIT {[offset,]row_conut|row_count OFFSET offset}]
]

查询表达式:

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

//bl_name.
SELECT users.id,users.username FROM users; (对于多表来说,可以很清楚对应的数据表)

//AS alias_name
SELECT id AS userId,username AS uname FROM users;(输出结果是显示userId、uname)
ELECT id username FROM users;(会输出id,但是是显示username,因为as可以省略,username作为id的别名)

WHERE语句进行条件查询:

条件表达式:对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。

在WHERE表达式中,可以使用MySQL支持的函数或运算符。

MySQL group by语句对查询结果分组:

[GROUP BY {col_name|position} [ASC|DESC],... ]   #ASC是升序,DESC是降序。

SELECT * FROM users;
//按照性别分组
SELECT sex FROM users GROUP BY sex ;
//按照位置分组 
SELECT sex FROM users GROUP BY 1;   #1是指SELECT后面跟着的第一个列名.
SELECT sex,username FROM users GROUP BY 2;   #就是指查找users中的username。
SELECT id,username,age,sex FROM users BY sex;   #推荐使用这种

HAVING语句设置分组条件:

上面GROUP BY是对所有数据做分组,但是可以利用HAVING只其中对一部分数据分组。

[HAVONG where_condition]
SELECT sex,age FROM users GROUP BY 1 HAVING age > 30 ;
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;   //看sex的值,获取相同的sex放在一个合集(组)里,合集里面的个数如果大于2个,就获取出来。

注:

  • having 和where 都是用来筛选用的。
  • having 是筛选组 而where是筛选记录。
  • 用having就一定要和group by连用。
  • 用group by不一定有having(它只是一个筛选条件用的)

order by语句对查询结果排序:

[ORDER BY {col_name|expr|positiob} [ASC|DESC], ...]   #ASC是升序,DESC是降序。
SELECT * FROM users ORDER BY id DESC;
SELECT * FROM users ORDER BY age,id DESC;   #默认是升序,如果你想进一步排序,可以用,再加上条件。 

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

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

SELECT * FROM users LIMIT 2;
SELECT * FROM users LIMIT 3,2;   #返回从3开始的两个数据,但是数据是从0开始的,所以是4,5两个数据

注:返回数量并不与id的值有关系,只是按照id顺序,从第一个开始数。

Insert into Table2(a, c, d) select a,c,5 from Table1

本章总结:

记录操作

  • INSERT
  • UPDATE
  • DELETE
  • SELECT

猜你喜欢

转载自blog.csdn.net/u014465934/article/details/80687131