MySQL安装
直接安装 (www.mysql.com/downloads)
集成安装(XAMPP软件)
图形化管理工具
XAMPP软件已集成phpMyAdmin
启动步骤:
打开XAMPP
启动Apache(Start)
启动MySQL(Start)
打开MySQL图形界面:
XAMPP中MySQL项的 Admin
1. 查看运行状态
sudo /etc/init.d/mysql status
2. 启动、停止、重启
sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql restart
3. 连接、退出
mysql -h主机IP -u用户名 -p
或
mysql -hlocalhost -uroot -p
exit 或 quit 或 \q
4. 修改密码
mysqladmin -u用户名 -p旧密码 password 新密码
5. 数据库备份
mysqldump -h 主机IP -u root -p 源库名 [表名1,...,表名n] > 路径/新库名.sql
或
mysqldump -h 主机IP -u root -p --all-databases > 路径/新库名.sql
或
mysqldump -h 主机IP -u root -p -B 源库名1,...,源库名n > 路径/新库名.sql
6. 库导入(恢复)
mysql -u 用户名 -p 目标库名 [目标表名] < 路径/备份库名 [表名].sql
或
mysql -u用户名 -p --all[或one]-database 目标库名 < 路径/备份库名.sql
1. 查看授权用户
select user host from mysql.user;
2. 新增用户并授权
grant 类型1 on 库名.表名 to '用户名'@'类型2' identified by '[密码]' [with grant option];
类型1 | 作用 |
---|---|
select | 选择 |
insert | 插入 |
update | 更新 |
delete | 删除 |
类型2 | 作用 |
---|---|
IP地址 | 要登陆主机的IP地址 |
localhost | 本机 |
% | 任意主机 |
with grant option | 允许再授权 |
创建一个可以从任何地方连接服务器的一个完全的超级用户:
grant all privileges on *.* to user@localhost identified by '密码' [with grant option];
3. 添加授权用户
create user '用户名'@'登录主机IP' identified by '密码';
4. 删除授权用户
drop user '用户名'@'登录主机IP';
或
delete from user where user='用户名' and host='%';
5. 删除授权
revoke all privileges on 库名.表名 from '用户名'@'%';
6. 重新加载权限表
flush privileges;
DDL(数据定义语句)
定义(创建)表/数据库:
CREATE TABLE/DATABASE
修改表/数据库:
ALTER TABLE/DATABASE
删除(覆盖)表/数据库:
DROP TABLE/DATABASE
DML(数据管理语句)
INSERT 新增
DELETE 删除
UPDATE 修改
SELECT 查询
begin;
或
start transaction;
savepoint 存点名;
rollback to 存点名;
release savepoint 存点名;
commit;
rollback;
set 字段名='隔离级别';
语句 | 隔离级别 |
---|---|
read-uncommitted | 读未提交:能读取各事务未提交的内容 |
read-committed | 读已提交:仅读取各事务提交的内容 |
repeatable-read | 可重复读:事务提交前不读取其他事务提交的内容 |
serializable | 可串行化读:前一事务未提交后一事务无法提交 |
CREATE DATABASE '库名' [default charset=utf8];
drop database 库名;
SHOW DATABASES;
USE '数据库名';
select database();
show engines;
show variables;
show create database 库名;
show tables;
show create table 表名;
desc 表名;
show columns from 表名;
drop table 表名;
alter table 原表名 rename to 新表名;
create table 表名
(
字段名1 数据类型1 [not null],
字段名1 数据类型1 [null],
字段名2 数据类型2 [primary key] [auto_increment[=初始值]],
字段名n 数据类型n(值) [default 默认值]
[index(字段名1), index(字段名n)] [或unique(字段名1), unique(字段名n)]
[foreign key(字段名) references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作]
)
[default charset='默认字符集']
;
语句 | 说明 |
---|---|
null | 允许字段值有空记录 |
not null | 不允许字段值有空记录 |
default | 默认约束 |
index | 普通索引 |
unique | 唯一索引 |
primary key | 主键 |
foreign key | 索引 |
auto_increment | 主键自增长初始值 |
default charset | 默认字符值,设定字符集为 default charset=utf8 |
数据类型 | 数字(分默认的有符号,无符号unsigned,自动补零zerofill) |
---|---|
int[(总长)] [unsigned] [zerofill] | 普通整数值,总长默认为11。有符号范围(-2147483648, 2147483647),无符号范围(0, 4294967295) |
tinyint[(总长)] [unsigned] [zerofill] | 小整数值,总长默认为4。有符号范围(-128, 127)、无符号范围(0, 255) |
smallint[(总长)] [unsigned] [zerofill] | 小整数值,总长默认为6。有符号范围(-32768, 32767)、无符号范围(0, 65535) |
mediumint[(总长)] [unsigned] [zerofill] | 大整数值,总长默认为9。有符号范围(-8388608, 8388607)、无符号范围(0, 16777215) |
bigint[(总长)] [unsigned] [zerofill] | 极大整数值,总长默认为20。有符号范围 (-9 233 372 036 854 775 808, 9 223 372 036 854 775 807)、无符号范围(0, 18 446 744 073 709 551 615))。 |
float[(总长,小数位)] [unsigned] [zerofill] | 单精度浮点数值:(-3.402 823 466 E+38,-1.175 494 351 E-38)和0和(1.175 494 351 E-38,3.402 823 466 351 E+38)、(1.175 494 351 E-38,3.402 823 466 E+38), 最多显示7个有效位 |
double[(总长,小数位)] [unsigned] [zerofill] | 双精度浮点值:(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308)和0和(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)、(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) ,最多显示15个有效位 |
decimal[(总长,小数位)] [unsigned] [zerofill] | 小数值:DECIMAL(M,D) ,如果M>D,为M+2否则为D+2。最多显示28个有效位 |
数据类型 | 字符(字符串:字节) |
---|---|
char() | 定长,0-255 |
varchar() | 变长,0-65535 |
tinyblob() | 二进制,0-255 |
blob() | 二进制长文本,0-65535 |
tinytext() | 短文本,0-255 |
text() | 长文本,0-65535 |
mediumblob() | 二进制中长文本,0-16777215 |
mediumtext() | 中长文本,0-16777215 |
longblob() | 二进制极大文本,0-4294967295 |
longtext() | 极大文本,0-4294967295 |
数据类型 | 枚举类型:(值以 , 分隔) |
---|---|
enum() | 多选,可65535个不同值 |
set() | 单选,可64个不同值 |
数据类型 | 日期时间类型:(格式) |
---|---|
year | YYYY |
date | YYYY-MM-DD |
time | HH:MM:SS |
datetime | YYYY-MM-DD HH:MM:SS |
timestamp | YYYYMMDDHHMMSS |
级联动作 | 说明 |
---|---|
cascade | 数据级联更新。当主表删除记录 或者 更新被参考字段的值时,从表会级联更新。 |
restrict | 默认值。当删除主表记录时,如果从表中有相关联记录则不允许主表删除;更新同上。 |
set null | 当主表删除记录时,从表中相关联记录的参考字段值自动设置为null;更新同上。 |
no [on delete no action on update no action] | 同理 restrict |
create index 索引名 on 表名(字段名(数据类型));
在修改表结构中添加索引:
alter table 表名 add index 索引名(字段名);
或
创建索引的值必须是唯一的:
alter table 表名 add unique 索引名(字段名);
或
指定索引为全文索引:
alter table 表名 add fulltext 索引名(字段名);
desc 表名;
或
show index from 表名[\G];
drop index 索引名 on 表名;
alter tavle 表名 modify 字段名 数据类型 not null;
或
alter table 表名 add primary key(字段名);
注意:键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空。
alter tavle 表名 modify 字段名 数据类型;
或
alter table 表名 drop primary key;
注意:先删除自增长属性,再删除主键。
alter table 表名 add foreign key(参考字段名)
references 被参考表名(被参考字段名)
on delete 级联动作
on update 级联动作;
alter table 表名 drop foreign key 外键名;
1. 在数据库中创建对应的表(Mysql)
2. 将要导入的文件拷贝到数据库默认搜索路径(shell)
sudo cp /etc/passwd /var/lib/mysql-files/
3. 执行数据导入语句(Mysql)
load data infile '绝对路径文件名'
into table 表名
fields terminated by '分隔符'
lines terminated by '\n';
查看数据库的默认搜索路径:
show variables like ‘secure_file_priv’;
chmod 666 表名.csv # 增加权限
select 库名1,...,库名n from 表名
into outfile '路径文件名.txt'
fields terminated by '分隔符'
lines terminated by '\n';
create table 表名 select 查询命令;
或
复制表结构:
create table 表名 select 查询命令 where false;
alter table 表名 add 字段名 类型 [其他];
alter table 表名 rename 字段名 类型 ;
alter table 表名 modify 字段名 新类型;
alter table 表名 change 原字段名 新字段名 类型;
alter table 表名 alter 字段 set default 新值;
或
alter table 表名 alter 字段 drop default;
或
alter table 表名 alter 字段 modify 字段 类型 not NULL default 值;
alter table 表名 drop 字段名;
insert into 表名[(字段1, ..., 字段n)] values(记录1, ..., 记录n);
select * from 表名 [条件];
或
select [distinct] 字段1, ..., 字段n, from 表名 [条件];
distinct : 不显示字段的重复值
update 表名 set 字段名1=新值1,... 字段名n=新值n [where 条件];
delete from 表名 [where 条件];
3. select 字段[或聚合函数(字段名)] from 表名
1. [where 条件]
2. [group by 条件]
4. [having 条件]
5. [order by 条件]
6. [limit 条件];
类型 | 语句 | 函数/说明 |
---|---|---|
聚合函数 | select 函数([distinct] 字段名) [as 新结果名] from 表名 | avg:求平均值。sum:求和。max:求最大值。min:求最小值。count:统计记录个数。distinct:不显示字段的重复值。 |
条件 | where 字段名 from 表名 运算符 条件 | 运算符:数值比较:=、!=、>、>=、<、<=。字符比较:=、!=。逻辑比较:and、or。范围比较:between 值1 and 值2 ; in(值1, …, 值n) ; not(值1, …, 值n)。匹配(非)空: is [not] null。模糊比较:like ‘%’ # _ 为单个字符, % 为0到多个字符。正则表达式匹配:regexp ‘正则表达式’。 |
去重 | group by 字段名 | 分组去重。先分组,再聚合,后去重。 |
再筛选 | having 字段名 运算符 条件 | 对查询结果进一步筛选。通常用于过滤group by语句返回的记录集。 |
排序 | order by | asc 为升序,默认。desc 为降序 |
显示限制 | limit | 限制显示记录个数。m : m+1 条开始。n : 显示 n 条记录 |