1.增
注:先创建一个表添加上需要的字段如:create table student_2(id int primary key not null,name varchar(20),age int unsigned );,表中包含了id、姓名、年龄。接下来我门要对里面的数据进行操作,比如添加这三个的具体数据。
1.1 在对应表中插入数据 :insert into 表名 [(字段名1,字段名2,字段名3)] values (字段对应的值1,字段对应的值2,对应的值3);
例如:insert into student_2 (id,name,age) values(1004,'zzzzy',24);
一开始创建的表显示为空,输入命令后出现内容。
另外可以使用简化版,如:insert into stu values(1111,'王伟',22);
2.改
update 表名 set 字段名1=新的数据值,字段名2=新的数据值 [where 条件];
当只存在id(id不能为空)需要修改该id的其他数据时,例如此时id为1014的数据其他为空值
使用updata set where,例如update stu set name='黑猴',age=22 where id=1014;
修改成功!
3.删
删除分为删除某单个数据和批量删除表的数据;
删除某一个;delete from 表名 [where 约束条件];
如删除 delete from stu where name='鸭鸭';
批量删除,如删除id在1100以下的数据:delete from stu where id<1100;
删除前:
删除后:
删除整个表的数据:DELETE FROM stu;;----------删除表里的数据,但是表仍然存在,或者TRUNCATE TABLE stu;--------清空表里的数据,但表仍然存在,而且不能加条件;
例如;delete from stu;
4.查
注:我们需要导入三个互相有关联的数据库,这里使用可视化工具Navicat进行前置准备,如:先创建三个表:
代码:
create table students(
id int auto_increment primary key,
name varchar(20),
age int,
height float,
gender char(10),
cls_id int,
is_delete int
);
create table teachers(
id int primary key,
name varchar(20)
);
create table classes(
id int primary key,
teacher_id int,
cls_content varchar(100),
cls_date datetime,
name varchar(50)
);
再对三个表插入数据:
代码:
学生表(students):
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (1, '小明', 18, 180, '女', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (2, '小月月', 18, 180, '女', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (3, '彭于晏', 29, 185, '男', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (4, '刘德华', 59, 175, '男', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (5, '黄蓉', 38, 160, '女', 1, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (6, '凤姐', 28, 150, '保密', 2, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (7, '王祖贤', 18, 172, '保密', 1, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (8, '周杰伦', 36, NULL, '男', 3, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (9, '程坤', 27, 181, '男', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (10, '刘亦菲', 25, 166, '男', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (11, '猪猪侠', 33, 162, '保密', 3, 1);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (12, '静香', 12, 180, '女', 2, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (13, '郭靖', 12, 170, '男', 3, 0);
INSERT INTO `students` (`id`, `name`, `age`, `height`, `gender`, `cls_id`, `is_delete`) VALUES (14, '周杰', 34, 176, '女', 1, 0);
教师表(teachers):
INSERT INTO `teachers` (`id`, `name`) VALUES (1, '赵老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (2, '孙老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (3, '李老师');
INSERT INTO `teachers` (`id`, `name`) VALUES (4, '周老师');
课程表(classes):
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (1, 1, '班级学生有较强的学习能力', '2024-10-01 00:00:00', 'python_01期');
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (2, 2, '班级学生比较顽皮', '2024-11-01 00:00:00', 'python_02期');
INSERT INTO `classes` (`id`, `teacher_id`, `cls_content`, `cls_date`, `name`) VALUES (3, 2, '数据结构班', '2024-11-01 00:00:00', 'data_struct_01期');
完成上序操作后进行一些基本查询(在Navicat进行操作,也可以在终端是进行操作):
(1)查询全部字段的全部数据:select * from 表名;
(2)查询部分字段的全部数据:select 字段名1,字段名2......from 表名;
(3)根据条件查询数据:select * from 表名 where 条件;
(4)多个条件的查询:条件与条件之间可以用and、or、in、between...and...来进行条件的连接
例如:
也可以在前面加上not表示否定,如:select * from students where id in (1,5,6,10);
(5)模糊查询:select * from 表名 where 字段名 like '值';
(6)去重:select distinct 字段名 from 表名;
如查询一共有几个班级:select distinct cls_id from students;
(7)按照单个字段排序:select * from 表名 order by 字段名 asc/desc;(asc升序-默认,desc降序)
按照多个字段排序:select * from 表名 order by 字段名1 asc/desc,字段名2 asc/desc;
有条件的排序:select * from 表名 where 条件 order by 字段名 asc/desc;
(8)限制查询结果的数量:limit
示例:只看前2条学生信息
select * from students limit 2;
连接查询:(涉及到两个表以上,在查询的时候至少要有一个必备的连接条件,这个必备的条件就是两个表共有的那个字段相等,而且这个字段一定在一个表里是主键,在另一个表里是外健)
1、内连接
(1)显示内连接:select 字段 from 表名1 inner join 表名2 on 两个表连接的条件 [where 条件];
示例:查看学生所在班级
select s.name,c.name from students s inner join classes c on s.cls_id=c.id;
(2)隐式内连接:select 字段 from 表名1,表名2 where 两个表连接的条件 [and 其他查询的条件];
示例:查看学生所在班级
select s.name as '名字',c.name as '班级' from students s, classes c where s.cls_id = c.id;
2、外连接
(1)左外连接:select 字段 from 表名1 left join 表名2 on 两个表连接的条件 [where 条件];------左表的数据全部查询出来,右表符合条件的查询出来
示例:查看老师所在班级(以班级为主,没有班级就没有对应的老师)
select c.name,t.name from classes c left join teachers t on c.teacher_id = t.id;
(2)右外连接:select 字段 from 表名1 right join 表名2 on 两个表连接的条件 [where 条件];------右表的数据全部查询出来,左表符合条件的查询出来
示例:查看老师所在班级(主要强调老师)
select classes.name,teachers.name from classes right join teachers on classes.teacher_id = teachers.id;
聚合函数查询:
count()-计数 sum()-求和 max()-最大值 min()-最小值 avg()-平均值
select 聚合函数名(字段名) from 表名 [where 条件];
示例:查询班级学生的平均身高
select avg(height) as '平均身高' from students;
select 分组的字段名,聚合函数名(字段名) from 表名 [group by 分组的字段名];
示例:查询班级有多少同学
select count(*) as '学生总数' from students;
子查询:查询嵌套查询(多个表连接查询)
select * from 表名 where 字段名=(select 字段名 from 表名);-------子查询的结果只有一个值
示例:查看猪猪侠所在班级的所有同学
select * from 表名 where 字段名=any(select 字段名 from 表名);--------子查询的结果有多个值,等于其中的任意一个值
示例:查看赵老师所带的学生信息
select * from 表名 where 字段名>all(select 字段名 from 表名);--------子查询的结果有多个值,大于所有值
示例:查看学生所在班级
select * from 表名 where exists (select 字段名 from 表名);------子查询如果有查询的结果,外查询就执行
示例:查看存在无老师的班级表
没有无老师所以不删除
到此这篇增删改查(数据库语句增删改查)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/53410.html