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, 但一定要小心 小心再小心!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值