1. 程式人生 > >study mysql

study mysql

weight trigge pre rollback div 刪除 字符串 ets 返回值

SELECT 
    CONCAT(`_1`.`drop_default`,`_1`.`alter_default`,`_1`.`update_default`) AS `sql`
FROM (
    -- 設置默認值
    SELECT 

    -- ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
    CONCAT (ALTER TABLE, `,`tt`.`table_name`,` ,ALTER, `,`col`.`column_name`,` ,DROP DEFAULT;) AS `drop_default`,
    
-- ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; CONCAT (ALTER TABLE, `,`tt`.`table_name`,` ,ALTER, `,`col`.`column_name`,` ,SET DEFAULT \\;) AS `alter_default`, -- UPDATE testalter_tbl SET i = 1000 WHERE ...; CONCAT (UPDATE, `,`tt`.`table_name`,` ,SET, `,`col`.`column_name`,
` ,=, ,\\‘‘, ,WHERE, `,`col`.`column_name`,` ,IS NULL;) AS `update_default` FROM `information_schema`.`columns` AS `col` INNER JOIN `information_schema`.`tables` AS `tt` ON ( `col`.`table_name` = `tt`.`table_name` ) WHERE ( -- 對象類型(數據表) `tt`.`table_type` =
BASE TABLE -- 架構名稱(數據庫名稱) AND `col`.`table_schema` = aigezhe AND ( -- 字符串類型 `col`.`data_type` = char -- OR `col`.`data_type` = ‘longtext‘ -- OR `col`.`data_type` = ‘mediumtext‘ -- OR `col`.`data_type` = ‘text‘ -- OR `col`.`data_type` = ‘tinytext‘ OR `col`.`data_type` = varchar -- 日期和時間類型 -- `col`.`data_type` = ‘date‘ -- OR `col`.`data_type` = ‘time‘ -- OR `col`.`data_type` = ‘year‘ -- OR `col`.`data_type` = ‘datetime‘ -- OR `col`.`data_type` = ‘timestamp‘ -- 數值類型 -- `col`.`data_type` = ‘tinyint‘ -- OR `col`.`data_type` = ‘smallint‘ -- OR `col`.`data_type` = ‘mediumint‘ -- OR `col`.`data_type` = ‘int‘ -- OR `col`.`data_type` = ‘bigint‘ -- OR `col`.`data_type` = ‘float‘ -- OR `col`.`data_type` = ‘double‘ -- OR `col`.`data_type` = ‘decimal‘ ) ) ) AS `_1`; -- ---------------------------- -- SP函數的語法練習 -- ---------------------------- DROP FUNCTION IF EXISTS `函數名稱`; DELIMITER $$ CREATE FUNCTION `函數名稱`(/*函數參數*/) -- 函數返回值 RETURNS VARCHAR(255) BEGIN END $$ DELIMITER ; -- ---------------------------- -- SP過程的語法練習 -- ---------------------------- DROP PROCEDURE IF EXISTS `過程名稱`; DELIMITER $$ CREATE PROCEDURE `過程名稱`(/*過程參數*/) BEGIN END $$ DELIMITER ; -- 一個 test 過程 DELIMITER $$ DROP PROCEDURE IF EXISTS `test` $$ CREATE PROCEDURE `test`(out rtn int) BEGIN declare LoginId int default 0; set rtn = 1; if (LoginId = 3) then set rtn = 2; elseif (LoginId = 0) then set rtn = 3; else set rtn = 4; end if; END $$ DELIMITER ; -- ---------------------------- -- 創建函數 -- ---------------------------- set global log_bin_trust_function_creators=TRUE; -- set global log_bin_trust_function_creators=1; SET @RAND_NUM = 0123456789; SET @RAND_EN = abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ; SET @RAND_ZHCN = 們以我到他會作時要動國產的一是工就年階義發成部民可出能方進在了不和有大這主中人上為來分生對於學下級地個用同行面說種過命度革而多子後自社加小機也經力線本電高量長黨得實家定深法表著水理化爭現所二起政三好十戰無農使性前等反體合鬥路圖把結第裏正新開論之物從當兩些還天資事隊批點育重其思與間內去因件日利相由壓員氣業代全組數果期導平各基或月毛然如應形想制心樣幹都向變關問比展那它最及外沒看治提五解系林者米群頭意只明四道馬認次文通但條較克又公孔領軍流入接席位情運器並飛原油放立題質指建區驗活眾很教決特此常石強極土少已根共直團統式轉別造切九你取西持總料連任誌觀調七麽山程百報更見必真保熱委手改管處己將修支識病象幾先老光專什六型具示復安帶每東增則完風回南廣勞輪科北打積車計給節做務被整聯步類集號列溫裝即毫知軸研單色堅據速防史拉世設達爾場織歷花受求傳口斷況采精金界品判參層止邊清至萬確究書術狀廠須離再目海交權且兒青才證低越際八試規斯近註辦布門鐵需走議縣兵固除般引齒千勝細影濟白格效置推空配刀葉率述今選養德話查差半敵始片施響收華覺備名紅續均藥標記難存測士身緊液派準斤角降維板許破述技消底床田勢端感往神便賀村構照容非搞亞磨族火段算適講按值美態黃易彪服早班麥削信排臺聲該擊素張密害侯草何樹肥繼右屬市嚴徑螺檢左頁抗蘇顯苦英快稱壞移約巴材省黑武培著河帝僅針怎植京助升王眼她抓含苗副雜普談圍食射源例致酸舊卻充足短劃劑宣環落首尺波承粉踐府魚隨考刻靠夠滿夫失包住促枝局菌桿周護巖師舉曲春元超負砂封換太模貧減陽揚江析畝木言球朝醫校古呢稻宋聽唯輸滑站另衛字鼓剛寫劉微略範供阿塊某功套友限項余倒卷創律雨讓骨遠幫初皮播優占死毒圈偉季訓控激找叫雲互跟裂糧粒母練塞鋼頂策雙留誤礎吸阻故寸盾晚絲女散焊功株親院冷徹彈錯散商視藝滅版烈零室輕血倍缺厘泵察絕富城沖噴壤簡否柱李望盤磁雄似困鞏益洲脫投送奴側潤蓋揮距觸星松送獲興獨官混紀依未突架寬冬章濕偏紋吃執閥礦寨責熟穩奪硬價努翻奇甲預職評讀背協損棉侵灰雖矛厚羅泥辟告卵箱掌氧恩愛停曾溶營終綱孟錢待盡俄縮沙退陳討奮械載胞幼哪剝迫旋征槽倒握擔仍呀鮮吧卡粗介鉆逐弱腳怕鹽末陰豐霧冠丙街萊貝輻腸付吉滲瑞驚頓擠秒懸姆爛森糖聖凹陶詞遲蠶億矩康遵牧遭幅園腔訂香肉弟屋敏恢忘編印蜂急拿擴傷飛露核緣遊振操央伍域甚迅輝異序免紙夜鄉久隸缸夾念蘭映溝乙嗎儒殺汽磷艱晶插埃燃歡鐵補咱芽永瓦傾陣碳演威附牙芽永瓦斜灌歐獻順豬洋腐請透司危括脈宜笑若尾束壯暴企菜穗楚漢愈綠拖牛份染既秋遍鍛玉夏療尖殖井費州訪吹榮銅沿替滾客召旱悟刺腦措貫藏敢令隙爐殼硫煤迎鑄粘探臨薄旬善福縱擇禮願伏殘雷延煙句純漸耕跑澤慢栽魯赤繁境潮橫掉錐希池敗船假亮謂托夥哲懷割擺貢呈勁財儀沈煉麻罪祖息車穿貨銷齊鼠抽畫飼龍庫守築房歌寒喜哥洗蝕廢納腹乎錄鏡婦惡脂莊擦險贊鐘搖典柄辯竹谷賣亂虛橋奧伯趕垂途額壁網截野遺靜謀弄掛課鎮妄盛耐援紮慮鍵歸符慶聚繞摩忙舞遇索顧膠羊湖釘仁音跡碎伸燈避泛亡答勇頻皇柳哈揭甘諾概憲濃島襲誰洪謝炮澆斑訊懂靈蛋閉孩釋乳巨徒私銀伊景坦累勻黴杜樂勒隔彎績招紹胡呼痛峰零柴簧午跳居尚丁秦稍追梁折耗堿殊崗挖氏刃劇堆赫荷胸衡勤膜篇登駐案刊秧緩凸役剪川雪鏈漁啦臉戶洛孢勃盟買楊宗焦賽旗濾矽炭股坐蒸凝竟陷槍黎救冒暗洞犯筒您宋弧爆謬塗味津臂障褐陸啊健尊豆拔莫抵桑坡縫警挑汙冰柬嘴啥飯塑寄趙喊墊丹渡耳刨虎筆稀昆浪薩茶滴淺擁穴覆倫娘噸浸袖珠雌媽紫戲塔錘震歲貌潔剖牢鋒疑霸閃埔猛訴刷狠忽災鬧喬唐漏聞沈熔氯荒莖男凡搶像漿旁玻亦忠唱蒙予紛捕鎖尤乘烏智淡允叛畜俘摸銹掃畢璃寶芯爺鑒秘凈蔣鈣肩騰枯拋軌堂拌爸循誘祝勵肯酒繩窮塘燥泡袋朗餵鋁軟渠顆慣貿糞綜墻趨彼屆墨礙啟逆卸航衣孫齡嶺騙休借; DELIMITER $$ DROP FUNCTION IF EXISTS `rs` $$ CREATE FUNCTION `rs`(n int,type int) returns varchar(1024) BEGIN -- declare chars char(52) default ‘abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ‘; declare res varchar(1024) default ‘‘; declare i int default 0; declare count int; declare chars text; if (n <= 0) then return res; else if (n >= 1024) then set n = 1024; end if; end if; -- 判斷采用那種字體 if (type = 1) then -- 采用中文 set count = 1500; else if (type = 2) then -- 采用英文 set count = 52; else -- 采用數字 set count = 10; end if; end if; repeat set i = i + 1; -- 判斷采用那種字體 if (type = 1) then -- 采用中文 set res = concat(res,substring(@RAND_ZHCN,floor(1+rand()*count),1)); else if (type = 2) then -- 采用英文 set res = concat(res,substring(@RAND_EN,floor(1+rand()*count),1)); else -- 采用數字 set res = concat(res,substring(@RAND_NUM,floor(1+rand()*count),1)); end if; end if; until i = n end repeat; return res; END $$ DELIMITER ; -- ---------------------------- -- 創建存儲過程 -- ---------------------------- DELIMITER $$ DROP PROCEDURE IF EXISTS `inst` $$ CREATE PROCEDURE `inst`(n int) BEGIN declare i int default 0; set autocommit = 0; if (n > 0) then repeat set i = i + 1; insert into `user` (`nickname`,`realname`,`age`,`sex`,`phone`,`telephone`) values (rs(floor(2+rand()*3),1),rs(floor(2+rand()*3),1),floor(10+rand()*90),floor(1+rand()*2),concat(1,rs(10,3)),concat(023-,rs(8,3))); until i = n end repeat; end if; commit; set autocommit = 1; END $$ DELIMITER ; DROP PROCEDURE IF EXISTS `inst_one`; DELIMITER $$ CREATE PROCEDURE `inst_one`( in id int, in nickname varchar(50), in realname varchar(50), in age tinyint(3) unsigned, in sex tinyint(1) unsigned, in phone varchar(30), in telephone varchar(30) ) BEGIN set autocommit = 0; insert into `user` (`nickname`,`realname`,`age`,`sex`,`phone`,`telephone`) values (nickname,realname,age,sex,phone,telephone); commit; rollback; set autocommit = 1; END $$ DELIMITER ; -- ---------------------------- -- Table structure for `user` -- ---------------------------- CREATE TABLE IF NOT EXISTS `user` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 自增ID, `nickname` varchar(50) NOT NULL DEFAULT ‘‘ COMMENT 昵稱, `realname` varchar(50) NOT NULL DEFAULT ‘‘ COMMENT 真實姓名, `age` tinyint(3) unsigned NOT NULL DEFAULT 0 COMMENT 年齡, `sex` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT 1-男,2-女, `phone` varchar(30) NOT NULL DEFAULT ‘‘ COMMENT 手機號碼, `telephone` varchar(30) NOT NULL DEFAULT ‘‘ COMMENT 聯系電話, `type` tinyint(3) NOT NULL DEFAULT 1 COMMENT 1-普通用戶, `createtime` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 創建時間, `createts` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT 系統創建時間, `updatetime` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 修改時間, `updatets` datetime COMMENT 系統修改時間, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 用戶管理表; -- ---------------------------- -- TRIGGER structure for `update_user_trigger` -- ---------------------------- DROP TRIGGER IF EXISTS `update_user_trigger`; DELIMITER // CREATE TRIGGER `update_user_trigger` BEFORE UPDATE ON `user` FOR EACH ROW SET NEW.`updatets` = NOW() // DELIMITER ; -- ---------------------------- -- Table structure for `user_address` -- ---------------------------- CREATE TABLE IF NOT EXISTS `user_address` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 自增ID, `name` varchar(255) NOT NULL DEFAULT ‘‘ COMMENT 地址名稱, `prov` varchar(30) NOT NULL DEFAULT ‘‘ COMMENT , `city` varchar(30) NOT NULL DEFAULT ‘‘ COMMENT , `zone` varchar(30) NOT NULL DEFAULT ‘‘ COMMENT , `lon` varchar(50) NOT NULL DEFAULT ‘‘ COMMENT 經度, `lat` varchar(50) NOT NULL DEFAULT ‘‘ COMMENT 緯度, `type` tinyint(3) NOT NULL DEFAULT 1 COMMENT 1-默認地址, `createtime` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 創建時間, `createts` timestamp DEFAULT CURRENT_TIMESTAMP COMMENT 系統創建時間, `updatetime` int(10) unsigned NOT NULL DEFAULT 0 COMMENT 修改時間, `updatets` datetime COMMENT 系統修改時間, `userid` int unsigned COMMENT 用戶id, PRIMARY KEY (`id`), CONSTRAINT `FK_userid` FOREIGN KEY (`userid`) REFERENCES `user`(`userid`) ON DELETE SET NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT 用戶地址管理表; -- ---------------------------- -- TRIGGER structure for `update_user_address_trigger` -- ---------------------------- DROP TRIGGER IF EXISTS `update_user_address_trigger`; DELIMITER // CREATE TRIGGER `update_user_address_trigger` BEFORE UPDATE ON `user_address` FOR EACH ROW SET NEW.`updatets` = NOW() // DELIMITER ; /** * * * * 補充:自定義函數相關內容 * * */ /** * 1.自定義示例 **/ -- 無參函數定義 DROP FUNCTION IF EXISTS `hello`; DELIMITER $$ CREATE FUNCTION `hello`() RETURNS VARCHAR(255) BEGIN RETURN Hello world,i am mysql; END $$ DELIMITER ; SELECT hello(); -- 含有參數的自定義函數 DROP FUNCTION IF EXISTS `aiyu`.`formDate`; DELIMITER $$ CREATE FUNCTION `aiyu`.`formDate`(fdate DATETIME) RETURNS VARCHAR(255) BEGIN DECLARE x VARCHAR(255) DEFAULT ‘‘; SET x = DATE_FORMAT(fdate,%Y年%m月%d日 %H時%i分%s秒); RETURN x; END $$ DELIMITER ; SELECT formDate(NOW()); /** * 2.自定義函數相關語法及變量 **/ -- 變量聲明 DECLARE var_name[,...] type [DEFAULT value] -- IF 條件語句 IF search_condition THEN statement_list [ELSEIF search_condition THEN statement_list] ... [ELSE statement_list] END IF -- CASE語句 CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list] END CASE; -- 循環語句 WHILE [begin_label:]WHILE search_condition DO statement_list END WHILE [begin_label]; 退出整個循環leave 相當於break 退出當前循環iterate 相當於 continue 通過退出的標簽決定退出哪個循環。 -- 其他相關 刪除函數我們可以使用 DROP FUNCTION IF EXISTS function_name; 查看定義的函數 SHOW FUCNTION STATUS LIKE function_name,或者是使用SHOW CREATE FUNCTION function_name;

study mysql