新创建表
create database xue_xiao character set utf8 collate utf8_general_ci;
use xue_xiao;
create table ban_ji(
id int(20) not null primary key,
ban_ming varchar(15) not null
);
insert into ban_ji values(1,'一年级(1)班'),(2,'一年级(2)班'),(3,'一年级(3)班');
create table xue_sheng(
id int(20) auto_increment not null primary key,
xing_ming varchar(50) not null,
yu_wen int,
shu_xue int,
bj_id int not null,
CONSTRAINT fk_xue_sheng FOREIGN KEY(bj_id) REFERENCES ban_ji(id)
);
insert into xue_sheng(xing_ming,yu_wen,shu_xue,bj_id) values
('张三',90,70,1),('李四',80,85,2),('李小红',80,75,1),('陈小明',75,80,3);
视图它是一个逻辑表,并不存储在物理硬盘上 , 方便查询考虑一个例子,要查找学生姓名和他们的总分
select xing_ming, yu_wen+shu_xue from xue_sheng;
创建视图
create view v_xue_sheng as select xing_ming ,yu_wen+shu_xue from xue_sheng;
访问视图的方法和访问表类似 , 但是不能插入,删除,更新数据
select * from v_xue_sheng;
修改视图
alter view v_xue_sheng as select xing_ming as 姓名,yu_wen+shu_xue as 总分 from xue_sheng;
select * from v_xue_sheng;
+-----------+--------+
| 姓名 | 总分 |
+-----------+--------+
| 张三 | 160 |
| 李四 | 165 |
| 李小红 | 155 |
| 陈小明 | 155 |
+-----------+--------+
4 rows in set (0.00 sec)
删除视图
drop view v_xue_sheng;
要查找2张表的数据
select xing_ming,ban_ming from xue_sheng x,ban_ji b where x.bj_id=b.id;
建立一个视图方便以后查询
create view v_xue_sheng as select xing_ming,ban_ming from xue_sheng x,ban_ji b where x.bj_id=b.id;
select * from v_xue_sheng;
+-----------+-----------------+
| xing_ming | ban_ming |
+-----------+-----------------+
| 张三 | 一年级(1)班 |
| 李四 | 一年级(2)班 |
| 李小红 | 一年级(1)班 |
| 陈小明 | 一年级(3)班 |
+-----------+-----------------+
查看当前数据库的表和视图
show tables;
索引 index - 用来快速查找具有特定值的记录
如果没有索引,执行查询时候必须从第一条记录开始扫描整个表的记录,直到符合要求的记录。如果有了索引mysql无需扫描任何记录即可顺序找到目标记录的位置。
简单说来, 索引就是提高查找数据速度,数据量越多,效果越明显。
创建索引
create index idx_xing_ming on xue_sheng(xing_ming);
创建唯一索引(主键是一种唯一索引)
create unique index idx_xing_ming on xue_sheng(xing_ming);
删除索引
drop index idx_xing_ming on xue_sheng;
另外的一种创建和删除方式
alter table xue_sheng add index idx_xing_ming(xing_ming);
alter table xue_sheng add unique idx_xing_ming(xing_ming);
alter table xue_sheng drop index idx_xing_ming;