MySQL的基本操作
记录学习MySQL过程中记录的学习笔记
1 初始访问及设置
1.1 进入MySQL的用户
1.1.1 本机登陆
打开cmd,输入
mysql -u 用户名 -p
执行命令时可能会遇见无法识别’mysql’这个命令,这是因为在系统环境变量中没有相应路径导致的,添加类似于:‘C:\Program Files\MySQL\MySQL Server 5.7\bin’,默认路径。添加完成重启cmd即可。
按提示输入密码,在-p后直接输入密码也可登陆成功
1.1.2 联机登陆
与本机登陆相同,要添加上要登陆的账号所存放的IP地址
mysql -h IP -u 用户名 -p
1.2 设置MySQL用户
具体的账号生成可看下面的 “2 用户管理”完成账号的相关设置后,运行(更新):
flush
privileges;
查看用户是否生成:
select user,host
from user;
2 用户管理
2.1 用户账号、IP、密码创建
create user 'name'@'IP
' identified by 'password'
;
name:输入你的账号名字IP:输入运行登陆的IP地址,如:
‘196.168.1.1’:输入完整的IP地址,则只允许在此IP地址上登陆使用 ‘196.168.1.%’,‘196.%’:输入不完整的IP地址,其余用%填充,表示允许在相同前缀的IP下使用 ‘%’:仅有%表示允许在任何地址下使用
password:输入设置的密码
2.2 权限设置
grant select,insert on db
.t
to 'name'@"196.168.%";
revoke select,insert on db
.t
from 'name'@'196.168.%';
grant:授予权限命令权限:
all privileges:除了grant外的所有权限select:查询insert:添加update:更新
区域:允许操作的数据库或表
数据库.表:指定表 数据库.*:数据库下所有表 数据库.存储过程: *.*:所有数据库所有表
用户:被授予权限的用户,格式是’name’@‘IP’,IP的设置同上。表示允许哪个用户在哪可操作的权限
2.3 其他操作
drop user 'name'@'IP
';
# 修改用户名'
rename user 'name1'@'IP
' to 'name2
'@'IP
';
# 修改用户密码'
set password
for 'name'@'IP' = new password
;
3 数据库及数据表操作
3.1 查询操作
show databases;
ues database_name
;
show tables;
select col_name
from table_name
;
desc table_name
;
3.2 基础操作
3.2.1 数据库操作
create database name
;
create database name
default charset=utf8
;
show databases;
drop database name
;
name: 创建/删除的数据库名字default: 设置charset: 文本格式,使用utf8可以使用中文字符,使用默认会报错
3.2.2 表操作
3.2.2.1 基本操作
create table table_name
(
id
int,
name
char(123)
)engine=innodb default charset=utf8
;
show tables;
delete from table_name
;
truncate table table_name
;
drop table table_name
;
table_name: 要操作的表名设置表的内容:一个逗号代表一列,最基础设置可以直接就是列名,后面皆是可以选
null/not null: 表示数据可以为空/不可以为空 auto_increment: 表示当前列的数据将会自动增加(1、2、3、4……),一般要与后面primary key一起出现 primary key: 表约束(不能重复、不能为空),还有加速查找的功能(会生产一个文件辅助查找)
engine:引擎
innodb:支持事务(原子性),减少因为表在数据交换的过程中出现的数据错误 myisam:支持全局索引,存储速度快
清空表:
delete: 清空数据但保留数据的顺序,如上面的auto_increment,新增一个数据时会在原来的编号后加1 truncate: 完全清空
3.2.2.2 数据类型
数字型:
整型:长度由小到大,tinyint(-128~127),int(-2147483648~2147483647),bigint(-9223372036854775808~9223372036854775807)带小数:
浮点型:FLOAT,DOUBLE,数字不精确decimal:精确的小数,设置格式是:decimal(num1,num2),其中num1是数字的总位数(整数与小数),num2是小数点后的数字位数 无符号:在类型后面加unsigned 字符型:
255字符:
char:设置格式:char(num),其中num是字符型的长度,如果输入的长度比设置的要短,会自动用空字符补齐,最后此数据的长度是固定的,因此使用这个查找速度快,但较占空间varchar:设置格式:varchar(num),其中num是设置长度,这个设置不会自动补齐长度,因此输入的字符长度是多少,数据占的空间就是多少,因此使用的空间少,但在查找时使用的是遍历较耗时 更长:
text:65,535(2^16 - 1)mediumtext:166,777,215 (2^16 - 1)longtext:4,294,967,295(2^24 - 1) 时间:
DATE:YYYY-MM-DDTIME:HH:MM:SSYEAR:YYYYDATETIME:YYYY-MM-DD HH:MM:SSTIMESTAMP:YYYYMMDD HHMMSS 二进制:TinyBlob,Blob,MediumBlob,LongBolb限定选择:
enum:枚举,输入的数据只能在设置的范围内进行选择其中一个
create table table_name
(
type_name
enum('a','b','c')
)engine=innodb default charset=utf8
;
insert into table_name
(type_name
) values('b');
set:集合,输入的数据只能在设置的范围内进行选择任意个
create table table_name
(
type_name
set('a','b','c')
)engine=innodb default charset=utf8
;
insert into table_name
(type_name
) values('a, b');
其他数据:如大数据和图片等,可以将数据存入文件,数据格内填写路径
3.2.2.3 唯一索引
限制值不能重复,单列、多列联合
create table table_name
(
id
int,
unique uq_name
(id
)
)engine=innodb default charset=utf8
;
)
3.2.2.4 外键
可以实现类似枚举的功能,实现对数据的限制输入,与主键不同的是可以为空
create table table_name
(
id
int,
type_name_id
int,
constraint constraint_name
foreign key ('type_name_id',) references table_name_2
('id')
)engine=innodb default charset=utf8
;
create table table_name_2
(
id
int auto_increment primary key,
type_name
varchar(15)
)engine=innodb default charset=utf8
;
3.2.3 行操作
insert into table_name
(col1
, col2
) values(data1
, data2
);
insert into table_name
(col1
, col2
) values(data1
, data2
),(data3
,data4
);
insert into table_name
(col1
, col2
) select colx
,coly
from table2_name
;
delete from table_name
where col1
<10;
update from table_name
set col2
=3;
update from table_name
set col2
=3 where col2
<3;
select col
from table_name
;
select col
from table_name
where col1
=10;
select col
as other_col
from table_name
where col1
<10;
select col
,2 from table_name
where col1
<10;
select col
from table_name
where col
like '%2';
select col
from table_name
limit num1
;
select col
from table_name
limit num1
,num2
;
select * from table_name
order by col_name
desc;
select * from table_name
order by col_name
asc;
select * from table_name
order by col_name
desc, col_name2
asc;
select max(col
) from table_name
group by col_name
;
select max(col
) from table_name
group by col_name
having max(col
)>4;
select * from table1
,table2
where table1
.col
=table2
.col
;
select * from table1
left join table2
on table1
.col
=table2
.col
;
select * from table1
union select * from table2
;
table_name: 操作的表名colx: 操作的列名,可以不按顺序datax: 添加的数据,添加顺序与colx相同set: 设置相关区域的数据的改变select colx:查看的列名,逗号隔开,*为全部where: 添加选择范围的条件,类似于if
4 数据库的保存与加载
4.1 保存
mysqldump
-u root databases_name
> path\name
.sql -p
;
mysqldump
-u root
-d databases_name
> path\name
.sql -p
;
4.2 加载
create databases databases_name
;
mysqldump
-u root
-d databases_name
< path\name
.sql -p
;