模式与数据库、数据库中的表的关系: 1个数据库下,可以有多个模式。 1个模式下,可以有0个或多个表 。   首先我来做一个比喻,什么是User,什么是Database,什么是Schema,什么是Table,什么是列,什么是行,?   我们可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table就被放入每个房间中,不能放置在房间之外。然后床上可以放置很多物品,就好比Table上可以放置很多列和行一样。所以Schema包含的是Object,而不是User。   User是每个对应数据库的主人,既然有操作数据库的权利,就肯定有操作数据库中每个Schema(房间)的权利。换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的,他有完全的操作权,。我们还可以给User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Ro 继续阅读 >>


李东林 18/01/02 20:55:18
什么是主键、外键 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。 比如: 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯一的,学号就是一个主键 课程表(课程编号,课程名,学分) 其中课程编号是唯一的,课程编号就是一个主键 成绩表(学号,课程号,成绩) 成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以学号和课程号的属性组是一个主键 成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键。 同理:成绩表中的课程号是课程表的外键。 定义主键和外键主要是为了维护关系数据库的完整性,总结一下: 1.主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 2.外键用于与另一张表的关联。是能确定另一张表记录的字 继续阅读 >>


董恒毅 17/11/18 20:24:39
什么是索引 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 假设我们创建了一个名为people的表: CREATE TABLE people (peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL); 然后,我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一小部分(在数据文件中name列没有任何明确的次序): 如果我们创建了name列的索引,MySQL将在索引中排序name列: 对于索引中的每一项,MySQL在内部为它保存一个数据文件中实际记录所在位置的“指针”。因此,如果我们要查找name等于“Mi 继续阅读 >>


董恒毅 17/11/16 16:44:37
0x01 前言 用过Django的小伙伴都知道,Django的ORM是自带的,比较特殊,而且集成了很多功能,比如数据库迁移… 何为ORM,个人之见解,简化sql语句的书写,将关系型数据库的一张张表转化为了python的类,最大的好处是简化了学习成本,不会sql语句的程序员也能平滑的使用数据库,并且天生防sql注入。flask可以使用SQLAlchemy,包名为flask-sqlalchemy.至于具体用法翻译的官方文档讲的也足够清楚。大家直接谷歌跟着文档就能搞定,本篇主要讲如何进行数据库迁移。 flask的小工具 大家从Django转至Flask最明显的一个差异就是,flask直接运行就可以启动服务,Django是使用了runserver来进行运行。至于好坏大家自行斟酌。这里提一个插件。flask-script。pip安装即可。 from flask_script import Manager ...... manager = Manager(app) ...... #app.run() #注释这句 manager.run() 这样,启动的方式 继续阅读 >>


李余通 17/09/24 20:05:11
第一步:啥叫句柄,就是一个数字,就和你去饭店吃饭要排队,前台小姐给你分配了一个编号一样,然后她可以通过编号找到你。而在操作系统或者某种其他编程系统中,句柄就是这样的一个编号,用来对各种奇奇怪怪的东西编号,系统对你来说是一个黑箱,你只能通过这个编号向系统要东西 第二步:C语言操作mysql数据库常用函数 所用到的头文件: mysql/mysql.h 功能: 获得或初始化一个MYSQL句柄 函数原型: MYSQL *mysql_init(MYSQL *mysql) 函数返回值: 一个被始化的MYSQL*句柄 备注: 在内存不足的情况下,返回NULL 函数功能: 连接一个MySQL服务器(在连接之前,必须先进行过初始化) 函数原型: MYSQL *mysql_real_connect(MYSQL *mysql,const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsi 继续阅读 >>


刘生玺 17/09/09 14:31:18
第一部分c语言操作数据库 1、连接 MYSQL *mysql mysql=mysql_init(NULL);//初始化一下 mysql_real_connect(mysql,HOST,USER,PASSWD,TESTDB,0,NULL,0) ①HOST是主机名 ②user是ID ③passwd是密码 ④TESTDB是数据库的名称 2、信息错误处理 mysql_error(mysql) 3、对数据库进行操作(具体字符串在第二部分) mysql_real_query(mysql,query,strlen(query)) query是字符串 int result=mysql_affected_rows(mysql)//获取受到影响的行 如果返回值为0,结果就是没有受到影响,数据库中没有想获取的数据 4、储存数据结果和释放空间 MYSQL_RES res=mysql_store_result(mysql) mysql_free_result(res)//必须执行才可以进行后续的操作,不然会出错 5、获取行和列 mysql_f 继续阅读 >>


陈文浩 17/09/03 22:10:58
想了想还是把一些基本概念整理一下比较好,这一篇提到了一些基本的小概念,以及查看数据库及表 了解SQL 【1】什么是数据库? 数据库是一个以某种有组织的方式存储的数据集合。 我们通常说的数据库其实是数据库管理软件(DBMS),我们使用这些软件来访问数据库。数据库是通过DBMS创建和操纵的容器。 【2】表 某种特定类型数据的结构化清单; 数据库中的每个表都有一个名字,用来标识自己,此名字是唯一的。 表由列组成。列中存储着表中某部分的信息。 【3】列 表中的一个字段。所有的表都是由一个或多个列组成的。 每个列都有相应的数据类型;数据类型定义列可以存储的数据种类。 【4】行 表中的一个记录 表中的数据是按行存储的,所保存的每个记录存储在自己的行内。假设表为网格的样子,网格中垂直的列为表列,水平行为表行。 【5】主键 一列(或一组列),其值能够唯一区分表中每个行 虽然不一定都需要主键,但还是应该保证每个表具有一个主键,以便于后续的操作和管理 表中任何一列都可以作为主键,只要满足以下条件: 1.任意两行都不具有相同的主键 继续阅读 >>


闫钰晨 17/08/11 11:08:23
开发用了很久的Vertica,知道它是“列式数据库”但一直没有去研究过列式数据库的一些特性,现在来总结一下。 列式数据库是以列相关存储架构进行数据存储的数据库,主要适合于批量数据处理和即时查询。相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合于小批量的数据处理,常用于联机事务型数据处理。 数据库以行、列的二维表的形式存储数据,但是却以一维字符串的方式存储,例如以下的一个表: EmpId Lastname Firstname Salary 1 Smith Joe 40000 2 Jones Mary 50000 3 Johnson Cathy 44000 这个简单的表包括员工代码(EmpId), 姓名字段(Lastname and Firstname)及工资(Salary). 这个表存储在电脑的内存(RAM)和存储(硬盘)中。虽然内存和硬盘在机制上不同,电脑的操作系统是以同样的方式存储的。数据库必须把这个二维表存储在一系列一维的“字节”中,由操作系统写到内存或硬盘中。 行式数据库把一行中的数据值 继续阅读 >>


周攀 17/08/02 09:16:32
数据库:简单来说可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 数据库:指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合 数据库的分类 1.关系型数据库SQL:创建在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。 2.非关系型数据库NOSQL:Not Only SQL简称NoSQL,相对SQL来讲,关联性相对更自由.限制也较少. 可以更自由的使用 下面主要介绍关系型数据库(以mysql 为例) 关系模型:就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、MicrosoftAccess、MySQL、浪潮K-DB等 关系型数据库管理系统:数据库管理系统通过调用操作系统的进程管理、内存管理、设备管理以及文件管理等服务,为数据库用户提供管理、控制数据库容 继续阅读 >>


刘生玺 17/08/02 09:00:16
MySQL C API:  官方英文版 中文参考手册 代码示例: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <mysql/mysql.h> #define HOST "localhost" #define USER "root" #define PASSWD "HEpan693640." #define DB_NAME "TESTDB" void my_error(const char *err_string, int line); // 错误处理函数 void mysql_connect(MYSQL *mysql); // 连接mysql数据库 void show_databases(MYSQL *mysql); // 显示所有数据库 void change_database(MYSQL *mysql 继续阅读 >>


何攀 17/08/02 02:04:26