找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
1、索引:通过搜索索引找到待定的值
1)普通索引
create index ss on emp(sid);为emp表中的sid字段创建索引ss;
show index from emp;查看索引
create index ss1 on emp(sid,name);为emp表中的sid、name字段创建索引ss;
alter table emp drop index ss;删除emp表格中的索引ss;
2)唯一索引:索引列值必须是唯一的,但允许有空值
create unique index aa on emp(sid);为emp表中的sid字段创建唯一索引aa;
show index from emp;查看索引
alter table emp drop index aa;删除emp表格中的索引aa;
3)主键索引:和主键约束是相辅相成的
注意:添加一个主键约束就是添加一个主键索引,主键索引就是添加主键约束。


2、视图:虚拟的表
视图特点:1)视图是由基本表产生的表
                  2)视图的更新和删除会影响基础表
                  3)基础表的更新和删除也会影响视图
注意:视图的操作和基本表相同
show tables;    查看视图。
create view shu as(select sid,name from emp);创建视图

select * from shu;查看视图所有内容
update shu set name="zhangsan" where sid=1789;修改视图数据
update emp set name="张三" where sid=1789;修改基础表的数据
drop view shu;删除视图

3、DDL和DML
DDL:数据库定义语言
create
alter table
drop
DML:数据库的操作语言(表数据操作)
insert into
delete
update
select

4、外键约束:foregin key 表与表之间的约束  
作用:保持数据的一致性、完整性
表1:姓名    年龄      身份证号    语文     数学     英语
表2:姓名    年龄      身份证号    语文     篮球

show create table emp;   查看建表语句

create table dcs1(id int(5)primary key,name varchar(10))engine=innodb;

show create table dcs1;查看dcs1创建语句

create table `dcs1` (`id` int(5) not null, `name` varchar(10) default null,primary key (`id`)
) engine=Innodb default charset=utf8

create table dcs2(sid int(5)primary key,sname varchar(10),
constraint duoceshi foreign key(sid) references dcs1(id))
engine=innodb;==》创建dcs2表同时创建外键约束

5、插入数据
INSERT into dcs1 VALUES(1,"zhangsan"),(2,"xiaoliu");
INSERT into dcs2 VALUES(1,"lisi"),(3,"wangwu");

如果dcs1和dcs2存在外键约束,dcs1(主表)、dcs2(子表)
主表一般存放基础数据
如果主表不存在的数据,在任务子表是无法插入该数据的

DELETE from dcs1 where id=1;
DELETE from dcs2 where sid=1;
如果要删除主表的数据,需要先删除与主表相关的任何子表的数据;
ALTER table dcs2 drop FOREIGN key duoceshi; ==>删除外键约束


6、存储过程
优点:1)创建后可以多次使用
固定格式
create procedure 存储过程名称(参数名,数据类型) #创建存储过程名称
begin#存储过程开始
存储过程体
end#存储过程结束

call 存储过程名称()#调用存储过程

drop procedure if exists dcs11;#如果存在dcs11这个存储过程则删除
create procedure dcs11(n int) #创建存储过程名称为dcs11,n是变量,int是数据类型
begin#存储过程开始
#写sql集合
declare i int(5)default(select count(*) from mm);#声明变量i 默认就是表的行数
/*drop table if exists mm;#如果mm存在则删除
create table mm(id int(5)PRIMARY key auto_increment,score int(10));
insert into mm values(1,88),(2,75);
insert into mm values(3,79),(4,94);
insert into mm values(5,85),(6,63);
insert into mm values(7,91),(8,99);*/
/*select * from mm;
select * from mm where id =n;#带参数查询
*/
/*#单分支if判断
if n=0 then
select count(*) from mm;
else
select * from mm order by score desc;
end if;*/
/*#多分支if判断
if n=0 then
select count(*) from mm;
else if n>0 and n<=8 then
select * from mm order by score desc;
else if n>8 then
select max(score) from mm;
else
select * from mm;
end if;
end if;
end if;*/
#while 循环
if n=0 then
select count(*) from mm;
else if n>0 and n<=i then
select * from mm order by score desc;
else
        while n>i do
  insert into mm(score)values(88);
  set i=i+1;
        end while;
select * from mm;
end if;
end if;
end#存储过程结束

call dcs11(100)#调用存储过程

分享至 : QQ空间
收藏

0 个回复

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