1. 程式人生 > 實用技巧 >mysql表、檢視、索引、函式、觸發器相關示例(三)

mysql表、檢視、索引、函式、觸發器相關示例(三)

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;
--註釋:觸發器是設定好當執行某一個行為時執行另一個方法!