SQL学习

来源:互联网 发布:网络视频广告投放 编辑:程序博客网 时间:2024/04/30 11:29

1,创建标识列:mysql==>auto_increment (创建表的时候在需要加标识的那一列加上这个关键字就可以了)

比如:create table student(
id int auto_increment not null primary key,
name varchar(20) not null,
sex varchar(4),
age int
); 

oracle==>create sequence S_Test increment by 1 start with 1 (然后使用的时候就在添加数据的时候写上:S_Test .nextval)

2,事务:一组数据库操作组合,同时成功同时失败 (关键字:transaction    @@errpr)

小明找小红借4000块的列子

declare @myerror int  - -累计多个操作的错误编号

set @myerror =0 (单个赋值用set多个赋值用select)

begin transaction  - -开启事务

update bank set umoney=umoney-4000 where uname='小红' (小红扣掉4000块)

set @myerror=@myerror+@@error

update bank set umoney=umoney+4000 where uname='小明'(小明获得4000块)

set @myerror=@myerror+@@error

if(@myerror=0)

commit transaction  - -提交事务

else

rollback transaction  - -回滚事务

事务的特性:原子性、一致性、隔离性、永久性。

3,视图:在数据库端存储的select语句,相当于一个虚拟表(对敏感数据进行隐藏)

语法:create view 视图名

as

select 语句

4,索引:主键索引、唯一索引、聚集索引、非聚集索引。

查询多的建索引,修改频繁的不建议使用索引,因为在数据改变的时候,数据库要去维护索引内容。


5,存储过程:相当于java中的方法,它是存储在数据库端的一组操作集合。

优点:更高的效率,更安全,更节省流量(代码简洁,不需要发送过多的sql语句给数据库服务器),封装更好,更容易代码的重用

语法:create procedure 名字

@参数名   数据类型   参数类型

。。。。。。

as

begin

操作sql

end

修改存储过程的语法与创建一样,只是将create关键字改成alter

情况:无参无返,有参无返,无参有返,有参有返

例子:(有参有返)

create proc proc_count

@lab int,

@written int,

@count int output   - -用来制定输出参数(返回值)

as

begin

select * from stuinfo where stuno in (select stuno from stuexam where labexam<@lab or writtenexam<@written)   - -这个查询结果不算有返

select @count=count(*) from stuexam

end


declate @num int

exec proc_count  40,40,@num output  - -接收输出参数的时候也必须制定output关键字

print ‘参加考试人数:’+convert(varchar(2),@num)