SQL学习

本文最后更新于 2025年4月17日 中午

用户操作

创建用户

1
create user '<用户名>'@'<host>' identified by '<密码>';

说明:

  • host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  • 如果想只让某个IP段的主机连接,可以修改为:create user 'admin'@'192.168.100.%' identified by 'password';

删除用户

1
2
drop user <用户名>; //默认情况下删除'username'@'%'
drop user '<用户名>'@'<host>'; //删除指定host的用户

修改用户密码

1
2
mysqladmin -u admin -h localhost -p password "password"
mysqladmin -u <user> -p <password>

授权

添加授权

1
grant all on <库名>.<表名> to '<用户名>'@'<host>';

撤销权限

1
revoke <权限> on <库名>.<表名> from '<用户名>'@'<host>';

查询某用户的授权情况

1
show grants for '<用户名>'@'<host>';

说明:

  • 权限 – grant all为授予用户所有操作权限。可单独设置,如select , insert , update 等。
  • 授权 – 如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示, 如 .

刷新授权表

1
flush privileges;

创建库表

创建数据库

1
create database <库名>;

创建数据表

1
create table <库名>.<表名> (<字段1 数据类型>,<字段2 数据类型>,......);

示例:

1
2
3
4
5
6
7
8
create table users (
id int auto_increment primary key,
username varchar(50) not null,
phone varchar(11) not null,
email varchar(100) not null,
birthdate date,
active boolean default true
);

实例解析:

  • id: 用户 id,整数类型,自增长,作为主键。
  • username: 用户名,变长字符串,不允许为空。
  • phone: 用户手机号,数字整数,最大11位。
  • email: 用户邮箱,变长字符串,不允许为空。
  • birthdate: 用户的生日,日期类型。
  • active: 用户是否已经激活,布尔类型,默认值为 true。

常见数据类型

数据类型 描述
id INT AUTO_INCREMENT PRIMARY KEY,整数类型,自增长,作为主键
integer(size)  仅容纳整数。在括号内规定数字的最大位数。
int(size) 
smallint(size) 
tinyint(size) 
decimal(size,d)  容纳带有小数的数字。size 规定数字的最大位数。”d” 规定小数点右侧的最大位数。
numeric(size,d) 
varchar(size)  容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。
date(yyyymmdd)  容纳日期。
is_active 布尔类型,默认值为 true

增删查改

1
show databases; //查询当前空间下所有库
1
show tabses; //查询当前库下所有表
1
desc <表名>; //查询表的字段结构
1
select <值> from <库>.<表>; //查询某列值,可以写多个值,以逗号分隔;也可以用通配符“*”查询所有值。
1
select <值> from <库>.<表> where <值>=<值>; //查询某行值,where后跟上定位条件,和select查询的某列值形成and的关系。

1
insert into <库>.<表> (<列1>,<列2>) values (<'新值1'>,<'新值2'>,......);

1
update <库>.<表> set <列>=<'新值'> where <列>=<'值'>;

1
delete from <库>.<表> where <列>=<'值'>; //删除某行
1
delete from <库>.<表>; 或 delete * from <表>; //删除所有行
1
drop table <库>.<表>; //删除表
1
drop database <库>; //删除库

常见问题

解决3306无法远程连接问题

1
vim /etc/mysql/mysql.conf.d/mysqld.cnf

将“bind-address = 127.0.0.1”这行注释

删除用户名为空的用户

以root账户登录MySQL,需输入root密码

1
mysql -u root -p

选择mysql库

1
use mysql;

删除账号为空账户

1
delete from user where User='';

刷新权限

1
flush privileges;

退出

1
exit