2、添加学生信息
use school; -- 添加学生信息 insert into tb_student(`Name`,`phone`,`age`,`gender`,`classid`) values ( ‘ 张三 ‘ , ‘ 13810707322 ‘ , 20 , 1 , 1 ); insert into tb_student(`Name`,`phone`,`age`,`gender`,`classid`) values ( ‘ 李四 ‘ , ‘ 13810707324 ‘ , 19 , 1 , 2 ); -- 批量添加 insert into tb_student(`Name`,`phone`,`age`,`gender`,`classid`) values ( ‘ 王二 ‘ , ‘ 13810707325 ‘ , 18 , 1 , 2 ), ( ‘ 麻子 ‘ , ‘ 13810707323 ‘ , 23 , 1 , 1 ), ( ‘ 张三丰 ‘ , ‘ 13810707321 ‘ , 22 , 1 , 3 ), ( ‘ 张无忌 ‘ , ‘ 13810707326 ‘ , 21 , 1 , 1 ), ( ‘ 孙悟饭 ‘ , ‘ 13810707328 ‘ , 24 , 1 , 1 ), ( ‘ 孙悟空 ‘ , ‘ 13810707327 ‘ , 23 , 1 , 4 ), ( ‘ 鸣人 ‘ , ‘ 13810707329 ‘ , 25 , 1 , 1 ), ( ‘ 路飞 ‘ , ‘ 13810707320 ‘ , 26 , 1 , 2 );
3、添加学生成绩信息
-- 添加学生成绩 insert into tb_score(`course`,`score`,`stuid`) values ( ‘ 高数 ‘ , 89 , 1 ), ( ‘ 计算机 ‘ , 89 , 1 ), ( ‘ java ‘ , 89 , 1 ), ( ‘ .net ‘ , 89 , 1 );
好了,有数据了,就可以学习查询,删除,修改等操作了。
4、查询所有学生信息
1 use school; 2 -- 查询所有的学生信息 3 select * from tb_student; 4 -- 等价于,不过在数据量非常大的时候,推荐使用下面的这种查询方式。 5 select id,`Name`,`phone`,Age,gender,createdate,classid from tb_student;
结果集
你会发现,在上篇文章中,已经为createdate添加了默认约束,但这里并没有显示结果。原来的字段名称为date,后来改为了createdate。默认约束并没有保持。
alter table tb_student change createdate createdate datetime default now();
测试,添加一条数据
insert into tb_student(`Name`,`phone`,`age`,`gender`,`classid`) values ( ‘ 明哥 ‘ , ‘ 13810707322 ‘ , 20 , 1 , 1 );
结果
5、查询‘信管03’班的所有学生信息。
-- 查询信管03班的学生信息 select s.id ‘ 编号 ‘ ,s.`Name` ‘ 名字 ‘ ,s.`phone` ‘ 电话 ‘ ,s.Age ‘ 年龄 ‘ ,s.gender ‘ 性别 ‘ ,s.createdate as ‘ 入学时间 ‘ ,c.`name` as ‘ 班级名称 ‘ from tb_student s inner join tb_class c on s.classid = c.id;
从上面的sql语句可以看出,可以为字段名起别名,通过as 或者直接写别名,这点与sqlserver中类似。inner join的用法也类似。
结果
上面的结果,看起来比较乱,可以按照id进行升序排序。
use school; -- 查询信管03班的学生信息 select s.id ‘ 编号 ‘ ,s.`Name` ‘ 名字 ‘ ,s.`phone` ‘ 电话 ‘ ,s.Age ‘ 年龄 ‘ ,s.gender ‘ 性别 ‘ ,s.createdate as ‘ 入学时间 ‘ ,c.`name` as ‘ 班级名称 ‘ from tb_student s inner join tb_class c on s.classid = c.id order by s.id;
6、取前3为学生的信息。
select s.id ‘ 编号 ‘ ,s.`Name` ‘ 名字 ‘ , s.`phone` ‘ 电话 ‘ ,s.Age ‘ 年龄 ‘ ,s.gender ‘ 性别 ‘ , s.createdate as ‘ 入学时间 ‘ ,c.`name` as ‘ 班级名称 ‘ from tb_student s inner join tb_class c on s.classid = c.id order by s.id limit 3 ;
注意:取前几条数据,这里与sql server中的用法不同,在sql server中取前几条数据使用的是top,而mysql使用limit。
7、删除id=1的学生信息。
use school; -- 删除id=1的学生信息。 delete from tb_student where id = 1 ;
这样直接删除,mysql会报一个错误。
Error Code: 1451. Cannot delete or update a parent row: a foreign key constraint fails (`school`.`tb_score`, CONSTRAINT `FK_Stuid` FOREIGN KEY (`stuId`) REFERENCES `tb_student` (`id`))
可以先加上这句话,再进行删除。
use school; -- 删除id=1的学生信息。 set FOREIGN_KEY_CHECKS = 0 ; delete from tb_student where id = 1 ;
注:set FOREIGN_KEY_CHECKS = 0;取消外键检测。否则mysql会认为删除是非安全的。
9、更新所有的入学时间为空的学生信息,并设置入学时间为当前时间。
use school; -- 更新所有的入学时间为空的学生信息,并设置入学时间为当前时间 SET SQL_SAFE_UPDATES = 0 ; update tb_student set createdate = now() where isnull (createdate); select * from tb_student;
在使用mysql执行update的时候,如果不是用主键当where语句,会报如下错误,使用主键用于where语句中正常。
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
注:在修改的时候,需加上SET SQL_SAFE_UPDATES = 0 ;取消安全更新模式。如果想要提高数据库安全等级,可以在恢复回原有的设置,执行命令:SET SQL_SAFE_UPDATES = 1;
执行上面的语句,执行成功。
总结
好了,mysql中使用的增删改查就总结到这里,如果有sqlserver数据库的基础,学mysql还是很简单的。 下篇文章将介绍order by,group by等的使用。
mysql之select,insert,delete,update
标签:
查看更多关于mysql之select,insert,delete,update的详细内容...