mysql常用命令
例如:
create user 'user_one'@'localhost' identified by '1234';--创建一个只能本机访问的用户
create user 'user_two'@'192.168.1.204.%' identified by '1234';--创建一个可以局域网访问的用户
create user 'user_three' identified by '1234';--创建一个可全网访问的用户
select host,user,password from user;--查看user表,host用户名和密码
RENAME USER 'ceshi'@'172.16.1.1' TO 'ceshi1'@'172.16.1.11' -- 设置密码
set password = password('修改密码'); -- 为当前用户设置密码
set password for 用户名 = password('修改密码'); -- 为指定用户设置密码
set password for 'user_three' = password('123456789'); -- 指定'user_three'用户设置密码
drop user 'user_two'@'192.168.1.204.%'; --分配权限给用户
语法解析: 权限列表: all[privileges]: 表示所有权限; delete:允许使用delete; select:允许使用select; update:允许使用update; insert:允许使用insert 等... *.* :表示所有库的所有表 库名.表名 :表示某库下面的某表
grant update,insert on *.* to user_one@'localhost' identified by "1234" with grant option;
mysql> grant all on *.* to root@'10.0.0.51' identified by 'oldboy123';
#怎么去授权一个超级管理员呢 mysql> grant all on *.* to root@'10.0.0.51' identified by 'oldboy123' with grant option;
#其他参数(扩展)
max_queries_per_hour:一个用户每小时可发出的查询数量
max_updates_per_hour:一个用户每小时可发出的更新数量
max_connetions_per_hour:一个用户每小时可连接到服务器的次数 max_user_connetions:允许同时连接数量
--查看权限 show grants for 用户名[@主机地址];
show grants for'user_one'@'localhost';
--查看当前用户权限 show grants;
--撤消权限
revoke 权限列表 on*|库名 . *|表名 from 用户名[@主机地址];
revokeallprivileges, grantoptionfrom 用户名[@主机地址];-- 撤销所有权限
revoke update on *.* from 'user_one'@'localhost';
关键字:create 创建数据库(增)createdatabase 数据库名 [数据库选项];
/*数据库选项:字符集和校对规则*/
字符集:一般默认utf8;
校对规则常见:
⑴ci结尾的:不分区大小写
⑵cs结尾的:区分大小写
⑶bin结尾的:二进制编码进行比较
==================================================================
/*关键字:show 查看当前有哪些数据库(查)*/
show databases;
==================================================================
/*查看数据库的创建语句*/
show createdatabase 数据库名;
==================================================================
/*关键字:alter 修改数据库的选项信息(改)*/
alterdatabase 数据库名 [新的数据库选项];
alter database test default charset gbk;
==================================================================
/*关键字:drop 删除数据库(删)*/
dropdatabase 数据库名;
==================================================================
/*关键字:use 进入指定的数据库*/
use 数据库名;
show tables;
==================================================================
/*关键字:like 模糊查询*/
通配符:_可以代表任意的单个字符,%可以代表任意的字符 show tables like'模糊查询表名%';
==================================================================
/*查看表的创建语句*/
show createtable 表名;
==================================================================
/*查看表的结构*/
desc 表名;
==================================================================
/*关键字:drop 删除数据表(删)*/
droptable[if exists] 表名
droptableifexists test;
==================================================================
/*关键字:alter 修改表名(改)*/
altertable 旧表名 rename to 新表名;
altertable 表名 add 新列名 字段类型 [字段选项];
alter table test add name char(10) not null default '' comment '名字';
altertable 表名 drop 字段名;
例如:
alter table test drop content;
altertable 表名 modify 字段名 新的字段类型 [新的字段选项];
alter table test modify name varchar(100) not null default 'admin' comment '修改后名字';
altertable 表名 modify 字段名 字段类型 [字段选项] first;
alter table test modify name varchar(100) not null default 'admin' comment '最前面' first;
altertable 表名 modify 字段名1 字段类型 [字段选项] after 字段名2;
alter table test modify name varchar(100) not null default 'admin' comment 'time字段后面' after time;
altertable 表名 change 原字段名 新字段名 新的字段类型 [新的字段选项];
alter table test change name username varchar(50) not null default '' comment '用户名字';
distinct: 去重,去掉重复的查询结果.
create table user( id int(10) unsigned not null comment 'id', name char(20) not null default '' comment '名字', home varchar(50) not null default '' comment '家庭地址' )engine=InnoDB default charset=utf8 comment='用户表'; insert into user values(1,'admin_a','gz'),(2,'admin_b','sh'),(3,'admin_c','bj'),(4,'admin_d','sz');
--从from获得的数据源中进行查询--整型: 1表示真(返回查询记录);0表示假(不返回记录)
--表达式由运算符和运算数组成.
--运算数: 变量(字段)、值、函数返回值
<, >, <=, >=, =, !=或<>, ISNULL
between and | not between and --例如: between A and B; 相当于区间[A,B].
in | not in --例如:in表示某个值出现; not in表示没出现在一个集合之中.isnull|isnotnull--空值查询
like--通配符; _ :代表任意的单个字符; % :代表任意的字符
&&(AND), ||(OR), !(NOT), XOR异或
--order by 字段1[asc|desc],字段n[asc|desc]
--排序: asc 升序(默认),desc 降序
--limit offset,length
语法解析:
offset是指偏移量,默认为0;
length是指需要显示的记录数.
create table copy( id int(10) unsigned not null comment 'id', name char(20) not null default '' comment '名字' )engine=InnoDB default charset=utf8 comment='复制表'; insert into copy values(1,'admin_a'),(2,'admin_b'),(3,'admin_c');
update 表名 set 字段1=值1,字段n=值n [where条件][order by 字段名 asc|desc][limit];
--联合查询:就是将多个查询结果进行纵向上的拼接. (select语句2的查询结果放在select语句1查询结果的后面)
--语法:
select语句1 union[all | distinct]select 语句2 union[all | distinct]select 语句n
将多个表的字段进行连接,可以指定连接条件.
--交叉连接 cross join
select*|字段列表 from 表名1 crossjoin 表名2;
一张表的一条记录去连接另一张表中的所有记录,并且保存所有的记录包含两个表的所有的字段.
结果上看,就是对两张表做笛卡尔积,有n1*n2条记录.
select*|字段列表 from 左表 [inner]join 右表 on 左表.字段 = 右表.字段 [五子句];
数据在左表中存在,同时在右表中又有对应的匹配的结果才会被保存. 如果没有匹配上,数据没有意义不会保存.
通常就是两张表中存在相同的某个字段.(项目中通常是关联主键ID) using() 用法连接两表
-- 左外连接 left joinselect*|字段列表 from 左表 left[outer]join 右表 on 左表.字段 = 右表.字段 [五子句];
如果数据不存在,左表记录会出现,而右表为null填充
select*|字段列表 from 右表 right[outer]join 左表 on 右表.字段 = 左表.字段 [五子句];
如果数据不存在,右表记录会出现,而左表为null填充
--自然内连接 natural inner joinselect*|字段列表 from 左表 natural [inner]join 右表; 自然内连接其实就是内连接,这里的匹配条件是由系统自动指定.
--自然外连接 natural outer join 自然外连接分为自然左外连接和自然右外连接.匹配条件也是由系统自动指定.
--自然左外连接 natural left joinselect*|字段列表 from 左表 natural left[outer]join 右表;
--自然右外连接 natural right joinselect*|字段列表 from 右表 natural right[outer]join 左表;
select*|字段列表 from 表名 where(字段1,字段n)=(行子查询结果)
select*from student where score=(selectmin(score) asminfrom student);--查询班级最低成绩学生的记录
select * from student where class in ('B','C') order by score;--查询B班和C班,排序score字段升序
- IS NULL: 当列的值是 NULL,此运算符返回 true。
- IS NOT NULL: 如果该值不为NULL,则此表达式返回true(也就是1)。 否则返回false(也就是0)。