mysql表、视图、索引、函数、触发器相关示例
目录
- 表相关
- 1、创建
- 2、修改
- 3、删除
- 视图相关
- 1、创建
- 2、修改
- 3、删除
- 4、查看
- 索引相关
- 1、创建
- 2、删除
- 存储函数创建删除和使用
- 触发器创建删除和使用
表相关
1、创建
CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`year` int(11) NOT NULL COMMENT '年',
`month` tinyint(4) NOT NULL COMMENT '月',
`is_xxx` unsigned tinyint COMMENT '表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint(1 表示是,0 表示否)',
`updator` varchar(11) NOT NULL,
`updateTime` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=321 DEFAULT CHARSET=utf8 COMMENT='测试表';
实例解析:
1.表名、字段名必须使用小写字母或数字,,禁止出现数字开头,禁止两个下划线中间只出现数字
2.如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
3.AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
4.PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
5.ENGINE 设置存储引擎,CHARSET 设置编码。
2、修改
(1)修改表名:
alter table table_name rename table_new_name
(2)新增字段:
ALTER TABLE table_name ADD column_name datatype
(3)修改字段名:
ALTER TABLE table_name ALTER COLUMN column_name new_column_name varchar(100);
(4)修改字段类型:
ALTER TABLE table_name ALTER COLUMN column_name datatype
(5)删除字段:
ALTER TABLE table_name DROP COLUMN column_name
3、删除
DROP TABLE `test`;
视图相关
1、创建
CREATE VIEW view_name AS
SELECT column_name(s) FROM table_name
WHERE condition;
2、修改
CREATE OR REPLACE VIEW v_test1 AS
SELECT * FROM ceshi ;
--方案2
alter view bankview as select bid from bank;
3、删除
DROP VIEW view_name
4、查看
show table status where comment='VIEW';
索引相关
1、创建
(1)在表上创建一个简单的索引
CREATE INDEX index_name ON table_name (column_name,column_name2)
(2)在表上创建一个唯一的索引
CREATE UNIQUE INDEX index_name ON table_name (column_name)
2、删除
ALTER TABLE table_name DROP INDEX index_name
存储函数创建删除和使用
--创建
create function hello(s char(20) charset utf8)
returns char(50)
reads sql data
begin
return concat('hello ',s,' !');
end
$
--调用
select hello('hdw')$
+--------------+
| hello('hdw') |
+--------------+
| hello hdw ! |
+--------------+
--删除
drop function hello$
--创建存储函数
create function getcid(n char(20) charset utf8)
returns int
reads sql data
begin
return (select cid from stu where sname=n);
end
$
--存储函数可以用在sql语句中
select cname from class where cid=getcid('小猫')$
触发器创建删除和使用
--删除班级自动触发删除学生
create trigger del_class_stu after delete on class
for each row
begin
delete from stu where cid=old.cid;
end
$
--触发器作业
创建文章表含标题、作者、发布时间字段
如果只添加了标题,发布时间字段自动设置为当前时间,
作者字段设置为123网
\d $
create trigger this_name before insert on this_table for each row
begin
if new.uname is null then
set new.uname='123';
end if;
if new.timer is null then
set new.timer=unix_timestamp(now());
end if;
end
$
--查询已有触发器
show triggers;
--注释:触发器是设置好当执行某一个行为时执行另一个方法!