操作数据表中的记录

回顾和概述

默认约束和非空约束不存在表级约束,只能为列级约束

主键约束,唯一约束,外键约束即存在表级约束,也存在列级约束

![上节课内容回顾][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]

时间: 2024-12-19 19:14:48

操作数据表中的记录的相关文章

操作数据表中的记录——SELECT (where表达式、GROUP BY、HAVING、LIMIT)

原文链接:http://www.ifyao.com/2015/01/26/%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%AE%B0%E5%BD%95-select-where%E8%A1%A8%E8%BE%BE%E5%BC%8F%E3%80%81group-by%E3%80%81having%E3%80%81limit/ 操作数据表中的记录——SELECT一.查找记录1.语法: SELECT select_e

MYSQL操作数据表中的记录

36:操作数据表中的记录插入记录  UPDATE更新记录(单表更新)  DELETE删除记录(单表删除)

MySQL学习14:操作数据表中的记录(二)

四查询记录 MySQL数据库中对于数据表中的记录最常用的就是记录的查询,操作数据表中的记录大都是记录的查询.查找 记录的语法结构为: SELECT select_expr [,select_expr ...] [ FROM table_refereneces [WHERE where_condition] [GROUP BY {col_name | position } [ASC | DESC],...] [HAVING where_condition] [ORDER BY {col_name

MySQL学习笔记-操作数据表中的记录

MySQL学习笔记-操作数据表中的记录 1.插入记录 INSERT INSERT [INTO] tbl_name [(col_name,...)] {VAULES|VALUE} ({expr|DEFAULT},...),(...),... 例,插入单条记录: mysql> USE testDatabase changed mysql> CREATE TABLE users(    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,   

MySQL学习13:操作数据表中的记录(一)

操作MySQL数据库中的数据表的记录包括:记录的插入.记录的修改.记录的删除和记录的查询.简单来说.就 是数据表中的记录的增删改查. 一插入记录 MySQL数据库中的数据表的记录的插入包括三种形式,在前面我们操作数据表的时候就已经使用过记录的插入. 那只是我们最常使用的一种方式而已,接下来我们来看看记录的三种插入方式: (1)INSERT命令 MySQL数据库中的数据表中插入记录的第一种语法格式,也是最常用的一种语法格式为: INSERT [INTO] table_name [(col_name

MySQL(四) —— 操作数据表中的记录

插入记录 INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... //法二:区别在于,此方法可以使用子查询(SubQuery) INSERT [INTO] tbl_name SET col_name={expr|DEFAULT},... //法三:此方法可以将查询结果插入到指定数据表 INSERT [INTO] tbl_name [(col_name,...)] SELEC

【MySQL】(4)操作数据表中的记录

1. 插入记录INSERT 方法一: INSERT [INTO] tbl_name [(clo_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...; 例如: CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, password VARCHAR(32) NOT NULL, age TI

MySQL数据库基础(三)(操作数据表中的记录)(持续更新中)

1.插入记录INSERT 命令:,expr:表达式 注意:如果给主键(自动编号的字段)赋值的话,可以赋值'NULL'或'DEFAULT',主键的值仍会遵守默认的规则:如果省略列名的话,所有的字段必须一次赋值.   INSERT SET(用的较少,一次只能插入一条记录) 命令: 插入记录INSERT SELECT 命令: 2.单表更新记录UPDATE 命令:

操作数据表中得记录

多张操作时,要这样写,不然知道指定啥.... 在HAVING 后面要么是聚合函数,要存在SELECT语句中,才行 如果 age 相同则按照  id  降序排列  它得顺序是按照0开始排序得 原文地址:https://www.cnblogs.com/wuheng-123/p/9535968.html