写在前面

上篇文章学习了创建数据库和数据表,这篇文章将学习对数据表的增删改查操作。

系列文章

mysql之创建数据库,创建数据表

一个例子

上篇文章中,创建了数据库和数据表,数据表中还没有数据,这里我们为三张表中添加数据进行测试。

注意:为了避免字段名或者表明与系统的某些关键字重复,可以使用``包裹字符串,与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的更多相关文章

  1. 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 ...

  2. MySQL进阶10--DML数据操纵预言: insert/delete/update --多表连接修改/.多表连接删除/多表连接查询-- truncate 和 delete的区别

    /* DML -- 数据操纵预言: insert/delete/update */ #一: 插入语句 /* 语法1: insert into 表名(列名,..,列名....) values(值1,值2 ...

  3. 带有OUTPUT的INSERT,DELETE,UPDATE

    原文地址:http://blog.sina.com.cn/s/blog_71460d950100nld2.html OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可 ...

  4. sqlserver触发器insert,delete,update

    Create Trigger [dbo].[upemployee_kefyu_sale] on [dbo].[employee] for update as if update(FullName) b ...

  5. sql server 带有OUTPUT的INSERT,DELETE,UPDATE

    原文:sql server 带有OUTPUT的INSERT,DELETE,UPDATE OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可以看作是"返回结果 ...

  6. executenonquery只对insert,delete,update有效,查询select会默认返回-1

    问题:cmd.ExecuteNonQuery() 方法总是返回-1 原因:ExecuteNonQuery() 方法 select 返回-1 解释:执行Select子句,数据库并无变化,自然返回-1同样 ...

  7. MyBatis insert/delete/update 的返回值

    insert,返回值是:新插入行的主键(primary key):需要包含<selectKey>语句,才会返回主键,否则返回值为null. <insert id="inse ...

  8. 触发器内insert,delete,update判断执行不同的内容

    create trigger tr_aon afor insert,update,delere asbegin IF EXISTS(SELECT 1 FROM inserted) AND NOT EX ...

  9. MySQL 详细解读undo log :insert undo,update undo

    转自aobao.org/monthly/2015/04/01/ 本文是对整个Undo生命周期过程的阐述,代码分析基于当前最新的MySQL5.7版本.本文也可以作为了解整个Undo模块的代码导读.由于涉 ...

  10. Linq无聊练习系列7----Insert,delete,update,attach操作练习

    /*********************Insert,delete,update,attach操作练习**********************************/            ...

随机推荐

  1. django 自定义过滤器中的坑.

    今天在创建自定义过滤器的时候,设置已正常.但是在运行后报: 'filter' is not a valid tag library: Template library filter not found ...

  2. How to check if Visual Studio 2005 SP1 is installed

    How to check if Visual Studio 2005 SP1 is installed Check the following registry key. HKEY_LOCAL_MAC ...

  3. plsql 编程基础

    分支 declare --声明变量 a ); b ); c ); begin --开始 a := '小明'; dbms_output.put_line(a); b :; c :; if b > ...

  4. MySQL出现错误1045,用户无法连接

    1.root用户可以登陆进去 假设新建了个sqlin用户,但是无法用此用户连接MySQL 这个时候root用户可以登录吧,root用户登录进去,重新修改该用户的密码,执行语句 use mysql; u ...

  5. backpropagation算法示例

    backpropagation算法示例 下面举个例子,假设在某个mini-batch的有样本X和标签Y,其中\(X\in R^{m\times 2}, Y\in R^{m\times 1}\),现在有 ...

  6. Leetcode 558.四叉树交集

    四叉树交集 四叉树是一种树数据,其中每个结点恰好有四个子结点:topLeft.topRight.bottomLeft 和 bottomRight.四叉树通常被用来划分一个二维空间,递归地将其细分为四个 ...

  7. POJ 3686 The Windy's(思维+费用流好题)

    The Windy's Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5362   Accepted: 2249 Descr ...

  8. cf 843 D Dynamic Shortest Path [最短路+bfs]

    题面: 传送门 思路: 真·动态最短路 但是因为每次只加1 所以可以每一次修改操作的时候使用距离分层的bfs,在O(n)的时间内解决修改 这里要用到一个小技巧: 把每条边(u,v)的边权表示为dis[ ...

  9. 购物(sum)

    购物(sum) 题目描述 visit_world 有一个商店,商店里卖N个商品,第ii 个的价格为 a[[i] 我们称一个正整数K 是美妙的,当且仅当我们可以在商店里选购若干个商品,使得价格之和落在区 ...

  10. iOS添加测试设备与调试

    转至:http://www.lidaze.com/   在上一篇博客中,已经购买好了开发账号,既然都交了钱了,就做点有意义的事吧!要想使用真机测试,需要准备如下: 1.证书:安装到电脑上的cer文件, ...