原始表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 需注意必须与主键配合使用。