mysql之select,insert,delete,update
写在前面
上篇文章学习了创建数据库和数据表,这篇文章将学习对数据表的增删改查操作。
系列文章
一个例子
上篇文章中,创建了数据库和数据表,数据表中还没有数据,这里我们为三张表中添加数据进行测试。
注意:为了避免字段名或者表明与系统的某些关键字重复,可以使用``包裹字符串,与sql server中的[]类似。``在键盘上方数字键最左边的那个键(英文输入法)
1、添加四个班级信息
use school;
-- 添加班级信息
insert into tb_class(`name`) values('信管01');
insert into tb_class(`name`) values('信管02');
insert into tb_class(`name`) values('信管03');
insert into tb_class(`name`) values('信管04');
2、添加学生信息
use school;
-- 添加学生信息
insert into tb_student(`Name`,`phone`,`age`,`gender`,`classid`) values('张三','',20,1,1);
insert into tb_student(`Name`,`phone`,`age`,`gender`,`classid`) values('李四','',19,1,2);
-- 批量添加
insert into tb_student(`Name`,`phone`,`age`,`gender`,`classid`)
values
('王二','',18,1,2),
('麻子','',23,1,1),
('张三丰','',22,1,3),
('张无忌','',21,1,1),
('孙悟饭','',24,1,1),
('孙悟空','',23,1,4),
('鸣人','',25,1,1),
('路飞','',26,1,2);
3、添加学生成绩信息
-- 添加学生成绩
insert into tb_score(`course`,`score`,`stuid`)
values
('高数',89,1),
('计算机',89,1),
('java',89,1),
('.net',89,1);
好了,有数据了,就可以学习查询,删除,修改等操作了。
4、查询所有学生信息
use school;
-- 查询所有的学生信息
select * from tb_student;
-- 等价于,不过在数据量非常大的时候,推荐使用下面的这种查询方式。
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('明哥','',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的更多相关文章
- Use Select To Generate Any Insert/Delete/Update Statement
If you don't have the permission to generate script according to an existing db, but you have the re ...
- MySQL进阶10--DML数据操纵预言: insert/delete/update --多表连接修改/.多表连接删除/多表连接查询-- truncate 和 delete的区别
/* DML -- 数据操纵预言: insert/delete/update */ #一: 插入语句 /* 语法1: insert into 表名(列名,..,列名....) values(值1,值2 ...
- 带有OUTPUT的INSERT,DELETE,UPDATE
原文地址:http://blog.sina.com.cn/s/blog_71460d950100nld2.html OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可 ...
- sqlserver触发器insert,delete,update
Create Trigger [dbo].[upemployee_kefyu_sale] on [dbo].[employee] for update as if update(FullName) b ...
- sql server 带有OUTPUT的INSERT,DELETE,UPDATE
原文:sql server 带有OUTPUT的INSERT,DELETE,UPDATE OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可以看作是"返回结果 ...
- executenonquery只对insert,delete,update有效,查询select会默认返回-1
问题:cmd.ExecuteNonQuery() 方法总是返回-1 原因:ExecuteNonQuery() 方法 select 返回-1 解释:执行Select子句,数据库并无变化,自然返回-1同样 ...
- MyBatis insert/delete/update 的返回值
insert,返回值是:新插入行的主键(primary key):需要包含<selectKey>语句,才会返回主键,否则返回值为null. <insert id="inse ...
- 触发器内insert,delete,update判断执行不同的内容
create trigger tr_aon afor insert,update,delere asbegin IF EXISTS(SELECT 1 FROM inserted) AND NOT EX ...
- MySQL 详细解读undo log :insert undo,update undo
转自aobao.org/monthly/2015/04/01/ 本文是对整个Undo生命周期过程的阐述,代码分析基于当前最新的MySQL5.7版本.本文也可以作为了解整个Undo模块的代码导读.由于涉 ...
- Linq无聊练习系列7----Insert,delete,update,attach操作练习
/*********************Insert,delete,update,attach操作练习**********************************/ ...
随机推荐
- daily algorithm 判断链表是否有环
public static boolean isLoopLink(ListNode head) { if (head == null) { return false; } ListNode fast ...
- IOS开发---菜鸟学习之路--(十九)-利用NSUserDefaults存储数据
利用NSUserDefaults的可以快速的进行本地数据存储,但是支持的格式有限, 至于支持什么格式大家可以再自行脑补 我这边直接讲如何使用 NSUserDefaults 分为两部分 一个是存数据 N ...
- IOS开发---菜鸟学习之路--(八)-实现新闻页面
本章将具体讲述如何结合前两张的内容最终实现一个新闻页面的雏形 之所以称之为雏形,是因为本章实现的内容只是实现了最基础的效果 还有很多其他诸如下拉刷新 页面导航等效果都需要投入一些时间进行研究 好了直接 ...
- python实现算法: 多边形游戏 数塔问题 0-1背包问题 快速排序
去年的算法课挂了,本学期要重考,最近要在这方面下点功夫啦! 1.多边形游戏-动态规划 问题描述: 多边形游戏是一个单人玩的游戏,开始时有一个由n个顶点构成的多边形.每个顶点被赋予一个整数值, 每条边被 ...
- 文件处理之复杂,在于内置方法-----python
抛砖引玉: 文件是我们储存信息的地方,我们经常要对文件进行读.写.删除等的操作,在Python中,我们可用Python提供的函数和方法方便地操作文件. ************************ ...
- fade away
- JDBC 学习笔记(十一)—— JDBC 的事务支持
1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...
- AngularJs 特性 之 双向数据绑定
<!DOCTYPE html> <html lang="en" ng-app> <head> <meta charset="UT ...
- 【VBA】随机数
[说明] 随机数.生成2个随机数m.n,取值范围为1~R.1~C Randomize m = )) + ) ' 1~R Random Int Randomize n = )) + ) ' 1~C Ra ...
- MFC设置对话框背景和边框颜色
对于对话框,只需要重载默认的消息处理函数就行了: // 重载默认的消息处理函数,主要处理WM_MOVE WM_PAINT WM_NCPAINT WM_NCACTIVATE WM_NOTIFY这// 几 ...