4 表的创建、修改,索引、视图、触发器的使用

CREATE TABLE student (
    sno CHAR ( 9 ) NOT NULL COMMENT '学号',
    sname VARCHAR ( 10 ) NOT NULL COMMENT '姓名',
    ssex CHAR ( 2 ) DEFAULT NULL COMMENT '性别',
    sbirthday date DEFAULT NULL COMMENT '年龄',
    sdept VARCHAR ( 8 ) NOT NULL COMMENT '系别',
    PRIMARY KEY ( sno ) 
);
CREATE TABLE sc (
    sno CHAR ( 9 ) NOT NULL COMMENT '学号',
    cno CHAR ( 4 ) NOT NULL COMMENT '课程编号',
    grade FLOAT DEFAULT NULL COMMENT '成绩',
    CONSTRAINT s_fk FOREIGN KEY ( sno ) REFERENCES student ( sno ) 
);

#查看表基本结构 describe 表名
DESCRIBE student;
#查看表详细结构 show create table
SHOW CREATE TABLE student;
#修改表alter table 旧表名 rename 新表名
ALTER TABLE student RENAME students ALTER TABLE students RENAME student 
#修改字段的数据类型alter table 表名 modify 属性名 数据类型
#修改student表的sname的数据类型为char长度为10
ALTER TABLE student MODIFY sname CHAR ( 10 ) NOT NULL 
#修改字段名 alter table 表名 change 旧属性名 新属性名 新数据类型
#修改student表中的sno字段为sid
ALTER TABLE student CHANGE sno sid CHAR ( 6 ) NOT NULL 
#增加字段 alter table 表名 add 属性名|数据类型等
#student表中新增年龄sage
ALTER TABLE student ADD sage VARCHAR ( 100 ) 
#删除字段alter table 表名 drop 属性名
#删除student表中sage属性
ALTER TABLE studnet DROP sage 
#删除表(无关联的表) drop table 表名
#有关联的表,先查看关联属性,再删除外键,再删除表
SHOW CREATE TABLE 表名 ALTER TABLE 表名 DROP FOREIGN 约束名 DROP TABLE 表名 
#验证是否成功
DESC 表名 
#数据库索引
#所应是一种特殊的数据结构,是创建在表上的并且对数据库表中一列或多列的值进行排序的一种结构。索引可以提高查询的速度。索引是提高数据库性能的重要方式。mysql索引包括普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等。优点:提高检索数据的速度;缺点:创建和维护索引需要耗费时间。
#创建方式 创建表时创建
CREATE TABLE 表名 ( 属性名 数据类型 完整性约束 [ UNIQUE / FULLTEXT / SPATIAL ] INDEX [ KEY ( 索引名 ) ( 属性名) ( 长度 ) ] ) #创建student表时,为sno字段创建唯一索引index_sno
CREATE TABLE student (
    sno CHAR ( 9 ) NOT NULL PRIMARY KEY,
    sname VARCHAR ( 10 ) NOT NULL,
    ssex CHAR ( 2 ) DEFAULT NULL,
    sbirthday date DEFAULT,
    sdept VARCHAR ( 8 ) NOT NULL,
    UNIQUE INDEX index_sno ( sno ) 

#在已经存在的表上创建索引
CREATE [ UNIQUE / FULLTEXT / SPATIAL ] INDEX 索引名 ON 表名 ( 属性名[长度][ ASC / DESC ] ) #创建student表时,为sno字段创建唯一索引index_sno
CREATE UNIQUE INDEX index_sno ON student ( sno )
#alter table语句来创建索引
ALTER TABLE 表名 ADD [ UNIQUE / FULLTEXT / SPATIAL ] INDEX 索引名 ON 表名 ( 属性名 [长度][ ASC / DESC ] 
)
ADD TABLE student ADD UNIQUE INDEX index_sno ( sno )
#删除索引
DROP idnex 索引 ON 表名 
DROP INDEX index_sno ON student

#视图
#视图是从一个或多个表中导出的表,是一个虚拟存在的表。
#创建视图
CREATE [ algorithm ={ UNDEFINED / MERGE / TEMPTABLE }] VIEW 视图名 [属性清单] AS SELECT
语句 [ WITH [ CASCADED / LOCAL ] CHECK OPTION ] #student创建视图student_view
CREATE VIEW student_view AS SELECT * FROM student 
#查看视图
DESCRIBE 视图名 DESCRIBE student_view
#修改视图
ALTER [ algorithm ={ UNDEFINED / MERGE / TEMPTABLE }] VIEW 视图名 [属性清单] AS SELECT
语句 [ WITH [ CASCADED / LOCAL ] CHECK OPTION ] #修改student_view只能看到学生姓名,学号
ALTER VIEW student_view AS SELECT sname,sno FROM student
#更新视图(插入insert、更新update、删除delete)
#不可更新的情况有:
#聚合函数,distinct关键字,group by子句,ordery by子句
#having子句,union运算符,位于选择列表中的子查询,
#from子句中包含多个表,select语句中引用了不可更新视图
#where子句中的子查询,引用from子句中的表
#algorithm选项指定为temptable
#删除视图
DROP VIEW 视图名 [ RESTRICT / CASCADE ] 
DROP VIEW student_view


#触发器
#触发器trigger是由事件来出发某个操作。这些操作包括insert,update,delete语句。当数据库系统执行这些事件时,就会激活触发器执行相应的操作。
#创建触发器
CREATE TRIGGER 触发器名 BEFORE | AFTER 触发事件 ON 表名 FOR EACH ROW
执行语句
#创建表table1 其中只有1列a,在表上创建一个触发器,每次插入操作时,将用户变量str的值设为trigger is working
CREATE TABLE table1 ( a INTEGER );
CREATE TRIGGER table_insert AFTER INSERT 
    ON table1 FOR EACH ROW
    SET @str = 'trigger is working';
#向表中插入数据
INSERT INTO table1 VALUES ( 10 )
#查看str
SELECT @str
#查看触发器
SHOW TRIGGER
#删除触发器
DROP TRIGGER 触发器名

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

double_lifly

点喜欢就是最好的打赏!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值