操作数据表中的记录

2016-11-19  本文已影响0人  steamed_bun

原始表user3

CREATE TABLE user3(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
password VARCHAR(32) NOT NULL,
age TINYINT UNSIGNED DEFAULT 10,
sex BOOLEAN
);

一、插入记录

1、标准插入

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

|----如果省略掉字段名,则所有字段都要赋值
e.g.

INSERT user3 VALUES (NULL,'WANG','123',21,1);
#由于id字段是自增的故设为null ,还可以写为DEFAULT
INSERT user3 VALUES (DEFAULT,'LI','456',76-62,1);
#插入的VALUES 也可是表达式、函数等等
INSERT user3 VALUES (DEFAULT,'LI','456',76-62,1),(NULL,'DDG',md5('345'),DEFAULT,0); 
#由于age字段有DEFAULT值,故可将其设置为DEFAULT
#md5()是一个函数

**为什么sex字段要设为1 **点此
2、INSERT [INTO] t1b_name SET col_name={expr | DEFAULT},...
相比较第一种而言,此方法可以使用子查询(SubQuery),一次只能插入一条记录,并不常用
3、 INSERT [INTO] tb_name [(col_name),...] SELECT ...
此方法是将SELECT查询结果插入相应的数据表中
创建新表

CREATE TABLE test (
id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL
);

e.g.

INSERT INTO test(username) SELECT usernsme FROM user3 WHERE age > 22;
#将user3表中age大于22的记录的username插入表test中

二、更新数据表

1、更新记录(单表)

UPDATE [LOW_PRIORITY] [IGNORE] tb_reference SET col_name1={expr | DEFAULT } [,col_name2={expr | DEFAULT}]... [WHERE where_definition]

e.g.

UPDATE user3 SET age = age + 5;

在MySQL Workbench 中执行如果出现如下错误,点此,语句本身是正确的

Error Code: 1175. You are using safe update mode and you tried to update a table
 without a WHERE that uses a KEY column To disable safe mode, toggle the option in 
Preferences -> SQL Editor and reconnect.

其它e.g.

UPDATE user3 SET sex = 0 WHERE id % 2 = 0;
#将id为偶数的记录sex字段设置为0

注:priority [praɪˈɒrəti] 优先

三、删除记录

DELETE FROM tb_name [WHERE where_definition]

四、查询记录

SELOECT select_expr [,select_expr,...]
[
FROM tb_reference
[WHERE where_definition]
[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}]
]

e.g.各种查询举例--还需添加

SELECT now();#查询当前时间
SELECT username AS un FROM user3;#将username起了一个别名,结果集列名为un
SELECT id,username FROM user3 GROUP BY id DESC;#将结果集分组按照id倒序排列
SELECT sex,age FROM  user3 GROUP BY sex HAVING age > 20;
#HAVING 是GROUP BY 的条件,注意条件如果不是聚合函数(max()、min())的话
#出现的字段必须在SELECT后面 例如age字段
SELECT * FROM user3 ORDER BY age DESC,id DESC;#对结果集进行排序,条件可以是多个
SELECT * FROM user3 LIMIT 2,2;
#特别注意MySQL结果集下标是从0开始的,所以当前语句查到的是第3、4条记录

子查询&多表更新 点此
多表连接&删除 点此
|----查找全部SELECT * FROM table_name; //* 是对字段的过滤
|----自动编号AUTO _INCREMENT 需注意必须与主键配合使用。

上一篇 下一篇

猜你喜欢

热点阅读