13

MYSQL查询A表中不存在于B表中的所有符合条件的数据

在开发过程中,总有一些需求是需要查看在A表中ID不存在于B表中的ID的情况:

下面有三种方法可以实现这一需求:

第一种:使用Not in 方法通过子查询的结果集来做过滤:

这种情况最常见也是最容易理解的逻辑SQL代码,但是会有很多问题出现。 Continue reading

02

如何开启MySQL数据库的InnoDB模式

MySQL主流引擎是MyISAM模式,这种模式方便使用和维护,Innodb为后来加入的另外一种模式,这种模式支持的功能更强大,是未来发展趋势。
又有个小项目,本地开发(也是框架需要)使用的InnoDB引擎,但当项目开发得差不多了,需要实测上到客户主机后,发现没有InnoDB引擎,说实话,还是头一回碰到没有InnoDB引擎的情况,客户使用的是护卫神服务器管理系统,安装环境可能是套件,没有细了解,那么如何开启MySQL数据库的InnoDB模式呢?下面是我在网上找的。 Continue reading

14

mysql数据库主键和外键的相关知识

一、什么是主键、外键:

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键
比如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键

成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键

同理 成绩表中的课程号是课程表的外键 Continue reading

14

mysql索引类型(normal、unique、full textl)及索引方法(BTree、Hash)的概念与使用场景

mysql索引类型

mysql索引类型normal,unique,full text的区别是什么?

normal:表示普通索引

unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique

full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

总结,索引的类别由建立索引的字段内容特性来决定,通常normal最常见。 Continue reading

09

MySQL命令行操作

登录mysql:
mysql -u 用户名 -p
Enter password: 输入mysql密码

通过CMD进入没有设置环境变量的MYSQL
先进入到MYDQL安装目录下的./bin文件夹,之后输入
./mysql.exe -h localhost -u root -p

./mysql.exe -u root -p
回车
Enter password: 输入mysql密码

显示所有数据库列表:
mysql> show databases;

显示所有数据表列表:
mysql> show tables;

选择进入某数据库:
use mysql;

显示数据表的结构:
describe 表名;

建库:
create database 库名;

建表:
use 库名;
create table 表名 (字段设定列表);

删库和删表:
drop database 库名;
drop table 表名;

将表中记录清空:
delete from 表名;

显示表中的记录:
select * from 表名

修改表名:
ALTER TABLE admin_user RENAME TO a_user

命令行导入数据库.sql文件:
mysql> use dbname;
mysql> source /root/databack.sql
或:
mysql -u 数据库用户名 -p 数据库名 < 预导入的文件名.sql (最后没有分号)
mysql -u abc -p dbname < databack.sql

命令行导出数据库.sql文件:
mysqldump -u 数据库用户名 -p 目标数据库 > 存储的文件名
mysqldump -u root -p dbname >abc.sql
然后回车输入密码即可

命令行导出多个数据库:
mysqldump -u root -p –add-drop-database –databases dbName1 dbName2… > sqlFilePath
–add-drop-database : 该选项表示在创建数据库的时候先执行删除数据库操作
–database : 该选项后面跟着要导出的多个数据库,以空格分隔

命令行导出某个数据库的某个表:
mysqldump -u root -p dbName tableName > sqlFilePath

命令行只导出数据库结构,不带数据:
mysqldump -u root -p -d dbName > sqlFilePath
-d : 只备份结构,不备份数据。也可以使用”–no-data”代替”-d”,效果一样。

ALTER TABLE admin_user RENAMETO a_user

09

windows CMD命令行备份MySQL数据库

备份数据库

TIM20180209195654

1、cmd进入mysql安装目录下的bin文件夹;

2、输入命令:

3、然后输入数据数据库密码。

4、备份完成。

恢复(还原)数据库

1、将要导入的.sql文件移至mysql安装目录下的bin文件下,这样的路径比较方便(当然如果不这么做的话,使用绝对路径)
2、CMD进入mysql安装目录下的bin文件夹
3、进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p   (输入同样后会让你输入MySQL的密码)
4、在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
或输入:
4-1、CREATE DATABASE 数据库名;
4-2、 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER ON 数据库名.* TO 数据库名@localhost IDENTIFIED BY ‘密码’;
4-3、 SET PASSWORD FOR
‘数据库名’@'localhost’ = OLD_PASSWORD(‘密码’);
依次执行3个命令完成数据库创建。注意:中文 “密码”和“数据库名”是户自己需要设置的。
5、输入:mysql>use 目标数据库名
如我输入的命令行:mysql>use news;
6,导入文件:mysql>source 导入的文件名;
如我输入的命令行:mysql>source news.sql;

MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。

十二 28

MySQL语句:如果存在则更新,不存在则插入新记录

INSERT INTO … ON DUPLICATE KEY UPDATE …

表结构:

该语句是基于唯一索引或主键才可使用的,如下语句:

必要条件:其中字段id或keyword或count,至少有一个字段属性是主键或唯一索引。

语句解释:如果查询主键id=1或者唯一索引keyword=’织梦先生’的记录存在,则更新此记录的count字段 count=count+1;如果没有查询主键id=1或者唯一索引keyword=’织梦先生’的记录都不存在,则插入一行记录。

其它:

假定id=1的记录存在,则下面语句与上面语句是等效的

 

十一 06

Python MySQL使用持久连接

python连接mysql中没有长连接的概念,但我们可以利用mysql的ping机制,来实现长连接功能~
思路:
1 python mysql 的cping 函数会校验连接的可用性,如果连接不可用将会产生异常
2 利用这一特性,构造一个连接丢失的循环,不断尝试连接数据库,直到连接恢复
3 使用这样的机制不需要关闭数据库功能,对于驻留进程,有大量数据进行写操作时,很有用途