分类
使用笔记

网站打包备份到百度网盘方法

我以前网站放在国外vps上一直是备份到dropbox的,但是因为dropbox免费版只有2g的容量,所以我一直都是删除前一天的备份,一直有点拮据。现在把网站放到国内vps上来了,当然是要备份到国内的网盘了

分类
技术相关

nodejs连接远程mysql常见问题

Error: connect ETIMEDOUT

应该是mariadb默认只允许本地连接,修改 /etc/mysql/mariadb.conf.d/50-server.cnf 文件

然后将 bind-address 127.0.0.1 改成 0.0.0.0 然后重启mysql

Error: ER_HOST_NOT_PRIVILEGED: Host ‘xxx’ is not allowed to connect to this MariaDB server

这种是你登录的用户只允许本地连接

USE mysql;
SELECT user,host FROM user;

// 这样可以看到你的用户和权限,把localhost改成你的ip或者改成 % 允许所有ip登录

GRANT ALL PRIVILEGES ON *.* TO username@'%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;

上面该权限的代码要注意 用户名 不用加单引号,%要加,密码要加

参见 Configuring database connection results in Error: Host ‘xxxxxxx’ is not allowed to connect to this MySQL server – Atlassian Documentation

分类
Linux 使用笔记

MySQL无法连接远程数据库error 10061

ubuntu18.04下安装的mariadb无法远程连接

修改 /etc/mysql/mariadb.conf.d/50-server.cnf 文件

bind-address 127.0.0.1中的地址改成0.0.0.0

参考地址 https://www.digitalocean.com/community/questions/can-t-connect-to-mysql-server-on-ipaddress-10061

分类
学习笔记

[简记]MySQL学习笔记(5)索引视图、备份还原

推荐阅读:

基础篇 – 其他基本操作 – 实验楼


索引

索引是存放在模式(schema)中的一个数据库对象,索引的作用就是提高对表的检索查询速度,索引是通过快速访问的方法来进行快速定位数据,从而减少了对磁盘的读写操作。

索引类似于书籍的目录,可以快速定位到相关的数据,一个表可以有多个索引。

//创建索引
create index idx_temp_name on temp(name);
//组合索引
create index idx_temp_name$pwd on temp(name, pwd);
//删除索引
drop index idx_temp_name on temp;

视图

视图就是一个表或多个表的查询结果,它是一张虚拟的表,因为它并不能存储数据。

//创建、修改视图
create or replace view view_temp as select name, age from temp;
//通常不对视图的数据做修改操作,因为视图是一张虚拟的表,它并不存储实际数据。如果想让视图不被修改,可以用with check option来完成限制。
create or replace view view_temp as  select *from temp with check option;
//删除视图
drop view view_temp;
//显示创建语法
show create view v_temp;

导入

导入操作,可以把一个文件里的数据保存进一张表。导入语句格式为:

LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;

导出

导出与导入是相反的过程,是把数据库某个表中的数据保存到一个文件之中。导出语句基本格式为:

SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;

备份

mysqldump 是 MySQL 用于备份数据库的实用程序。它主要产生一个 SQL 脚本文件,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT 等。

使用 mysqldump 备份的语句:

mysqldump -u root 数据库名>备份文件名;   #备份整个数据库
mysqldump -u root 数据库名 表名字>备份文件名;  #备份整个表

恢复

source /tmp/SQL6/MySQL-06.sql
// 把备份的 bak.sql 恢复到 test 数据库:
mysql -u root test < bak.sql
分类
碎碎念

[简记]MySQL学习笔记(4)简单的修改与删除

修改数据库

删除数据库

DROP DATABASE test1;

修改数据表

重命名表

RENAME TABLE 原名 TO 新名

删除表

DROP TABLE table_name;

修改列

添加列

ALTER TABLE 表名字 ADD COLUMN 列名字 数据类型 约束;

使用AFTER col_name可以实现添加在某列后面

使用FIREST可以实现添加在最前面(左边)

删除列

ALTER TABLE 表名字 DROP COLUMN 列名字;

重命名列

ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;

修改数据类型

ALTER TABLE 表名字 MODIFY 列名字 新数据类型;

修改数据类型会导致数据消失

修改表内容

修改某值

UPDATE 表名字 SET 列1=值1,列2=值2 WHERE 条件;

删除某行

删除某行使用WHERE来指定行相关信息

DELETE FROM 表名字 WHERE 条件;
分类
学习笔记

MySQL学习笔记(3)简单SELECT语句

本文用来总结,推荐阅读


SELECT 语句用于从表中选取数据。

结果被存储在一个结果表中(称为结果集)。

用法:

SELECT 要查询的列名 FROM 表名字 WHERE 限制条件;

可用*代替可输出所有的列

数学符号条件

where限制条件可加入数学符号=,<,>,>=,<=

例如:

SELECT * FROM sstud WHERE age>=25;
SELECT * FROM sstud WHERE name='join';

AND OR

WHERE后面可以有不止一条限制,而根据条件之间的逻辑关系,可以用OR(||)AND(&&)连接:

例如:

SELECT * FROM sstud WHERE age>=23 AND age<=25 ;
SELECT * FROM sstud WHERE age=23 OR age=25;
SELECT * FROM sstud WHERE age BETWEEN 23 AND 25;

IN 和 NOT IN

INNOT IN表示在或不在。例如下面的语句用来查询在in_dpt是dpt3或dpt4中的数据。

SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN ('dpt3','dpt4');

NOT IN相反,用来查询某值不为某值中的数据。

通配符

关键字LIKE在SQL语句中和通配符一起使用,通配符代表未知字符。SQL中的通配符是_%。其中_代表一个未指定字符,%代表不定个未指定字符。

比如,要只记得电话号码前四位数为1101,而后两位忘记了,则可以用两个_通配符代替:

SELECT name,age,phone  FROM employee WHERE phone LIKE '1101__';

排序

SQL可以使用ORDER BY关键词对表进行排序。默认情况下,ORDER BY的结果是升序排列,而使用关键词ASCDESC可指定升序或降序排序。

比如,我们按salary降序排列,SQL语句为:

SELECT name,age,salary,phone FROM employee ORDER BY salary DESC;

内置函数和计算

SQL 允许对表中的数据进行计算。对此,SQL 有 5 个内置函数,这些函数都对SELECT的结果做操作:

函数名:COUNTSUMAVGMAXMIN
作用:计数求和求平均值最大值最小值

其中 COUNT 函数可用于任何数据类型(因为它只是计数),而 SUM 、AVG 函数都只能对数字类数据类型做计算,MAX 和 MIN 可用于数值、字符串或是日期时间数据类型。

select count(Code) FROM Car 查询Car表中有多少条数据
select max(Price) FROM Car  取Car表中价格的最大值
select min(Price) FROM Car  取Car表中价格的最小值
select sum(Price) FROM Car  取Car表中价格的总和
select avg(Price) FROM Car  取Car表中价格的平均值
分类
学习笔记

MySQL学习笔记(2)约束

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。

MYSQL中,常用的几种约束:

| 约束类型: | 主键 | 默认值 | 唯一 | 外键 | 非空|
| 关键字:| PRIMARY KEY | DEFAULT | UNIQUE | FOREIGN KEY | NOT NULL|

默认约束

默认值约束 (DEFAULT) 规定,当有 DEFAULT 约束的列,插入数据为空时,将使用默认值。

添加默认约束

CREATE TABLE student(
  joinTime DATETIME DEFAULT CURRENT_TIMESTAMP
 );

CURRENT_TIMESTAMP为当前时间

主键约束

主键约束列不允许重复,即任意两行的主键值都不相同;每行都具有一个主键值,也不允许出现空值;

添加主键

CREATE TABLE student(
  id INT PRIMARY KEY,
  name VARCHAR(20),
)

为已存在的表添加主键

alter table user
add primary key(id),
modify id bigint(20) AUTO_INCREMENT;

删除主键

alter table user
drop primary key,
modify id bigint(20);

外键约束

外键用来指定参照完整性约束,被指定为外键的列必需要有索引,外键参考列必需为另一个表的主键。

创建外键约束

例如表user(id,username)和表article(id,uid,title),其中article.uid是外键指向user.id主键

CREATE TABLE article (
  id bigint(20),
  uid bigint(20),
  PRIMARY KEY (id),
  CONSTRAINT fk_user_article_uid FOREIGN KEY (uid) REFERENCES user(id)
);

为没有外键约束的表添加外键约束

alter table article
add constraint fk_user_article_uid FOREIGN KEY(uid) REFERENCES user(id);

删除外键

例如删除article表的外键fk_user_article_uid

alter table article
drop foreign key fk_user_article_uid;

唯一约束

唯一约束的列的值不能重复,使用UNIQUE KEY关键字指定

创建表时添加唯一约束

create table user(
  id bigint(20) PRIMARY KEY AUTO_INCREMENT,
  email varchar(255) UNIQUE KEY
);

为已存在的表添加唯一约束

alter table user
add constraint uk_user_email UNIQUE KEY(email);

删除唯一约束

alter table user
drop key uk_user_email;

非空约束

指定为非空的字段不能取NULL

创建表时添加非空约束

create table user (
  id bigint(20) PRIMARY KEY AUTO_INCREMENT,
  email varchar(255) NOT NULL
);

为已存在的表添加非空约束

alter table user
modify column email varchar(255);
分类
学习笔记

[简记]MySQL学习笔记(1)创建数据库插入数据

首先启动mysql服务并登陆

mysql -u root

使用show databases;查看所有的数据库

创建数据库

CREATE DATABASE mysql_data;

mysql不区分大小写,但为了区分保留字,所以建议关键字使用全大写

定位到某个数据库

use mysql_data;

显示该数据库下的数据表

show tables;

创建数据表

CREATE TABLE table1 (
  rowa int(10),
  rowb char(20),
  rowc int(20)
);

数据类型

数据类型大小(字节)用途格式
INT4整数
FLOAT4单精度浮点数
DOUBLE8双精度浮点数
ENUM单选,比如性别ENUM(‘a’,’b’,’c’)
SET多选SET(‘1′,’2′,’3’)
DATE3日期YYYY-MM-DD
TIME3时间点或持续时间HH:MM:SS
YEAR1年份值 YYYY
CHAR0~255定长字符串
VARCHAR0~255 变长字符串
TEXT0~65535长文本数据

插入数据

显示该数据表下的所有数据

SELECT * FROM table1;

插入数据

INSERT INTO table1(rowname) VALUES(value)

或者直接

INSERT INTO table1 VALUES(value, value2)

一些数据类型需要用单引号括起来,一些数字类型则不用

没有指定的列的值为NULL