mysql查询数据库报错_mysql数据库查询

查询所有记录:

select * from [表名];

672201b097b4dd5264871cb3d762d00b.png

查询某列或者某些列的记录:将*号换成列名字[col_name],多个列用‘,‘号隔开;

e54aca90d4a9c6440d8a51e521d69f4f.png

查询指定条件下的记录:

e450fadfc14ff04754567de3c65333d4.png

模糊查询:

252cea0788fb617c8c3317997c7a9c7e.png

7ce16ff8fb758f43f7098da1cf470870.png

#逻辑运算符  or   and

7d3d28d2075e0525b2f7b3c324d016e0.png

03756143b0143b62315310f75c2e32fa.png

判断是否为null 不能用等于符合,要用is来判断:

3430d45c32e374f8c34a27d9677f234c.png

排序 order by:

asc升序;   desc降序

按学号升序排列输出:select * from course_details order by s_id;

8a58f4ad22fee329b5168d9b601fbc05.png

不加是默认升序,加desc就是降序:

125ecf8daa6210d21da180f187d5b089.png

限制显示数据的数量 limit

limit后接一个数时,默认从0号位开始取对应的个数;两个参数,如3,4表示从3号位开始取4个数。

358c0b97981561ebadcf7c27fc824306.png

这个功能可以用于分页。

***分组查询

一般跟聚合函数一起使用:

select dep_id as 学院id, count(dep_id) as 学生个数 from student group by dep_id;

fcb37672ee867c772d11c5ff72cfdd5a.png

select dep_id 学院id,group_concat(s_id,name separator ‘  ‘) 学生信息 from student group by `dep_id`;

0bc65a11578e13b4dd11cd5d489e32ff.png

having条件

select dep_id 学院id,count(dep_id) 学生个数 from student group by dep_id having 学生个数>1;

518251ce908837574f1918759125825b.png

having是在selecct返回的内容里面筛选,而where是在表中直接筛选。

子查询:出现在其他SQL语句内的SELECT字句。

嵌套在查询内部;

必须始终出现在圆括号内;

可以包含多个关键字或条件。

select * from stu_details where age>18.25;

select * from stu_details where age>(select avg(age) from stu_details);

3a89c2aaf11a47370dd01c8a1fb613e1.png

select * from student where dep_id in (select id from department where name in (‘计算机‘,‘外国语‘));

0f72ea8b374b670bdeb4c566e280669d.png

***联表查询***

内连接 inner join

无条件内连接:无条件内连接,又名交叉连接/笛卡尔连接,第一张表种的每一项会和另一张表的每一项依次组合。

有条件内连接:在无条件的内连接基础上,加上一个ON子句,当连接的时候,筛选出那些有实际意义的记录行来进行拼接。

在写条件时注意两张表的列名是否一样,如果时一样的则要在前面加上表名,tb_name.colname这种形式存在。

select * from student inner join department;  无条件内连接

80765fd2a3196e6f059ffb04b2104ffd.png

select * from student inner join department on dep_id=id;  有条件内连接

2992242ef966e8e91caad1197bac6b34.png

select s.name,d.name from student s inner join department d on dep_id=id;

查询学生姓名和对应的学院名字:

45de40cd8b7a7004574c2c7f092e5377.png

外连接  left join; right join;

左外连接: (以左表为基准)两张表做连接的时候,在连接条件不匹配的时候,留下左表中的数据,而右表中的数据以NULL填充

右外连接: (以右表为基准)对两张表做连接的时候,在连接条件不匹配的时候,留下右表中的数据,而左表中的数据以NULL填充

select * from student left join department on dep_id = id;

6ef0e7379e827c6d631fdbd121ed5afd.png

select * from student right join department on dep_id = id;

7803a9bd91766fbdf380bb95bec11544.png

#需求:  作为宿管, 学生的 ( 姓名, 年龄,性别,所属学院)

22fcaa5c68334bb46f73470892d0580e.png

事物 是数据库运行中的一个逻辑工作单位。

原子性:

事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

一致性:

事务在完成时,必须使所有的数据都保持一致状态。

隔离性:

由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。

为了保证数据库记录的更新从一个一致性状态变更为另一个一致性状态,使用事务来处理是非常必要。

案例:假设现在用户小明在商店买了500元东西,现在要转账给商店,那么就需要从小明的账户上减去500,然后在商店的用户上加

上500,但是如果在减500的过程中出现了系统故障,再重新启动后发现小明的钱扣了,但商店却没有收到,这时候就会出现数据变动不

一致。对于这种数据的修改我们需要的就是要么同时修改成功,要么同时修改失败,所以这就需要用事务来进行出来。

start transaction:开始一个新的事务

commit:提交当前事务,做出永久改变

rollback:回滚当前事务,放弃修改

先给小明和店户创建一个银行账户:

create table account(

id int not null,

name varchar(20) not null,

mony float

);

给老板和小明的账户插值,初始化账户,然后执行转账的操作:

f4e38ae9b6d1426bdde3a084fb08acc2.png

如果转账后系统崩溃,老板没有收到钱,则用rollback还原数据:

27ec9da8744ed26327d1d4f476174299.png

正确的执行如下:

42ca8ad355ac4cd57971b29e565f09a9.png

commit之后再rollback是没有作用的,但是不会报错!

mysql数据库查询

标签:bubuko   并发   width   inner   arch   count   创建   存在   table

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:https://www.cnblogs.com/dan-baishucaizi/p/8335078.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值