找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
navicat连接满足条件:账号密码正确,端口3306,域名要正确,可能是IP,也可能是localhost,数据库要重新启动,要关闭防火墙对应的指令:关闭防火墙:service  iptables  stop  重启数据库:service  mysqld  restart
且对应的账号要有%权限:grant  all  privileges on  *.* to 'root'@'%'identified by  '123456'
左右连接的区别:左连接以左边表为主表,如果主表的值大于字表的值,字表缺省的值自动补齐,null,如果主表的值小于字表的值,只取和主表相同的值,其他不显示。
有链接是以右边表为主表
如果主表的值大于字表的值,字表缺省的值自动补齐Null,如果主表的值小于字表的值,只取和主表相同的值,其他不显示
数据库去重:distinct  group by
union  连接发,此方法连接必须地段相同
索引的作用?(记住)
1.快速读取数据
2.保证数据记录的唯一性
3.实现表与表之间的参照完整性
4.在使用group by,  order by  字句进行检索的时候,索引可以大大减少排序和分组的时间
优点:1.大大加快数据的检索速度  2.创建唯一索引  保证数据库中的每一行数据的唯一性  3.加速表与表之间的连接  4.在使用分组和排序进行检索时,可以显著减少查询的时间
缺点:1.索引占用物理空间
2.当对表中的数据进行增加,删除和修改的时候,索引也要动态的维护,降低了数据的维护速度
普通索引----创建后不会对字段有任何约束,可以为空,不为空,相同
index==索引  创建普通索引:index
create index a on aa(id) 给aa表中的id字段创建了一个普通索引  别名:a
唯一索引:值相同,可以为空  unique  index  create  unique  index a on aa(id)
主键索引:不能为空,不能相同(常见)
区别:普通唯一索引在表中可以有多个存在(但是一般不会这样做)
2.主键索引在表中只能有一个
3.普通索引没有任何约束,唯一索引不能相同但是可以为空
逐渐索引----不能为空,不能相同
外键的主要作用:保证数据的一致性,完整性
创建外键关联表和表  primary  key  主键
engine=innodb---创建外键或者事务的时候回使用到
主表:create  table  dcs1(id  int(4)primary key,name char(4)) engine=innodb;
基于主表来创建字表(字表关联主表)
constraint  aa(词语发的作用就是来定义一个外键的名称,后续要解除,外键关系可以通过删除掉这个名称来解除)
foreing  key(sid)设置外键约束:dcs2中的sid
references  dcs1(id)和dcs1中的id关联,dcs1为主,dcs2为子
create table  dcs2(sid  int(4)primary key,score int(10)),constraint aa  foreign key(sid) references  dcs(cid) engine=innodb
删除外键:alter table  子表名  drop  foreign key  外键名
alter  table  dcs2  drop  foreign  key  a;
当创建后:dcs1和dcs2是外键关关系
其中dcs1是主,dcs2是子
注意:1.主表中有数据,子表才能拥有数据
2.子表有多少行数据,子表才能有对应行的数据,不能超过主表的数据
3.如果你要删除主表中的数据,必须要删除子表中的数据
4.如果不要删除主表,必须要删除子表
视图:view
1.对视图的操作以基本表的操作都是一样的(包括alter,create,instert into,update,delete,select)
2.二者任意一方的字段值被修改,都会实时影响到对方(如修改view的字段值,会童虎修改table响应的字段值)
3.视图的创建是基于基本表的,它的作用可以对基本表的敏感信息进行保护,在实际工作中,处于安全考虑,将用户常用的信息穿件成视图给用户调用
避免了直接操作基本表
数据库保护视图。view保护铭感信息:create  view  yy  as(select  id  name  from  dcs);dcs表  id  name  score  age  sex
视图表:yy
id  name  将查询结构创建为视图yy
show  create view  yy(视图名)
也能查看到视图   show  tables  查看视图

drop  view 视图名  ://删除视图  

存储过程:创建大量的测试数据,用这个数据进行相关的测试       简称:造数据
使用评率也不是很高对测试岗位
开发使用的比较多
一个存储代码写好后是可以给其他同事调用

1000订单用户---insert  into
传一个参数:1000执行
第一:了解存储基本架构
create  procedure  +  存储架构的名称()
begin   开始
代码块
end   结束
call  存储的名称();
create  procedure  dcs();  创建一个存储名称是dcs
begin  开始
end  结束

call  dcs();调用dcs这个存储

第二是一个实例
CREATE  PROCEDURE  dada()    创建一个存储
BEGIN   开始
CREATE  TABLE  lol(id int(2)PRIMARY KEY,score int(4));            代码块
INSERT INTO lol(id,score)VALUES(1,22),(2,33),(3,44);
SELECT * FROM lol;
END   结束
CALL dada();    调用存储

第二次调用出出现异常,因为已经存在这个表和存储过程,不能重复使用,健壮性和容错性不是很好

第三
DROP PROCEDURE IF  EXISTS  dada;解决了限制只能调用执行一次,增强了代码的容错性和健壮性    如果存在则删除,不存在则不删除
CREATE  PROCEDURE  dada()
BEGIN
DROP TABLE  IF  EXISTS  lol;    如果存在则删除,不存在则不删除
CREATE  TABLE  lol(id int(2)PRIMARY KEY,score int(4));
INSERT INTO lol(id,score)VALUES(1,22),(2,33),(3,44);
SELECT * FROM lol;
END
CALL dada();


第四:了解形参和实参,还有做增删改查的相关操作
DROP PROCEDURE IF  EXISTS  dada;
CREATE  PROCEDURE  dada(n int)   创建存储定义一个形参n,类型是整形
BEGIN
DROP TABLE  IF  EXISTS  lol;
CREATE  TABLE  lol(id int(2)PRIMARY KEY,score int(4));
INSERT INTO lol(id,score)VALUES(1,22),(2,33),(3,44);
SELECT * FROM lol where id=n;  查询
END
CALL dada(2);    调用


第五  if的判断(第二个月常用)单分支
DROP PROCEDURE IF  EXISTS  dada;
CREATE  PROCEDURE  dada(n int)
BEGIN
DROP TABLE  IF  EXISTS  lol;
CREATE  TABLE  lol(id int(2)PRIMARY KEY,score int(4));
INSERT INTO lol(id,score)VALUES(1,22),(2,33),(3,44);
IF n=0 THEN    如果条件满足查询所有
        SELECT * FROM lol;
ELSE   不满足查询最小分数
        SELECT min(score) from lol;
END IF;   结束if判断
END
CALL dada(0);


第六: if的多分支判断
DROP PROCEDURE IF  EXISTS  dada;
CREATE  PROCEDURE  dada(n int)
BEGIN
DROP TABLE  IF  EXISTS  lol;
CREATE  TABLE  lol(id int(2)PRIMARY KEY,score int(4));
INSERT INTO lol(id,score)VALUES(1,22),(2,33),(3,44);
IF n=0 THEN
        SELECT * FROM lol;
ELSE  IF n>2  THEN   if分支
        SELECT min(score) from lol;
ELSE
   SELECT  max(score)  from lol;
END IF;   结束if判断
END IF;   结束if判断
END
CALL dada(3);


第七  死  while 循环语句(一个实例来验证死循环)
DROP PROCEDURE IF  EXISTS  dada;
CREATE  PROCEDURE  dada(n int)
BEGIN
DECLARE i INT  DEFAULT 1;
DROP TABLE  IF  EXISTS  lol;
CREATE  TABLE  lol(id int(2)PRIMARY KEY,score int(4));
while循环如果条件满足则进入循环体,不满足退出循环体,一直满足一直循环(死循环)
WHILE n>=1 DO   条件满足进入循环体
         n=2  i=1
            2>=1
        INSERT  INTO  lol(score)VALUES(i);
END WHILE;   结束
   SELECT *FROM lol;
END

CALL dada(2);   调用  当前的执行是一个死循环



第八:设置变量和while循环语句  创造数据
DROP PROCEDURE IF  EXISTS  dada;
CREATE  PROCEDURE  dada(n int)
BEGIN
DECLARE i INT  DEFAULT 1;
DROP TABLE  IF  EXISTS  lol;
CREATE  TABLE  lol(id int(2)PRIMARY KEY auto_increment,score int(4));
while循环如果条件满足则进入循环体,不满足退出循环体,一直满足一直循环(死循环)
WHILE n>=i DO
          INSERT  INTO  lol(score)VALUES(i);   满足条件进入循环体
   n=10  i  =1
10>=1  1+1=2  1+2=3  .....i=11
10>=11  不满足  退出循环
  SET  i=i+1;
END WHILE;
   SELECT *FROM lol;
END

CALL dada(4);

分享至 : QQ空间
收藏

0 个回复

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