Mysql基本的查詢方法總結:mysql創建表、索引及創建用戶權限常用操作,讀了這篇後從建庫建表到刪庫的操作你都會了

Mysql創建數據庫

CREATE DATABASE `db_databasename`  
CHARACTER SET 'utf8'  
COLLATE 'utf8_general_ci'; 

Mysql創建表

創建完數據庫可以創建表了,代碼如下:

DROP TABLE IF EXISTS `News_Channel`;
CREATE TABLE test1(
	`ID` int(11) NOT NULL AUTO_INCREMENT,
	`ChannelID` varchar(100) comment '哈哈哈哈',
	`ChannelName` varchar(100) comment '名稱,這是中文名稱',
	PRIMARY KEY(`ID`)
)ENGINE=MyISAM  DEFAULT CHARSET=utf8; 

其中的comment是對字段的說明,這裏要養成習慣,你寫說明,不僅僅是爲了別人閱讀時方便,也是爲了自己在以後的管理中方便,我的記憶中有自己寫的代碼沒有註釋,過了一段時間,回頭看,自己都不認得了,還有vachar,char,int這些字段類型,需要什麼類型可以百度一下,這裏不做爲重點了,我們以大知識點爲重。

Mysql創建用戶

創建完Mysql數據庫又創建完數據表後,要創建用戶,當然你也可以直接用root用戶,這裏建議不要用root用戶,因爲root用戶的權限比較大,單獨創建一個用戶給網站來使用就可以了,如果網站比較大,多人管理,那麼需要創建多個用戶,分配不同的角色來管理網站,各個權限都不一樣,這是下面我來說的Mysql分配權限,這一步來創建用戶:

命令:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
說明:
username:你將創建的用戶名
host:指定該用戶在哪個主機上可以登陸,如果是本地用戶可用localhost,如果想讓該用戶可以從任意遠程主機登陸,可以使用通配符
%
password:該用戶的登陸密碼,密碼可以爲空,如果爲空則該用戶可以不需要密碼登陸服務器
以下代碼均可創建一個用戶:
CREATE USER 'xiaozhang'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'xiaowang'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'xiaoliang'@'%' IDENTIFIED BY '123456';
CREATE USER 'xiaoli'@'%' IDENTIFIED BY '';
CREATE USER 'xiaodong'@'%';

Mysql查看用戶

通過如下代碼可以查看數據庫中的用戶信息。

SELECT * from mysql.`user`;

Mysql用戶授權

創建完用戶後,要給他授權,比如只讓小李有查詢的權限,不能進行其他的操作,或是讓小張有增改查的權限,不能刪除等

命令:
GRANT privileges ON databasename.tablename TO 'username'@'host'
說明:
privileges:用戶的操作權限,如SELECT,INSERT,UPDATE,TEMPORARY TABLES, EXECUTE等,如果要授予所的權限則使用ALL
databasename:數據庫名
tablename:表名,如果要授予該用戶對所有數據庫和表的相應操作權限則可用*表示,如*.*
例子:
GRANT SELECT, INSERT ON test.user TO 'xiaoli'@'%';

GRANT ALL ON *.* TO 'xiaodong'@'%';--這裏的*.*是對所有庫的所有表授權,儘量不要這麼做,指定數據庫爲好。

GRANT ALL ON news.* TO 'xiaowang'@'%';--這裏的news.*指只對news庫的所有表進行授權,此人對其他庫沒有權限的。

注意:
用以上命令授權的用戶不能給其它用戶授權,如果想讓該用戶可以授權,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

例如:Mysql分配如下權限:查、插、更新、刪除權限,這裏不包括執行存儲過程的權限,向下看,代碼如下:

GRANT SELECT, INSERT,UPDATE,DELETE ON databasename.* TO 'zhangsan'@'localhost';

執行完GRANT後,在8.0以前好像要刷新一下權限纔可,即執行 flush privileges ,而mysql8.0及以後就不要刷新了,這點沒有確認過

Mysql查看權限

通過如下代碼可以查看xiaoli這個用戶的權限

show grants for 'xiaoli'@'localhost';

創建具有執行存儲過程、創建臨時表的權限,如這個用戶需要創建存儲過程,臨時表等,可以在上面的privileges可選值中加入以下兩個權限即可。

CREATE select,insert, TEMPORARY TABLES, EXECUTE...

MySQL刪除權限

REVOKE SELECT, INSERT, UPDATE, DELETE ON *.* FROM 'xiaozhang'@'localhost'; 

具體的刪除什麼權限,可根據show grants for ‘xiaoli’@‘localhost’;查看一下此用戶有什麼權限然後再做刪除。

Mysql刪除用戶

當我們不想讓某個用戶訪問數據庫的時候,可以刪除他,使用如下:

DROP USER 'username'@'host';

Mysql創建索引

這裏列出幾個給mysql添加多個索引的方法:

1.添加PRIMARY KEY(主鍵索引)

mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

2.添加UNIQUE(唯一索引)

mysql>ALTER TABLE `table_name` ADD UNIQUE (`column`)

3.添加INDEX(普通索引)

mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

4.添加FULLTEXT(全文索引)

mysql>ALTER TABLE `table_name` ADD FULLTEXT (`column`)

5.添加多列索引

mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

Mysql常用查詢

以下來自於領誠聯技術的筆記,mysql數據查詢要根據自己的需求來寫,聯表不聯表查詢等等,按需求定製,這裏只給出幾個查詢某個時間或某個時間以前的數據如何查詢,查詢是多樣式的,我也寫不全面。大家可以自己從網絡收集。

查詢當前這周的數據 
SELECT name,submittime FROM tablename WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now()); 

查詢上週的數據 
SELECT name,submittime FROM tablename WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1; 

查詢當前月份的數據 
select name,submittime from tablename where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m') 

查詢距離當前現在6個月的數據 
select name,submittime from tablename where submittime between date_sub(now(),interval 6 month) and now(); 

查詢上個月的數據 
select name,submittime from tablename where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 

MONTH),'%Y-%m') 

select * from `user` where DATE_FORMAT(pudate,'%Y%m') = DATE_FORMAT(CURDATE(),'%Y%m') ; 

select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now()) 

select * 
from user 
where MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now()) 

select * 
from [user] 
where YEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = YEAR(now()) 
and MONTH(FROM_UNIXTIME(pudate,'%y-%m-%d')) = MONTH(now()) 

select * 
from [user] 
where pudate between 上月最後一天 
and 下月第一天

Mysql刪庫跑路(開個玩笑,職業道德使然千萬不能,哈哈~~)

刪除mysql數據庫也就一句話, drop database databasename; ok, 但一定要小心 小心再小心!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章