前面已经完成了数据库的一些基本操作,今天要写的主要是一些数据库的较高级的操作。
1、索引
索引是一种单独的、存储在磁盘上的数据结构。使用索引可以快速查找某个或者多列中有特定值得行。
a)创建索引:
可以在简历表的同时进行创建,如:
>CREATE TABLE table1 { ID INT(20), NAME VARCHAR(20), INDEX INDEX_ID(ID), INDEX INDEX_ID(ID,NAME) };
可以在已存在的表上简历索引
>ALTER TABLE table1 ADD INDEX INDEX_ID(ID); #结果如图1 >CREATE INDEX INDEX_NAME ON table1(NAME);
b)查看索引
>SHOW INDEX FROM table1 \G; #结果如图2
c)删除索引
>ALTER TABLE table1 DROP INDEX INDEX_ID; #结果如图3 DROP INDEX INDEX_NAME ON table1;
2、视图
视图就是一个虚拟表,是由数据库中表导出来的。
a)创建视图
>CREATE VIEW VIEW_T AS SELECT IDD NAME FROM table1; #结果如图5 >CREATE VIEW VIEW_T (ID1,NAME1) AS SELECT IDD NAME FROM table1;
b)查看视图
>DESC VIEW_T; #结果如图6
c)修改视图
>CREATE OR REPLACE VIEW VIEW_T AS SELECT IDD FROM table1; #结果如图8 >ALTER VIEW VIEW_T AS SELECT IDD FROM table1;
d)更新视图
UPDATE VIEW_T SET IDD = 10 WHERE IDD = 1; #结果如图7
e)删除视图>DROP VIEW IF EXISTS VIEW_T;
3、触发器
触发时间:对于表 BEFORE、AFTER
对于视图:INSTEAD OF
触发时间:INSERT UPDATE DELETE
a)建立触发器
CREATE TRIGGER trigger_t BEFORE INSERT ON table1 FOR EACH ROW BEGIN INSERT INTO table2 SET a2 = NEW.a1; UPDATE test1 SET b2 = b2 + 4; DELETE FROM test3 WHRER a3 = NEW.a1; END
>CREATE TABLE test1(a1 INT(20)); #结果如图9 CREATE TABLE test1(a1 INT(20)); >CREATE TRIGGER TRI_test BEFORE INSERT ON test1 FOR EACH ROW INSERT INTO test2 SET a2 = NEW.a1; INSERT INTO test1 VALUE(1),(1),(3),(5),(8); SELECT * FROM test1; SELECT * FROM test2;
b)删除
>DROP TRIGGER TRI_test
///
图1
图2
图3
图4
图5
图6
图7
图8
图9