我以前网站放在国外vps上一直是备份到dropbox的,但是因为dropbox免费版只有2g的容量,所以我一直都是删除前一天的备份,一直有点拮据。现在把网站放到国内vps上来了,当然是要备份到国内的网盘了
(更多…)我以前网站放在国外vps上一直是备份到dropbox的,但是因为dropbox免费版只有2g的容量,所以我一直都是删除前一天的备份,一直有点拮据。现在把网站放到国内vps上来了,当然是要备份到国内的网盘了
(更多…)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;
上面该权限的代码要注意 用户名 不用加单引号,%要加,密码要加
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
推荐阅读:
索引是存放在模式(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
本文用来总结,推荐阅读
SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。
用法:
SELECT 要查询的列名 FROM 表名字 WHERE 限制条件;
可用*代替可输出所有的列
where限制条件可加入数学符号=,<,>,>=,<=
。
例如:
SELECT * FROM sstud WHERE age>=25;
SELECT * FROM sstud WHERE name='join';
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
表示在或不在。例如下面的语句用来查询在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
的结果是升序排列,而使用关键词ASC
和DESC
可指定升序或降序排序。
比如,我们按salary降序排列,SQL语句为:
SELECT name,age,salary,phone FROM employee ORDER BY salary DESC;
SQL 允许对表中的数据进行计算。对此,SQL 有 5 个内置函数,这些函数都对SELECT
的结果做操作:
函数名: | COUNT | SUM | AVG | MAX | MIN |
---|---|---|---|---|---|
作用: | 计数 | 求和 | 求平均值 | 最大值 | 最小值 |
其中 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中,常用的几种约束:
| 约束类型: | 主键 | 默认值 | 唯一 | 外键 | 非空|
| 关键字:| 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服务并登陆
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)
);
数据类型 | 大小(字节) | 用途 | 格式 |
---|---|---|---|
INT | 4 | 整数 | |
FLOAT | 4 | 单精度浮点数 | |
DOUBLE | 8 | 双精度浮点数 | |
ENUM | 单选,比如性别 | ENUM(‘a’,’b’,’c’) | |
SET | 多选 | SET(‘1′,’2′,’3’) | |
DATE | 3 | 日期 | YYYY-MM-DD |
TIME | 3 | 时间点或持续时间 | HH:MM:SS |
YEAR | 1 | 年份值 YYYY | |
CHAR | 0~255 | 定长字符串 | |
VARCHAR | 0~255 变长字符串 | ||
TEXT | 0~65535 | 长文本数据 |
显示该数据表下的所有数据
SELECT * FROM table1;
插入数据
INSERT INTO table1(rowname) VALUES(value)
或者直接
INSERT INTO table1 VALUES(value, value2)
一些数据类型需要用单引号括起来,一些数字类型则不用
没有指定的列的值为NULL