数据库

事务:在事务中的命令要么一次性执行成功,要么都不执行
SQL语句:
创建数据库:create database 库名;
删除数据库:drop database 库名;
备份数据库:backup database 库名 to disk=‘D:\test.myd’;
恢复数据库:restore database 库名 from disk=‘D:\test.myd’;
建表:create table 表名(字段名 字段类型 字段约束,字段名 字段类型 字段约束);
create table student
(
sid int primary key,
sname char(20) not null,
sex char(20) not null check(sex in (‘男’,‘女’)),
birthday date not null,
class_time datetime not null,
city char(20) not null,
);
删除表:drop table 表名
插入一条记录:insert into student(1,“小明”,“男”,“1997-11-11”,“2012-9-12”,“南京”);
删除****数据:delete from student where sid>=1 and sid<=10;
更新****表数据:update student set class_time=“2011-9-15” where city like’%京%’;
查询:select sid from student where sname like “李%”;
排序:order by sid dasc 降序 order by sid asc 升序
聚合函数:sum 求和 avg 平均值 min 最小值 max 最大值 count 计数 distinct 去重(在having后)
select sum(sid) from student;
select distinct sname from student;
分组查询:group by+having
(如果条件中有聚合函数,不能放在where中,需要放在having里)
select sid from student group by class_time having sid>50;
right函数:select right(sid,5) from student 取sid最后5位数
select right(‘00’+sid,10) from student ; 取sid最后10位数,不够0补
left函数:select left(sid,5) from student; 取sid前5位数
select left(‘00’+sid,10) from student ; 取sid前10位数,不够0补
top:查询结果取前几个结果
select top 50 * from student order by sid ; 查询学号前50的学生
关联查询:
1.内连接
1.1自然连接:nature jion
select sname from student nature jion class ;
1.2等值连接:inner join
select sid from student inner join class on class.sid=student.sid;
2.外连接
2.1左外连接:left outer join
select * from student left outer join class on class.sid=student.sid;
(左连接以outer jion左边表为准,要全部显示左边表的数据,如果右边没有关联数据,显示null)
2.2右外连接:right outer join
select * from student right outer join class on class.sid=student.sid;
(左连接以outer jion右边表为准,要全部显示右边表的数据,如果左边没有关联数据,显示null)
2.3全外连接
select * from student left outer join class on class.sid=student.sid
union
(select * from student right outer join class on class.sid=student.sid);
3.笛卡尔积
select * from student,class;
4.子查询
select sid from student where class_time in (select class_time from class where city like “%京%” );

视图
注意点
**!**视图中不保存数据,不保存表结构,不保存表,没有约束,只保存sql语句
**!**视图不可以当表来使用,可以用视图去创建视图,但是不建议做增删改操作
**!**删除视图时,不会影响到原来的基础表,可以直接在视图中使用select

创建视图
create view triger as(
select sname,courcename,teacher from student,cource,class
where student.sid=cource.sid and cource.sid=class.sid)
使用视图
create view triger1 as(select sname from triger)
delete from triger where courcename is null

删除视图
–语法:drop view 视图名
drop view triger
drop view triger1

视图优点
1.对于使用sql不熟练的人来说,视图是个很简单的查询途径
2.对于经常重复的复杂sql,使用视图可以提高查询效率
3.帮助保护表和数据的完整一致性

视图缺点
1.降低了查询效率
2.增加了保存空间
3.无法对数据和表进行操作,使操作测试不方便进行

视图实际应用
1.对于测试而言,降低了测试的复杂度(写一次复杂视图,以后直接调用)
2.对于测试而言,降低了工作难度
3.对于开发而言,降低了服务器的工作,提高服务器的运行效率(不使用视图,查询语句在服务器端生成数据传给数据库;使用视图,服务器直接查询视图就可以满足查询功能)
4.对于产品设计和业务人员而言,降低了工作难度,不用学习和使用复杂sql语句

索引
定义:索引就像是目录,表中对于一个字段的目录结构;如果想要操作表中的数据,先在索引字段中找到该行,然后再去操作那一条数据
注意点
1.建议索引设置在主键、外键、唯一约束,效率高
2.索引是应用于查询条件的,经常使用的查询条件字段,应该被设置为索引字段
3.一个表中可以有多个索引,索引之间可以交叉字段,一个索引可以有多个字段
索引优点
1.提高查询效率
2.提高排序效率
索引缺点
1.占用数据库资源
2降低了对数据增删改的效率
索引实际应用
1.页面上如果有很多查询条件并且需要排序时,建议一一创建索引
2.检查主键、外键、唯一约束条件是否建立索引关系
3.在测试过程中,检查运行条件是否使用索引
4.在测试中检查,频繁被更新的表,不要设置太多索引

创建索引
语法:create index 索引名 on 表(字段、字段…);
create index suoyin on student(sname,class_name);

删除索引
语法:drop index 表名.索引名
drop index student.suoyin

存储过程(procedure )
创建存储过程
1.无参数存储过程
–create procedure 存储过程名 as sql语句
create procedure aa as
update student set sid=100 where sid=1;

2.有参数存储过程
–create procedure 存储过程名(@参数1 参数类型,@参数2 参数类型…)as sql 语句
create procedure bb(@id int,@newid int)as
update student set sid=@newid where sid=@id;

执行存储过程
1.无参数存储过程
–语法: exec 存储过程名
exec aa;

2.有参数存储过程
语法:exec 存储过程名(参数1,参数2,参数3)
(sql server中可不加括号)
注意点:
1.参数的个数和数据类型必须和定义的一致
2.存储过程的sql是按照顺序进行的
3.当存储过程中一个sql失败时,,不会影响其他sql的运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值