数据的增删改查
为表中所有字段添加数据
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;
输出结果
id | username | password |
---|---|---|
3 | moon1 | 123456 |
1 | moon | 456789 |
---- | ---------- | ---------- |
mysql
SELECT * FROM users GROUP BY username;
id | username | password |
---|---|---|
2 | alex1 | 456789 |
1 | moon | 456789 |
3 | moon1 | 123456 |
使用 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;