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