数据库之事务,存储过程,索引
来源:互联网 发布:爬虫爬数据库犯法吗 编辑:程序博客网 时间:2024/06/05 20:43
1.清楚having
//例子1#havingSELECT * FROM deposite;#按照银行名进行分组,查看银行名,存款总数,存储金额大于20000的并按照金额排序select b_name,sum(amount) from deposite inner join bank on deposite.b_id=bank.b_idinner join customer on deposite.c_id=customer.c_idgroup by b_namehaving sum(amount)>20000order by sum(amount);//例子2假设中国CN显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。SELECT region, SUM(population), SUM(area)FROM CNGROUP BY regionHAVING SUM(area)>1000000
索引
定义:对数据库表中的一列或者多列的值
进行排序的一种结构,旨在挺高数据的查询效率。
作用:
提高查询速度
确保数据的唯一性
使用分组和排序子句进行数据检索时,可以显著减少分组和排序的时间
等等
分类:
主键索引(PRIMARY KEY)
唯一索引(UNIQUE)
常规索引(INDEX)
全文索引(FULLTEXT) 只能用于MyISAM类型的数据表,只能用于 CHAR 、 VARCHAR、TEXT数据列类型
使用场景:
在WHERE,ORDER BY 子句中经常使用的字段
字段的值是多个(例如性别字段则不适合)
字段内容不是经常变化的
不宜过多添加索引,每添加一条索引都会占用磁盘空间
代码:
create table student(
studentno int(4) not null,
pwd varchar(20) default null,
studentname varchar(20),
sex tinyint(1),
gradeid int(11),
phone varchar(50),
address varchar(50)
) engine=innodb default charset=utf8;
#查看索引
show index from student;
#添加主键索引
alter table student add primary key(studentno);
#添加唯一索引
alter table student add unique index(gradeid);
#添加普通索引
alter table student add index (studentname);
/先修改为myisam类型数据库/
alter table student engine=myisam;
#添加全文索引
alter table student add fulltext(studentname);
#查看索引
show index from student;
事务:
定义:
事务就是将一组SQL语句放在同一批次内去执行,
如果一个SQL语句出错,
则该批次内的所有SQL都将被取消
注意:
MySQL事务处理只支持InnoDB和BDB数据表类型
原则:
原子性:事务的一组操作是原子的不可再分割的,这组操作要么同时完成要么同时不完成
一致性:几个并行执行的事务,
其执行结果必须与按某一顺序串行执行的结果相一致。
隔离性:当多个事务同时操作一个数据库时,可能存在并发问题,
此时应保证各个事务要进行隔离,事务之间不能互相干扰。
持久性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,不能再回滚。
语法:
set autocommit=0;#关闭自动提交模式,默认为开启
start transaction; #开启一个事务,表示事务的起点
#一系列的操作
update account set cash=cash-500 where name=’买家’;
update account set cash=cash+500 where name=’卖家’;
#commit;#将一个事务提交给数据库
rollback;#将事务回滚,
set autocommit=1;#设置为自动提交
案例:?A账户成功减少500元,B账户应该增加500元,
但一些错误导致未增加成功,
这时则需返回A账户的500元,达到账户总额的平衡
create table account (
id int(10) auto_increment primary key,
name varchar(20),
cash decimal(9,2)
);
insert into account values (null,’买家’,1000), (null,’卖家’,1000);
set autocommit=0;#关闭自动提交模式,默认为开启
start transaction; #开启一个事务,表示事务的起点
#一系列的操作
update account set cash=cash-500 where name=’买家’;
update account set cash=cash+500 where name=’卖家’;
commit;#将一个事务提交给数据库
#rollback;#将事务回滚,
set autocommit=1;#设置为自动提交
存储过程
存储过程:是一段预先编译并存储在数据库中的一段sql语句的集合
创建存储过程:
#创建存储过程update_salary
DELIMITER $$
CREATE PROCEDURE update_salary() BEGIN UPDATE salary=salary+salary WHERE salary<5000; #其他的代码 END $$DELIMITER ;删除:DROP PROCEDURE update_salary;查看:SHOW PROCEDURE STATUS LIKE 'update_salary';delimiter $$ create procedure update_salary() begin update salary=salary*1.2 where c_id<101004; end $ delimiter;
- 数据库之事务,存储过程,索引
- Oracle数据库之视图、索引、存储过程、触发器、事务、函数
- 数据库索引,存储过程,视图,事务
- 数据库索引,存储过程,视图,事务
- 数据库存储过程,视图,索引,会话,事务
- mysql数据库存储过程之事务
- 数据库有关知识(事务、视图、索引、存储过程)
- 存储过程,数据库事务
- 数据库之——索引、触发器、事务(存储引擎)
- Java程序员从笨鸟到菜鸟之(九)——数据库有关知识补充(事务、视图、索引、存储过程)
- Java程序员从笨鸟到菜鸟之(九)——数据库有关知识补充(事务、视图、索引、存储过程)
- Java程序员从笨鸟到菜鸟之(九)——数据库有关知识补充(事务、视图、索引、存储过程)
- Java程序员从笨鸟到菜鸟之(九)——数据库有关知识补充(事务、视图、索引、存储过程)
- Java程序员从笨鸟到菜鸟之(九)——数据库有关知识补充(事务、视图、索引、存储过程)
- Java程序员从笨鸟到菜鸟之(九)——数据库有关知识补充(事务、视图、索引、存储过程)
- Java程序员从笨鸟到菜鸟之(九)——数据库有关知识补充(事务、视图、索引、存储过程)
- 存储引擎 事务 索引 存储过程
- 数据库JDBC 、事务、存储过程
- 在CDH中远程使用jupyter(与pyspark连接)
- Java &和&& ||与| 的区别
- tornado 部署
- HDU Problem 4857 逃生【拓扑排序+优先队列】
- 使用log4jdbc,打印输出完整的sql
- 数据库之事务,存储过程,索引
- android handler使用
- 数据结构-哈夫曼树
- android 编译生成的out目录结构剖析
- Android去掉Activity的头部标题栏
- 实验十一:帧中继
- 关于IO函数
- 安卓中查看SD卡剩余空间
- A -- Alarm