数据的增删改查
为表中所有字段添加数据
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 userslike查询 一般都会给跟着%
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;