天天看點

mysql學習筆記(新)啟動停止登入mysql檢視所有資料庫使用指定資料庫檢視目前所用的資料庫檢視表結構檢視版本注釋檢視資料庫容量update 中使用select建立使用者并授權建立觸發器建立視圖建立資料表建立資料庫建立索引判斷集合中是否存在指定元素輸入中文查找首拼

目錄

  • 啟動
  • 停止
  • 登入mysql
  • 檢視所有資料庫
  • 使用指定資料庫
  • 檢視目前所用的資料庫
  • 檢視表結構
  • 檢視版本
    • 登入mysql後
    • 登入mysql前
  • 注釋
    • 單行
    • 多行
  • 檢視資料庫容量
  • update 中使用select
    • 場景:
    • 要求
    • sql
  • 建立使用者并授權
  • 建立觸發器
  • 建立視圖
  • 建立資料表
  • 建立資料庫
  • 建立索引
  • 判斷集合中是否存在指定元素
  • 輸入中文查找首拼

啟動

net start mysql服務名
           

停止

net stop mysql服務名
           

登入mysql

mysql -h localhost -P 3306 -u root -p
           

檢視所有資料庫

使用指定資料庫

use 資料庫名
           

檢視目前所用的資料庫

檢視表結構

檢視版本

登入mysql後

登入mysql前

注釋

單行

#注釋文字
或
 -- 注釋文字  (注意:--之後要用空格與注釋文字分開)
           

多行

檢視資料庫容量

where 條件指定後,則查詢指定庫的容量

select 
table_schema as '資料庫' ,
table_name as '表名稱',
table_rows as '記錄數',
TRUNCATE(data_length/1024/1024,2) as '資料容量(MB)',
TRUNCATE(index_length/1024/1024,2) as '索引容量(MB)'
from information_schema.TABLES
 -- where table_schema='資料庫名稱'
ORDER BY table_schema asc,data_length desc,index_length desc;
           

update 中使用select

場景:

表A中存在字段ref_id 和 img ,表B中存在字段id和img。表A中的ref_id 對應表B中的id,但是表B中的img值為空,表A中的img存在值。

要求

将表A中與表B關聯的img更新到表B的img中。

sql

update B as bb INNER JOIN 
(
	select  
		a.ref_id  as aid,
		a.img,
		b.id as bid 
	from 
		A as a,
		B as b
	where 
		b.img is null 
		and 
		a.ref_id = b.id 
) as t 
on bb.id = t.aid
set  bb.img=  t.img
           

建立使用者并授權

-- 建立mysql使用者
-- % 所有位址均可通路,也可指定特定的IP位址
CREATE USER '使用者名'@'可通路的主機位址' IDENTIFIED BY '密碼';

-- 給使用者授權 
-- GRANT *.* 表示全部權限
-- on *.* 表示全部資料庫全部表 
GRANT  
SELECT, INSERT, UPDATE, 
REFERENCES, DELETE, CREATE, DROP, 
ALTER, INDEX, CREATE VIEW, SHOW VIEW

ON 資料庫名稱.* TO '使用者名'@'可通路的主機位址';
           

建立觸發器

/*
	TRIGGER_NAME :觸發器名稱
	TABLE_NAME:資料表名,作用在哪個表
	[after|before] : 操作順序,after和before二選一,,分别表示之後和之前
	[update|insert|delete] :操作,三選一
*/
delimiter ||
DROP TRIGGER if EXISTS TRIGGER_NAME||
create  TRIGGER TRIGGER_NAME [after|before] [update|insert|delete] on  TABLE_NAME for each row 
begin
		-- todo
		-- 這裡寫觸發器的内容
end||
delimiter ;

           

建立視圖

/*
	VIEW_NAME:視圖名稱
*/
drop view if EXISTS VIEW_NAME; -- 若存在同名的視圖,則先删除後建立
create view VIEW_NAME as 
	-- todo
	-- 視圖内容

           

建立資料表

/*
 TABLE_NAME: 表名
 
*/
drop table if EXISTS TABLE_NAME; -- 若存在同名的表,則先删除後建立
create table TABLE_NAME (
	id int(11) not null PRIMARY key auto_increment COMMENT 'id',
	sort int(11) not null default '0' comment '排序',	
 	create_time int(11) not null COMMENT '建立時間',
	update_time int(11) null comment '更新時間',
	delete_flag TINYINT(2) not null DEFAULT '0' comment '是否删除 0否未删除,1是已删除',
	state TINYINT(1) not null DEFAULT '1' COMMENT '狀态是否可用, 0不可用,1可用',
	
	-- todo
	-- 其他字段
	
	remark varchar(255) null comment '備注'
)COMMENT '表注釋' default charset=utf8 engine=INNODB;
           

建立資料庫

/*
dbName :資料庫名稱
*/
drop database if EXISTS dbName; 
create database dbName charset=utf8 collate=utf8_general_ci;
           

建立索引

/*
TABLE_NAME:表名
[INDEX|UNIQUE |FULLTEXT|SPATIAL] : 索引類型
INDEX_NAME:索引名稱
(col_1,col_2,...) :建立索引的字段名稱,一個或多個字段
*/
ALTER table TABLE_NAME add  [INDEX|UNIQUE |FULLTEXT|SPATIAL]  INDEX_NAME  (col_1,col_2,...);
 
           

判斷集合中是否存在指定元素

/*
	判斷字元是否在一個集合中
*/
set @list='a,b,c,d';-- 集合
-- 傳回true 在集合中,false不在集合中
SELECT if (FIND_IN_SET('a', @list)>0,'true','false');
           

輸入中文查找首拼

CREATE TABLE IF NOT EXISTS `tcosler` (
  `fPY` char(1) NOT NULL,
  `cBegin` int(11) NOT NULL,
  `cEnd` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;

INSERT INTO `tcosler` (`fPY`, `cBegin`, `cEnd`) VALUES
('A', 45217, 45252),
('B', 45253, 45760),
('C', 45761, 46317),
('D', 46318, 46825),
('E', 46826, 47009),
('F', 47010, 47296),
('G', 47297, 47613),
('H', 47614, 48118),
('J', 48119, 49061),
('K', 49062, 49323),
('L', 49324, 49895),
('M', 49896, 50370),
('N', 50371, 50613),
('O', 50614, 50621),
('P', 50622, 50905),
('Q', 50906, 51386),
('R', 51387, 51445),
('S', 51446, 52217),
('T', 52218, 52697),
('W', 52698, 52979),
('X', 52980, 53640),
('Y', 53689, 54480),
('Z', 54481, 55289),
('a', 97, 97),
('b', 98, 98),
('c', 99, 99),
('d', 100, 100),
('e', 101, 101),
('f', 102, 102),
('g', 103, 103),
('h', 104, 104),
('i', 105, 105),
('j', 106, 106),
('k', 107, 107),
('l', 108, 108),
('m', 109, 109),
('n', 110, 110),
('o', 111, 111),
('p', 112, 112),
('q', 113, 113),
('r', 114, 114),
('s', 115, 115),
('t', 116, 116),
('u', 117, 117),
('v', 118, 118),
('w', 119, 119),
('x', 120, 120),
('y', 121, 121),
('z', 122, 122),
('A', 65, 65),
('B', 66, 66),
('C', 67, 67),
('D', 68, 68),
('E', 69, 69),
('F', 70, 70),
('G', 71, 71),
('H', 72, 72),
('I', 73, 73),
('J', 74, 74),
('K', 75, 75),
('L', 76, 76),
('M', 77, 77),
('N', 78, 78),
('O', 79, 79),
('P', 80, 80),
('Q', 81, 81),
('R', 82, 82),
('S', 83, 83),
('T', 84, 84),
('U', 85, 85),
('V', 86, 86),
('W', 87, 87),
('X', 88, 88),
('Y', 89, 89),
('Z', 90, 90),
('0', 48, 48),
('1', 49, 49),
('2', 50, 50),
('3', 51, 51),
('4', 52, 52),
('5', 53, 53),
('6', 54, 54),
('7', 55, 55),
('8', 56, 56),
('9', 57, 57);


-- 文字
set @text = "張";

SELECT c. *
FROM tcosler c 
WHERE
    CONV(
        HEX(
            LEFT(
                CONVERT( @text
                USING gbk ) ,
            1 )
        ) , 16, 10
    )
 BETWEEN c.cBegin
 AND c.cEnd