mysql表、檢視、索引、函式、觸發器相關示例(三)
阿新 • • 發佈:2020-08-04
mysql表、檢視、索引、函式、觸發器相關示例
目錄
表相關
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;
--註釋:觸發器是設定好當執行某一個行為時執行另一個方法!