操作数据表中的记录

Posted 姚佳伟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作数据表中的记录相关的知识,希望对你有一定的参考价值。

回顾和概述

默认约束和非空约束不存在表级约束,只能为列级约束
主键约束,唯一约束,外键约束即存在表级约束,也存在列级约束
![上节课内容回顾][1]
约束划分
1,功能 非空约束 not null
主键约束 primary key
唯一约束 unique key
外键约束 foreign key
默认约束 default
2,个数 表级约束 foreign key unique key primary key
列级约束 not null default
更改
1,对字段的更改: 重命名 删除 增加 数据类型更改 约束添加 删除 更改
2,对表的更改 : 重命名 删除

插入记录INSERT

insert插入记录
INSERT [INTO] table_name [(column_name,…)] {VALUES|VALUE} ({expr|DEFAULT},…),(…),…;
/**
column_name 表示列名
expr 表示表达式
DEFAULT 可直接书写,表示默认值
当字段有自动增加的属性后,在插入表的所有字段的数据时,可以填写 NULL 或 DEFAULT 这两个关键字,表示按照原先默认自动增长的属性
插入多行数据时,可以用逗号隔开
*/
Eg:
INSERT INTO table_name VALUE(DEFAULT,’BeforeDayBreak’,md5(‘123’),DEFAULT,0),(NULL,’Superman’,md5(‘123’),DEFAULT,0);
![此处输入图片的描述][2]
插入数据:
1、可以给自动编号字段赋值:NULL或者DEFAULT
2、有默认值的字段可以赋值:DEFAULT获取默认值
3、value里面可以使用函数或者表达式
4、INSERT 表名(字段1,字段2……)VALUES(值1,值2……),(值3,值4……)
INSERT [INTO] tablename [(col_name1,col_name2…)] {VALUES|VALUE} ({expr|DEFAULT|fuc},…) ,(…)…
插入数据可以是函数或者表达式
自动编号的默认值(可遵守默认递增):NULL或DEFAULT
默认值可以直接插入DEFAULT
省略列名,必须依次赋值

CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) NOT NULL,
password VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED NOT NULL DEFAULT 10,
sex BOOLEAN
); //创建表users//

INSERT TABLE users VALUES(NULL,’Tom’,’123’,25,1); //插入数据,此处要将每一项赋值//
SELECT * FROM users; //查看表格内容//
INSERT TABLE users VALUES(NULL,’John’,’456’,25,1);
INSERT TABLE users VALUES(DEFAULT,’Rose’,’789’,25,0); //AUTO_INCREMENT项可以这样写//
INSERT TABLE users VALUES(NULL,’Tom’,’456’,3*7-5,0); //age行可用算式写法//

SELECT * FROM users;
SHOW COLUMNS FROM users;

INSERT TABLE users VALUES(NULL,’Tom’,’456’,DEFAULT,1); //默认选项的写法可以如左边所示//

INSERT TABLE users VALUES(NULL,’Rose’,’123’,3*7-5,1),(NULL,’Tom’,’456’,DEFAULT,1); //连续插入多个数据的方式//
![插入记录时主键字段可以插入null或default让它自增][3]
insert插入记录
INSERT [INTO] table_name [(column_name,…)] {VALUES|VALUE} ({expr|DEFAULT},…),(…),…;
/**
column_name 表示列名
expr 表示表达式
DEFAULT 可直接书写,表示默认值
当字段有自动增加的属性后,在插入表的所有字段的数据时,可以填写 NULL 或 DEFAULT 这两个关键字,表示按照原先默认自动增长的属性
插入多行数据时,可以用逗号隔开
*/
Eg:
INSERT INTO table_name VALUE(DEFAULT,’BeforeDayBreak’,md5(‘123’),DEFAULT,0),(NULL,’Superman’,md5(‘123’),DEFAULT,0);
插入记录
INSERT [INTO] tbl_name [(col_name,…)] {VALUES | VALUE} ({expr | DEFAULT}, …), (…), …
*对于递增(AUTO_INCREMENT)的列,可以使用NULL和DEFAULT两种关键字进行处理!
*省略列名的话,所有的值必须依次赋值!
*插入的值可以是字符表达式, 函数!
例子:
表结构:
| users | CREATE TABLE users (
id smallint(5) unsigned NOT NULL AUTO_INCREMENT,
username varchar(20) NOT NULL,
password varchar(20) NOT NULL,
age tinyint(3) unsigned NOT NULL DEFAULT ‘10’,
sex tinyint(1) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 |
—–>
NULL: INSERT users VALUES(NULL, ‘Tom’, ‘123’, 25, 1);
DEFAULT1: INSERT users VALUES(DEFAULT, ‘John’, ‘456’, 25, 1);
DEFAULT2: INSERT users VALUES(DEFAULT, ‘Tom’, ‘123’, default, 1);
EXPRESSION : INSERT users VALUES(NULL, ‘Tom’, ‘123’, 3*7-5, 1);
MULTIPLE : INSERT users VALUES(NULL, ‘Tom’, ‘123’, 3*7-5, 1), (NULL, ‘Rose’,md5(‘123 ‘), DEFAULT, 0);
tinyint 占用1字节
表示非负: 0–>255
无符号表示:-128–>127
举例表示人的年龄就可以用:age tinyint;

smallint 占用2字节
表示非负:0–>2^16-1 既 0到65535
无符号表示:-2^15–>2^15-1
举例表示乌龟的年龄:agewg smallint;

int 占用4字节
表示非负 0–>2^32-1 既 零到四十二亿九千万
无符号表示:-2^31–>2^31-1
举例表示恐龙化石年龄:agekl int;

bigint 占用8字节
表示非负 0–>2^64-1 这已经是天文数字了,能表示 18后面17个零那么大的数字
无符号表示:-2^63–>2^63-1
bigint比较占用空间,一般都不用。
举例表示宇宙年龄:ageyz bigint;

插入记录INSERT SET-SELECT

前面说的insert [column_name]values(…)[,(…),(….)];的方法比较常用,可以一次性插入多条记录,并且可以输入表达式甚至是函数
但是无法进行子查询
insert tb_name set column_name={expr|default}的方法是可以进行子查询,但是只能插入一条记录

第三种insert方法
insert table_name [(colname…)] select…..
这种方法就是把查询到的结果插入到指定数据表中
insert的第二种方法:
INSERT [INTO] tb1_name SET col_name={expr|DEFAULT},……
说明:与第一种方式的区别在于,此方法可以使用子查询(SubQuery);且只能一次性插入一条记录
例:INSERT users SET username=’Ben’,password=’456’;
insert into 表名 values (null 或default ,值2, 值3,…),(null或default,值3,值4,….)….;
insert 表名 (字段1,字段2,….) values ( 值1,值2,…),(值3,值4,…);

insert 表名 set 字段1=值1, 字段2=值2,… ;

insert 表名 select ….. 将查询出来的值 插入到表中
插入第三种方法,可以将查询结果插入到制定数据表
13.2.4.1. INSERT … SELECT语法
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,…)]
SELECT …
[ ON DUPLICATE KEY UPDATE col_name=expr, … ]
使用INSERT…SELECT,您可以快速地从一个或多个表中向一个表中插入多个行。

示例:

INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
使用INSERT…SELECT语句时会出现以下情况:

· 明确地指定IGNORE,用于忽略会导致重复关键字错误的记录。

· 不要同时使用DELAYED和INSERT…SELECT。

· INSERT语句的目标表会显示在查询的SELECT部分的FROM子句中。(在有些旧版本的mysql中不会出现这种情况。)

· AUTO_INCREMENT列照常运行。

· 为了确保二进制日志可以被用于再次创建原表,MySQL不允许在INSERT…SELECT运行期间同时进行插入操作。

· 目前,您不能在向一个表插入的同时,又在一个子查询中从同一个表中选择。

在ON DUPLICATE KEY UPDATE的值部分中,只要您不使用SELECT部分中的GROUP BY,您就可以引用在其它表中的列。有一个副作用是,您必须使值部分中的非唯一列的名称符合要求。

您可以使用REPLACE替代INSERT,来覆盖旧行。对于包含唯一关键字值,并复制了旧行的新行,在进行处理时,REPLACE可以作为INSERT IGNORE的同类子句:新行被用于替换旧行,而不是被丢弃。
![此处输入图片的描述][4]
insert。。。。。values。。。。。
inrset。。。。。。set。。。。。
insert。。。。。select(后接查询语句,需要相同列数)。。。。

单表更新记录UPDATE

单表更新:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={exp1|DEFAULT}[,col_name2=…][WHERE where_condition] 【一般来说要用WHERE指定位置,不然所有数据都会被更新】
例:
不指定位置:UPDATE users set age = age + 5,sex = 0; 使表里所有记录的age加5
指定位置: UPDATE users set age = age+ + 10 WHERE id % 2=0; 取id为偶数的位置
update更新数据
update <表名>
set <列名>=<表达式>,[,<列名>=<表达式>]…
[where <条件>];
![此处输入图片的描述][5]
1、更新记录UPDATE,有两种方式,单表和多表
2、单表更新:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={exp1|DEFAULT}[,col_name2=…][WHERE where_condition] 【一般来说要用WHERE指定位置,不然所有数据都会被更新】
3、如:
不指定位置:UPDATE users set age = age + 5,sex = 0; 使表里所有记录的age加5
指定位置: UPDATE users set age = age+ + 10 WHERE id % 2=0; 取id为偶数的位置
更新记录
UPDATE table_name SET col_name1={expression|DEFAULT},[col_name2=(expression|DEFAULT)],….. [WHERE where_condition];(如果不指定WHERE则全表更新)
例:UPDATE users SET age=age+3;
UPDATE users SET age=25 WHERE age%2=0;
![此处输入图片的描述][6]
更新/修改记录
语法 : update 表名 set 字段1=新值1,字段2=新值2,….; 更新字段对应的全部记录
update 表名 set 字段1=新值1,字段2=新值2,….where 条件 ; 值更改对应条件的记录
![更新记录UPDATE][7]
.单表更新:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={exp1|DEFAULT}[,col_name2=…][WHERE where_condition] 【一般来说要用WHERE指定位置,不然所有数据都会被更新】
例:
不指定位置:UPDATE users set age = age + 5,sex = 0; 使表里所有记录的age加5
指定位置: UPDATE users set age = age+ + 10 WHERE id % 2=0; 取id为偶数的位置
update更新数据
update <表名>
set <列名>=<表达式>,[,<列名>=<表达式>]…
[where <条件>];

单表删除记录DELETE

删除表两种 单表&多表
1.单表删除
DELETE FROM 表名 (WHERE 条件)
删除后,添加记录,自动编号是已有编号的最大加1;
DELETE FROM users WHERE id=6;
![此处输入图片的描述][8]
1、删除记录DELETE:分为单表删除和多表删除
2、单表删除:DELETE FROM tbl_name [WHERE where_conditon];
3、若不添加WHERE则删除【全部记录】
删除后再插入,插入的id号从最大的往上加,而不是填补删除的。

delete from users where id=6;
insert users values (null,’111’,’222’,33,null); 删除后再插入,插入的id号从最大的往上加,而不是填补删除的。
删除记录:

DELETE FROM table_name [WHERE where_condition] 不指定条件,则该表全部记录被删除

当删除某一条记录再添加一条新记录的时候,序号为原有最大序号+1
例:DELETE FROM users ;
DELETE FROM users WHERE id=1;
![此处输入图片的描述][9]

查询表达式解析

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

SELECT 字段出现顺序影响结果集出现顺序,字段别名也影响结果集字段别名。

一、查找记录
1、语法:
SELECT select_expr [,select expr2…] 只查找某一个函数或表达式
[
FROM table_references 查询表名
[WHERE where_conditon] 查询条件
[GROUP BY {col_name|position} [ASC|DESC],…] 按某个字段进行分组,相同的只显示第一个
[HAVING where_conditon] 分组时,给出显示条件
[ORDER BY {col_name|expr|position} [ASC|DESC],…] 排序
[LIMIT {[offset,]row_count|row_count OFFSET offset}] 限制返回数量
}
2、查询表达式的顺序会影响结果顺序
每个表达式表示想要的一列,必须有至少一个
多个列直接以英文逗号分隔
星号*表示所有列
3、使用tbl_name.col_name来表示列记录,这多表查询时可以区别开同名的列
4、使用[AS] alias_name为其赋予别名,别名可以用于GROUP BY、ORDER BY或HAVING子句,例如SELECT id AS userId,username AS uname FROM users; 这样查询出来的结果会用别名表示
每一个表达式表示想要的一列,必须有最少一个。
多个列之间以英文逗号分隔
星号()表示所有列,tb1_name.可以表示命名表的所有列
查询表达式可以使用[AS] alias_name 为其赋予别名
别名可用于GROUP BY,ORDER BY或者HAVING子句
![此处输入图片的描述][10]
select占80%的使用(很重要)
select version();
select database();
select now();
select 表达式;(只是计算表达式返回结果不会依赖某个表)
select columns from 表:
select 字段,字段,.. from 表;(selecth后面指定的字段名影响返回结果的先后顺序)
select 表1.字段,表2.字段.. from 表;
select id AS userid, 字段 as 字段别名…. from 表。 (as对字段别名返回结果,不加AS后面的会默认是别名)
![此处输入图片的描述][11]
SELECT语句占据了操作数据表语句中很大的比例。所以非常重要
一、查找记录
1、语法:
SELECT select_expr [,select expr2…] 只查找某一个函数或表达式(字段名)
[
FROM table_references 查询表名
[WHERE where_conditon] 查询条件
[GROUP BY {col_name|position} [ASC|DESC],…] 按某个字段进行分组,相同的只显示第一个
[HAVING where_conditon] 分组时,给出显示条件
[ORDER BY {col_name|expr|position} [ASC|DESC],…] 排序
[LIMIT {[offset,]row_count|row_count OFFSET offset}] 限制返回数量
}
2、查询表达式的顺序会影响结果顺序
每个表达式表示想要的一列,必须有至少一个
多个列直接以英文逗号分隔
星号*表示所有列
3、使用tbl_name.col_name来表示列记录,这多表查询时可以区别开同名的列
4、使用[AS] alias_name为其赋予别名,别名可以用于GROUP BY、ORDER BY或HAVING子句,
例如:SELECT id AS userId,username AS uname FROM users; 这样查询出来的结果会用别名表示
SELECT 所查询的字段的出现顺序影响结果集出现顺序,字段别名也影响结果集字段别名
SELECT username,id FROM users;//字段顺序影响结果顺序
SELECT * FROM users;//*所有列
多表连接区分字段: SELECT users.username,users.id FROM users;
SELECT id AS userId ,username AS uname FROM users;//字段的别名将影响结果集中字段的别名,此外,不加AS和逗号,后面一项便看成了前面一项的别名存在。
SELECT select_expr [,select_expr …]
[ FROM table_references
[WHERE where_condition]
[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}]
]

where语句进行条件查询

WHERE条件:
条件表达式
对记录进行过滤, 如果没有指定WHERE子句,则显示所有记录。
在WHERE表达式中,可以使用MySQL支持的函数或运算符
![此处输入图片的描述][12]

group by语句对查询结果分组

除了查询结果加where条件外 还可以对其分组:
查询结果分组:
[group by{col_name|position} [ASC|DESC],…]
select * from users group by sex;
select * from users group by 1;(这里的一表示查询的第一个字段,这里查询所有,第一个字段就是id,也就是会按照字段进行分组)
ASC 升序默认 desc 降序
可以有多个分组,用“,”隔开
group by 有一个原则 就是select 后面的字段,没有使用聚合函数的字段,必须出现在group by 后面
![过滤分组][13]
分组
select name,id, from tb_1 group by 1或者name; 对name进行查询分组
查询结果分组:
group by{col_name|position}
select * from users group by sex;
select * from users group by 1;(这里的一表示查询的第一个字段,这里查询所有,第一个字段就是id,也就是会按照字段进行分组)
ASC 升序默认 desc 降序

SELECT sex from users GROUP BY sex 按照sex进行分组。

having语句设置分组条件

分组条件:
利用GROUP BY 分组 添加分组条件 [HAVING where_condition]
要么为一个聚合函数,要么出现在SELECT 条件中。
[HAVING when where_condition]
SELECT sex FROM users GROUP BY 1 HAVING age > 35; //有错
SELECT sex, age FROM users GROUP BY 1 HAVING age > 35;
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;
(这条指令,指按照sex分组,分成了两组sex=0和sex=NULL,条件id数大于2的留下显示,显然sex=0个数有8>2故留下,而sex=NULL个数为1,不满足条件,故不显示。如果条件改成count(id)>=1,则会显示sex为0和NULL两个分组。)
聚合函数永远只有一个返回结果
count是记录个数的,
HAVING分组条件(在group by后面用
使用having设置分组,条件是要么保证分组条件是聚合函数,要么保证分组条件中的字段在查询中出现
分组条件:
利用GROUP BY 分组 添加分组条件 [HAVING where_condition]
条件要么为一个聚合函数,要么出现在SELECT 要查询的字段中。
[HAVING when where_condition]
SELECT sex FROM users GROUP BY 1 HAVING age > 35; //有错(原因是age没有出现在查询字段中)
SELECT sex, age FROM users GROUP BY 1 HAVING age > 35;//正确
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;
(这条指令,指按照sex分组,分成了两组sex=0和sex=NULL,条件id数大于2的留下显示,显然sex=0个数有8>2故留下,而sex=NULL个数为1,且count函数不计入NULL,不满足条件,故不显示。所以如果条件改成count(id)>=1,还是不会显示NULL分组。)
其实这个命令的工作流程就是先从表中查询字段,然后根据GROUP BY的条件对查询结果进行分组,再根据HAVING条件对分组进行筛选,最后留下满足所有条件的分组结果。
聚合函数永远只有一个返回结果
count是记录指定列的值的个数(NULL不计入)。
[HAVING when where_condition]
SELECT sex FROM users GROUP BY 1 HAVING age > 35; //有错
SELECT sex, age FROM users GROUP BY 1 HAVING age > 35;
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;
(这条指令,指按照sex分组,分成了两组sex=0和sex=NULL,条件id数大于2的留下显示,显然sex=0个数有8>2故留下,而sex=NULL个数为1,不满足条件,故不显示。如果条件改成count(id)>=1,则会显示sex为0和NULL两个分组。)
聚合函数永远只有一个返回结果
count是记录个数的,
分组条件:
利用GROUP BY 分组 添加分组条件 [HAVING where_condition]
要么为一个聚合函数,要么出现在SELECT 条件中。
[HAVING when where_condition]
SELECT sex FROM users GROUP BY 1 HAVING age > 35; //有错
SELECT sex, age FROM users GROUP BY 1 HAVING age > 35;
SELECT sex FROM users GROUP BY 1 HAVING count(id) >= 2;
聚合函数永远只有一个返回结果

order by语句对查询结果排序

order by
对查询结果进行排序,默认是升序
order by{col_name}
select * from users order by id desc; //对一个字段排序
select * from users order by age,id desc; //两个字段同时排序
desc是降序
1、对查询结果进行排序:[ORDER BY [col_name | expr | position } [ASC|DESC],…]elect * from user order by id desc;
2、可以同时按多条字段进行排序,规则是先按前面的字段排,在基础上再按后面字段排。
3、如:SELECT * FROM users ORDER BY age,id DESC; 先按照age排序,如果age有重复的,重复的字段里按id排序
![对查询结果进行排序order by][14]
![对查询结果进行排序order by - 操作][15]
1、对查询结果进行排序,默认是升序,DESC为降序:[ORDER BY {col_name | expr | position} [ASC|DESC],…]
2、可以同时按多条字段进行排序,规则是先按前面的字段排,在基础上再按后面字段排。
3、如:SELECT * FROM users ORDER BY age,id DESC; 先按照age排序,如果age有重复的,重复的字段里按id排序

limit语句限制查询数量

将查询出的数据插入到指定表的指定字段中,支持多条数据:
insert table_name(column_name) select column_name from table_name1;
例:INSERT test(username) SELECT username FROM users WHERE age >=30;

这是INSERT的第三种方法,与前两种相比,这种方法是使用了子选择,这样就相当于将A表中满足条件的数据导入了B表,无需手动写了。
![此处输入图片的描述][16]
(1)SELECT * FROM users LIMIT 2; // 一个数字限制查询结果数量为 2 条
(2)SELECT * FROM users LIMIT 2,3 ;从第三个开始(第一个为0),返回三条。
(3)第三种insert,数据从一个表插入到另一个表:
INSERT test SELECT username FROM users WHERE age >=30; // 字段不匹配提示
INSERT test(username) SELECT username FROM users WHERE age >=30;
这是INSERT的第三种方法,与前两种相比,这种方法是使用了子选择,这样就相当于将A表中满足条件的数据导入了B表,无需手动写了
mysql分页要用到:
[LIMIT{[offset,]row_count|row_count OFFSET offset}]
![此处输入图片的描述][17]
insert test select username from users3 where age>=30;
1、限制查询结果返回的数量:[LIMIT {[offset,] row_count|row_count OFFSET offset}]
2、默认返回所有结果,通过LIMIT可以限制其返回指定数量的记录
3、如SELECT * FROM users LIMIT 2,3; 偏移量为2,从第三条开始,返回3条结果
4、偏移量不是按照id等字段来排序,而是按照当前查询排序的方式顺序偏移
select * from users limit 2 ;从第一条开始返回,返回前两个;
select * from users limit 3,2 ;忽略前三条,从第四条开始,取前两条;
将查询出的数据插入到指定表的指定字段中,支持多条数据:
insert table_name(column_name) select column_name from table_name1;
![insert into test(username) select username from users where age>=30;][18]
限制查询结果返回数量:
[LIMIT{[offset,]row_count|row_count OFFSET offset}]
php+mysql分页显示数据就利用了这个原理,offest为结果集起始下标,注意,下标从0开始,每页显示的数据的起始下标为(当前页数-1)*每页显示的数据数。)
(1)SELECT * FROM users LIMIT 2; // 一个数字限制查询结果数量为 2 条
(2)SELECT * FROM users LIMIT 2,3 ;从第三个开始(第一个为0),返回三条。
(3)第三种insert,数据从一个表插入到另一个表:
INSERT test SELECT username FROM users WHERE age >=30; // 字段不匹配提示
INSERT test(username) SELECT username FROM users WHERE age >=30;
这是INSERT的第三种方法,与前两种相比,这种方法是使用了子选择,这样就相当于将A表中满足条件的数据导入了B表,无需手动写了
限制查询结果返回数量:
[LIMIT{[offset,]row_count|row_count OFFSET offset}]
(php+mysql分页显示数据就利用了这个原理,offest为结果集起始下标,注意,下标从0开始,每页显示的数据的起始下标为(当前页数-1)*每页显示的数据数。)
(1)SELECT * FROM users LIMIT 2; // 一个数字限制查询结果数量为 2 条
(2)SELECT * FROM users LIMIT 2,3 ;从第三个开始(第一个为0),返回三条。
(3)第三种insert,数据从一个表插入到另一个表:
INSERT test SELECT username FROM users WHERE age >=30; // 字段不匹配提示
INSERT test(username) SELECT username FROM users WHERE age >=30;
这是INSERT的第三种方法,与前两种相比,这种方法是使用了子选择,这样就相当于将A表中满足条件的数据导入了B表,无需手动写了

小结

本章主要介绍了对数据的操作,分为四大类:增,改,删,查。

INSERT://增加记录,有三种方法。
INSERT [INTO] tbl_name [(col_name,…)] {VALUES | VALUE} ({expr|DEFAULT},…),(…),…
INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},…
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]
多表更新/…

DELETE : //删除数据
单表删除/DELETE FROM tbl_name [WHERE where_condition}
多表删除/…

SELECT: //查询
SELECT select_expr [,select_expr …]
[
FROM
WHERE
GROUP BY {col_name | position}[ASC|DESC],…
LIMIT {[offset,] row_count|row_count OFFSET offset
]
![select][19]
SELECT select_expr,[,select_expr …]
[
FROM table_references
[WHERE where_condition]
[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}]
]
记录操作://插入数据
INSERT [INTO] tbl_name [(col_name,…)] {VALUES | VALUE} ({expr|DEFAULT},…),(…),…
INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},…
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]
多表更新/…

DELETE : //删除数据
单表删除/DELETE FROM tbl_name [WHERE where_condition}
多表删除/…

SELECT: //查询
SELECT select_expr [,select_expr …]
[
FROM
WHERE
GROUP BY {col_name | position}[ASC|DESC],…
LIMIT {[offset,] row_count|row_count OFFSET offset
]
INSERT [INTO] tbl_name [(col_name,…)] {VALUES | VALUE} ({expr|DEFAULT},…),(…),…
INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},…
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]
多表更新/…

DELETE : //删除数据
单表删除/DELETE FROM tbl_name [WHERE where_condition}
多表删除/…

SELECT: //查询
SELECT select_expr [,select_expr …]
[
FROM
WHERE
GROUP BY {col_name | position}[ASC|DESC],…
LIMIT {[offset,] row_count|row_count OFFSET offset
]
![INSERT语句][20]
![Delete语句][21]
![update语句][22]
![SELECT语句][23]

以上是关于操作数据表中的记录的主要内容,如果未能解决你的问题,请参考以下文章

提效小技巧——记录那些不常用的代码片段

操作栏标签片段中的片段?

Jacoco和Tycho surefire的Eclipse RCP插件代码介绍

latex在vim中的代码片段

discuz X3.1 源代码阅读,记录代码片段

[未解决问题记录]python asyncio+aiohttp出现Exception ignored:RuntimeError('Event loop is closed')(代码片段