找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
数据库索引,试图,外键,存储过程

1:索引(index)
           定义:索引就是的数据库中的一列或者多列的值进行排序标记的一种结构(B-树型,B+树hash,二叉树)
           作用:快速查询数据库中特定信息,加速检索数据库找那个的数据
           分类:
                   1.普通索引:最基本的索引,没有任何限制
                             创建:create inex kk on student(sid)==》在student表中的sid字段添加索引KK
                             查看:show index from student   查看student表中的索引
                             删除:alter table student drop index kk ==》删除student表中的KK索引

                   2.唯一索引:索引列的值必须是唯一,但允许有空值
                              创建:create unique kk on student(sid)
                              查看:show index from student
                              删除:alter table student drop index kk ==》删除student表中的KK索引

                  3.主键索引:索引列的值必须是唯一,不允许有空值,是一种特殊的唯一索引,一般在建表时创建。
                            创建:alter table student add primary (sid) 在sid字段添加一个主键,主键自动为主键索引
                            查看:show index from student
                            删除:alter table student drop primary key

为什么不在所有的字段加索引?
         因为索引是将字段的所有值以某种结构存在磁盘中,占用磁盘真实空间,如果全部加上索引会占用太多磁盘资源,所以只对使用较为平凡的字段添加索引。


[img=620,0]C:\Users\Administrator\AppData\Local\YNote\data\yd.60dc942798a944e4b\4fd1cadc47894d93ba814cc7bccae805\pq15i98j03_}9u0{tgb5j@3.png[/img]

   二:视图(view)
  定义:从一个或者多个表中导出来的虚拟表,其内容由查询定义,具有基础表的就,但是不实现数据存储
作用:
         1.简化操作,把经常使用的护具定义为视图
         2.安全性,只能查询特定的数据,将其他隐私信息不显示
         3.逻辑上的独立,屏蔽真实表结构带来的影响
缺点:数据库把视图的查询转换为基础表的查询,如果视图由复杂的多表查询定义,即便是简单的视图查询,数据库对基础表的查询也会变为一个复杂的过程。
         性能差,
创建一个视图:
create view yy as(select name,age from student)==》创建一个视图名叫yy,内容由sql语句定义
select name from yy;
select name from yy ==》select name from(select name,age from student)yy
视图可以作为基础表使用,但是不实际存储
as: 取别名,脱离sql语句无法使用
查看视图:
show tables from  from yy==》可以show出来
show create view yy

C:\Users\Administrator\AppData\Local\YNote\data\yd.60dc942798a944e4b\bf432b42a6ff499aac33521ef8c9c045\sgd8{tzxz@_e@%i0gk887]u.png

C:\Users\Administrator\AppData\Local\YNote\data\yd.60dc942798a944e4b\189b7d6ed7f44e628f905d0c7d0f0abf\z@%_0g]pu)c0ji73ua(sr(t.png
删除视图:
drop view yy
视图和基础表的修改能相互影响,操作视图和操作真实表一样。

视图如果包含以下任何一种,都是不可以更新的;
1.聚合函数
2.distinct (去重)
3.group by
3.union 运算

DDL和DML语言
DDL:data definition language 数据库定义语言
数据库,表以及字段的管理,不可回滚
create table
drop table
alter table
DML:data manipulation language 数据库操作语言
针对表数据的操作
select
update set
delete
insert into

三:外键约束
作用:保持数据的完整性和一致性
创建外键:
1.新表创建外键
create table dcs1(id int(4)primary key,name varchar(10))
enging=innodb;
eate table dcs2(sid int(4)primary key,sname varchar(10),constraint fk_sid
foreign key(sid)references dcs1(id))enging=innodb;

foreign key(sid)==》外键创建在表的sid字段
fk_sid ==》外键名字,可以随便取
references dcs1 (id)==》参考dcs1的id字段
constraint ==约束
enging=innodb 表示使用的引擎为innodb,早期的数据库使用的是mylsam引擎,改引擎不支持数据库外键查询等事务,早期的数据库就是仅仅是存储数据库的表格一样。现在数据库版本都默认使用innodb
dcs1 主表或父表
dcs2 子表或者从表

C:\Users\Administrator\AppData\Local\YNote\data\yd.60dc942798a944e4b\f5e9c78e543f4643acff635a40cf7700\)w%x@4]971lynzss1%6aj(f.png

删除外键:
alter table dcs drop foreign key_sid
2.现有表创建外键
alter table dcs add constraint dcs foreign key(sid)references dcs(id)

四:存储过程
一组为了完成特定功能的sql语句集
作用:提高数据写入的效率,无需编译,可以直接调用
你使用存储过程干什么,你有使用过存储过程吗?
在测试过程中需要使用到大量数据的时候,就使用存储过程在数据库的数据表中创建测试数据,避免手写,提高效率,而且可以重复使用。

1.创建存储过程:基本格式如下
create procedure procedure_name( )==》procedure_name( )函数名字,可以自定义,函数都需要()
begin  ==》存储过程的开始
过程体==》sql语句集合加上空值语句 ==》存储过程的内容
end ;==》存储过程的结束
call proucedure()调用存储过程

[img=620,0]C:\Users\Administrator\AppData\Local\YNote\data\yd.60dc942798a944e4b\809161421050449f912c7f39812886cf\h@(ng0~e]j0_3x6[g@i~jmk.png[/img]

C:\Users\Administrator\AppData\Local\YNote\data\yd.60dc942798a944e4b\e4e571ea798f4c1aa26676a1e1ae92da\75qt8_67%j03w5kfwmcm0`6.png

[img=620,0]C:\Users\Administrator\AppData\Local\YNote\data\yd.60dc942798a944e4b\462f962f67a14056b6f5797a3b81007f\s6~9$js]z{n[ub_[z}@q[]3.png[/img]
select * from stu;
call dcs(8)        #调用函数, 函数里面的参数称为实参

select concat('user',3)     #concat()函数用于连接两个字符
select left(uuid(),7) #left(uuid(),6)函数用于随机生词6位字符


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册