Skip to content

数据的增删改查

为表中所有字段添加数据

mysql
insert into users (id,username,password)values(1,'moon','123456');

4.1.增

语法:INSERT INTO 表名 VALUES(值11,值2,…);

mysql
 insert into users values(null,'test','123456');

语法:INSERT INTO 表名(字段1,字段2,…)VALUES(值1,值2,…)

语法:INSERT INTO 表名 SET 字段名1=值1[,字段名2=值2,…]

举例:

mysql
INSERT INTO student SET id=4,name='zhaoliu',grade=72;

同时添加多条数据

语法:INSERT INTO 表名[(字段名1,字段名2,…)]VALUES (值1,值2,…),(值1,值2,…),

mysql

 insert into users (id,username,password)values(null,'moon','123456'),(null,'alex','123456');

INSERT INTO 表名[(字段名1,字段名2,…)]VALUES (值1,值2,…),(值1,值2,…),(值1,值2,…)

 insert into users values(null,'moon1','123456'),(null,'alex1','123456');

4.2.删

语法:DELETE FROM 表名 [WHERE 条件表达式

delete from users where id=1;

删除全部数据

方法2:若 DELETE 语句中没有使用WHERE语句,则会将表中所有记录都删除。

语法: DELETE FROM 表名

方法2: 删除全部数据的另一种方法——TRUNCATE

mysql
truncate table student  # 删除 student 表

4.3.更新

语法:UPDATE 表名 SET 字段名1=值1,[ ,字段名2=值2,…][ WHERE 条件表达式 ]

mysql

update users set password='aaaa' where id=1;

update users set password='123456',username='moon' where id=1

update users set password=456789;

4.4.查

mysql
select * from users;

#  *号代表所有的字段

查询指定的字段

mysql
select username,password from users;

按条件调节查询

按关系来查询

语法:SELECT 字段名1,字段名2,…FROM 表名 WHERE 条件表达式

in 查询

mysql
SELECT * FROM student2 WHERE id IN (1,2,3);

带 BETWEEN AND 关键字的查询

mysql
select * from users where id not between 1 and 10;

带 DISTINCT 关键字的查询

mysql
select distinct username from users

like查询 一般都会给跟着%

mysql
select * from users where username like "%m%" ;

下划线 _ 匹配一个字符

mysql
select* from users where username like "moo_"

and查询

mysql
select * from users where id=1 and username='moon';

or查询

mysql
select * from users where id=1 or username='moon';

OR 和 AND 一起使用的情况

OR 和 AND 一起使用的时候,AND 的优先级高于 OR,因此二者一起使用时,会先运算 AND 两边的表达式,再运算 OR 两边的表达式。

mysql
 select * from users where id >5 and password='123456c' or username='moon1';

聚合查询

mysql
select count(*) from users;

select count(id) from users;

# count 返回行数
参数描述
COUNT() 返回某列的行数
SUM()返回某列值的和
AVG()返回某列的平均值
MAX()返回某列的最大值
MIN()返回某列的最小值

分组查询

如果报错请在 my.ini添加

mysql
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

使用 GROUP BY 进行分组

mysql
 SELECT * FROM users GROUP BY password;

输出结果

idusernamepassword
3moon1123456
1moon456789
------------------------
mysql
 SELECT * FROM users GROUP BY username;
idusernamepassword
2alex1456789
1moon456789
3moon1123456

使用 LIMIT 限制查询结果的数量

mysql
select * from users limit 2,10;
select * from users as u where u.id=1;

为表和字段取别名

mysql
select username as myname from users;

mysql的子查询

  • where型子查询

(把内层查询结果当作外层查询的比较条件)

mysql
select * from users where id in (select id from users where id>10);
  • from型子查询

(把内层的查询结果供外层再次查询)

mysql
select * from (select username,age from users) as agev_a where age>20
select * from (select * from users where id>=10) as age_10;
(select * from users where id>=10)查询出来的是一个集合 别名为age_10
select * from age_10
  • exists型子查询

(把外层查询结果拿到内层,看内层的查询是否成立)

mysql
select * from users where EXISTS (select * from users where id>1)

联合查询(两个表的查询)

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行

UNION ALL :`查询全部 而且不会消除重复的行

union的用法及注意事项

两次查询的列数必须一致

mysql
select * from users union select *,1 from news;
CREATE TABLE `news` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) not NULL,
`content` varchar(255) not null,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

© 2023-2024 LiuJingcheng. 保留所有权利。