各类dbms排名

cs模型

mysql字符集设置

查看存储引擎,字符集

show variables like '%storage_engine%';

show VARIABLES like '%max_allowed_packet%';
show variables like '%storage_engine%';
show variables like 'collation_%';
show variables like 'character_set_%';

临时设置字符集

SET NAMES 'utf8';
SET character_set_client = utf8;
SET character_set_connection = utf8;
SET character_set_database = utf8;
SET character_set_results = utf8;
SET character_set_server = utf8; SET collation_connection = utf8_general_ci;
SET collation_database = utf8_general_ci;
SET collation_server = utf8_general_ci; 缺陷是: 登出后设置的就失效了.

永久设置字符集

参考: http://blog.csdn.net/u013474104/article/details/52486880

D:\Program Files\mysql-5.7.19-winx64\my.ini
[mysqld]
default-storage-engine = innodb
innodb_file_per_table = 1
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8' [mysql]
default-character-set = utf8 [mysql.server]
default-character-set = utf8 [mysqld_safe]
default-character-set = utf8 [client]
default-character-set = utf8

mysql配置文件

mysql生产配置参考

- 配置文件查找先后顺序
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
C:\windows\my.ini
C:\my.ini
E:\dev\mysql57\my.ini - 通过配置文件设置字符集
default-storage-engine = innodb
innodb_file_per_table = 1
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'

mysql crud语句

- 建表
create table log(ip varchar(40), status int, count int); - 插入记录
insert into log values ('1','1',1) - 删除某条记录
delete from mysql.user where user='';
- 查看建表语句
show create database test; - 查看权限
show grants - 创建用户并授权
create database bbs;
grant all on bbs.* to dev@localhost identified by '123456';
grant all on bbs.* to dev@'%' identified by '123456';

er图与实体关系映射

不得不说,这个鬼东西是上大学老师讲的图,类似. 坑了我不少年. 当初就不想学这玩意. 后来自己弄,发现并不是那回事,大学里老师讲的类似隔靴搔痒,泯灭了我对sql的兴趣. 这里我重拾sql,不用看这部分了.

数据库设计(一对一、一对多、多对多)

参考

关联映射:一对多/多对一

存在最普遍的映射关系,简单来讲就如球员与球队的关系;
一对多:从球队角度来说一个球队拥有多个球员 即为一对多
多对一:从球员角度来说多个球员属于一个球队 即为多对一数据表间一对多关系如下图:

直观上给人的感觉是, 建一个表时候,觉得一个字段冗余了,独立出去,通过外链方式来访问

这里可以使用navicat操作: 链接:https://pan.baidu.com/s/1hr83YCG 密码:qmi7

- 建库
create database learn; - 创建球队表
create table qiudui(
id int auto_increment primary key not null,
name varchar(20) not null,
localtion varchar(50) not null
); - 给球队表插入数据
insert into qiudui(name,localtion) values('qd1', 'xian');
insert into qiudui values(2, 'qd2', 'beijing');
insert into qiudui values(3, 'qd3', 'shanghai'); - 创建球员表, 外键到球队
create table qiuyuan(
id int auto_increment primary key not null,
name varchar(20),
qiudui_id int,
FOREIGN KEY (qiudui_id) REFERENCES qiudui(id)
); - 给球队表插入数据
insert into qiuyuan values(1,'qy1',1);
insert into qiuyuan values(2,'qy2',2);
insert into qiuyuan values(3,'qy3',3); - 默认外键策略: 球队表里的记录不能删除,除非与之关联的球员没了
delete from qiudui where id=3;

关联映射:一对一

一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。

数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。

一对一外键关联,图示如下:

一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系。图示如下:

关联映射:多对多

多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。

数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多。

数据表间多对多关系如下图:

[django]主次表如何取出对方数据[主表obj.子表__set()]

navicat

链接:https://pan.baidu.com/s/1hr83YCG 密码:qmi7

使用navicat导出表内容为execl或者json

使用navicat查看ER图(即一对一一对多关系图)

mysql时间字段

mysql运维

总体指引

mysql指引
1,mysql基本安装
2,mysql多实例安装与维护
3,备份恢复 备份数据库
分备数据库
分备表
恢复数据库

阿里云sql某个表的导入导出

msyqldump -h 192.168.1.1 -uroot -p --set-gtid-purged=off --skip-tz-utc bbs bbs_tb1 > bbs_tb1.sql
mysql -uroot -p < bbs_tb1.sql

centos7 安装mysql

yum install mariadb-server mariadb -y

修改my.conf
[mysqld]
default-storage-engine = innodb
innodb_file_per_table
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8' systemctl start mariadb && systemctl enable mariadb

linux下查看nginx,apache,mysql,php的编译参数

1、查看linux的内核版本,系统信息,常用的有四种办法:
uname -a
more /etc/issue
cat /proc/version
more /etc/redhat-release
2、nginx编译参数:
#/usr/local/nginx/sbin/nginx -V
3、apache查看版本编译参数
apache版本:
httpd -v
apache编译参数:
# cat /usr/local/apache2/build/config.nice
4、查看php版本及编译参数
php编译参数:
# /usr/local/php/bin/php -i |grep configure
php -v
5、查看mysql版本及参数
查看mysql版本:
mysql -v 或者是--help|grep Distrib来查看;
进入数据库
select version(); 或者status;或者/s;
mysql编译参数:
# cat "/usr/local/mysql/bin/mysqlbug"|grep configure

mysql初始化安装完成后优化

mysql安装方式: 不管哪种方式装完成数据库,都需要对数据库做一些优化.

  • 1,yum
  • 2,源码
  • 3,二进制
  • 4,源码+yum
mysql> select host,user from mysql.user;
+-----------+------+
| host | user |
+-----------+------+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | |
| localhost | root |
| www | |
| www | root |
+-----------+------+
6 rows in set (0.00 sec) - 删掉用户名为null的
mysql> delete from mysql.user where user='';
Query OK, 2 rows affected (0.00 sec) mysql> select host,user from mysql.user;
+-----------+------+
| host | user |
+-----------+------+
| 127.0.0.1 | root |
| ::1 | root |
| localhost | root |
| www | root |
+-----------+------+
4 rows in set (0.00 sec) drop user ''@'localhost';
drop user ''@'::1';
drop user 'root'@'lanny';
drop user ''@'lanny';
mysql> select user,host from mysql.user; mysql>
# 有时候drop删不掉(可能包含特殊字符),才会用delete命令 - 删掉ipv6的:
mysql> delete from mysql.user where host='::1';
Query OK, 1 row affected (0.00 sec) mysql> select user,host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | localhost |
| root | www |
+------+-----------+
3 rows in set (0.00 sec) - 删掉www的
mysql> delete from mysql.user where host='www';
Query OK, 1 row affected (0.00 sec) mysql> select user,host from mysql.user;
+------+-----------+
| user | host |
+------+-----------+
| root | 127.0.0.1 |
| root | localhost |
+------+-----------+
2 rows in set (0.00 sec) mysql> - 删掉test库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec) mysql> drop database test;
Query OK, 0 rows affected (0.00 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

查看库/表大小和修改时间

1.查看数据库的大小
use 数据库名 SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH) FROM information_schema.TABLES where TABLE_SCHEMA='数据库名'; 得到的结果是以字节为单位,除/1024为K,除/1024/1024为M。 2.查看表的最后mysql修改时间 select TABLE_NAME,UPDATE_TIME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA='数据库名'; 可以通过查看数据库中表的mysql修改时间,来确定mysql数据库是否已经长期不再使用。 3.查看数据库中各个表占用的空间大小
如果想知道MySQL数据库中每个表占用的空间、表记录的行数的话,可以打开MySQL的 information_schema 数据库。在该库中有一个 TABLES 表,这个表主要字段分别是:
TABLE_SCHEMA : 数据库名
TABLE_NAME :表名
ENGINE :所使用的存储引擎
TABLES_ROWS :记录数
DATA_LENGTH :数据大小
INDEX_LENGTH :索引大小
其他字段请参考MySQL的手册,我们只需要了解这几个就足够了。
所以要知道一个表占用空间的大小,那就相当于是 数据大小 + 索引大小 即可。 SQL:
SELECT TABLE_NAME,DATA_LENGTH+INDEX_LENGTH,TABLE_ROWS FROM TABLES WHERE TABLE_SCHEMA='数据库名' AND TABLE_NAME='表名' 4.查看表的最后mysql修改时间
select TABLE_NAME,UPDATE_TIME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA='数据库名';
可以通过查看数据库中表的mysql修改时间,来确定mysql数据库是否已经长期不再使用。

[sql]mysql管理手头手册,多对多sql逻辑的更多相关文章

  1. mybatis 一次执行多条SQL MySql+Mybatis+Druid之SqlException:sql injection violation, multi-statement not allow

    如果用JDBC jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=utf8 ...

  2. [sql]mysql参数(配置)手册

    my-innodb-heavy-4G.cnf配置文件注解 [client] #客户端 port = 3306 #mysql客户端连接时的默认端口号 socket = /application/mysq ...

  3. SQL Server 管理套件(SSMS)

    SQL Server 管理套件(SSMS) 当您按照之前章节的步骤顺利安装完 SQL Server 2014 后,要做的第一件事就是需要打开 SQL Server 管理套件,并且要知道怎样去使用它. ...

  4. mysql数据库性能优化(包括SQL,表结构,索引,缓存)

    优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当 ...

  5. MySQL 的性能(上篇)—— SQL 执行时间分析

    简介 文中内容均为阅读前辈的文章所整理而来,参考文章已在最后全指明 本文分为上下两篇: 上篇:MySQL 的 SQL 执行时间分析 下篇:MySQL 性能优化 后端开发必然会接触到数据库,数据层的优劣 ...

  6. MySQL基本语法(一):和SQL Server语法的差异小归纳

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  7. MySQL 的性能(上篇)—— SQL 执行分析

    简介 文中内容均为阅读前辈的文章所整理而来,参考文章已在最后全指明 本文分为上下两篇: 上篇:MySQL 的 SQL 执行分析 下篇:MySQL 性能优化 后端开发必然会接触到数据库,数据层的优劣会影 ...

  8. MySQL与OLAP:分析型SQL查询最佳实践探索

    搞点多维分析,糙快猛的解决方式就是使用ROLAP(关系型OLAP)了.数据经维度建模后存储在MySQL,ROLAP引擎(比方开源的Mondrian)负责将OLAP请求转化为SQL语句提交给数据库.OL ...

  9. 学习笔记之SQL / MySQL

    SQL Fiddle(在线执行SQL语句的网站) http://www.sqlfiddle.com/ MySQL https://www.mysql.com/ MySQL :: MySQL 5.7 R ...

随机推荐

  1. spring applicationContext.xml 配置文件 详解

      <?xml version="1.0" encoding="UTF-8"?>   <beans xmlns="http://ww ...

  2. c# MVC Take的使用

    Take的使用 myPicture = dbContext.MyPictures.Where(u => u.Width == request.Width && u.Height ...

  3. linux Tar 命令参数详解

    tar命令 . 作用 tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户. . 格式 tar [主选项+辅选项] 文件或目录 eg: tar z ...

  4. 【读书笔记-数据挖掘概念与技术】数据仓库与联机分析处理(OLAP)

    之前看了认识数据以及数据的预处理,那么,处理之后的数据放在哪儿呢?就放在一个叫“数据仓库”的地方. 数据仓库的基本概念: 数据仓库的定义——面向主题的.集成的.时变的.非易失的 操作数据库系统VS数据 ...

  5. python框架---->pymysql的使用

    这里面学习一下python中操作mysql的第三方库pymysql的使用.很多我们以为一辈子都不会忘掉的事情,就在我们念念不忘的日子里.被我们遗忘了. pymysql的简单使用 我们创建一张表来进行下 ...

  6. Makefile伪目标

    https://www.zybuluo.com/lishuhuakai/note/210174 本节我们讨论一个Makefile中的一个重要的特殊目标:伪目标. 伪目标是这样一个目标:它不代表一个真正 ...

  7. github上打包的样式为什么在预览的时候,出现404

    这是资源引用的问题 在这里主要是需要在dist的index.html文件内将"./static/css/style.css"改为"static/css/style.css ...

  8. 让google.com不跳转到google.com.hk

    自从google的服务器搬离中国大陆后,大陆地区用户用google服务时会自动跳转到香港的http://google.com.hk,,有关键字过滤而且偶尔不是很稳定,这对我们的生活工作都造成了困扰. ...

  9. 23种设计模式之责任链模式(Chain of Responsibility)

    责任链模式是一种对象的行为型模式,避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止.责任链模式不保证每个请求都被接受, ...

  10. 分布式文件系统FastDFS架构剖析

    ps.本文来自于网络 一.什么是FastDfs FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载 ...