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


李东林 18/01/02 20:55:18
索引 索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容。 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录。这样做会消耗大量数据库系统时间,并造成大量磁盘 I/O 操作。 而如果在表中已建立索引,在索引中找到符合查询条件的索引值,通过索引值就可以快速找到表中的数据,可以大大加快查询速度。 对一张表中的某个列建立索引,有以下两种语句格式: ALTER TABLE 表名字 ADD INDEX 索引名 (列名); CREATE INDEX 索引名 ON 表名字 (列名); 我们用这两种语句分别建立索引: ALTER TABLE employee ADD INDEX idx_id (id); #在employee表的id列上建立名为idx_id的索引 CREATE INDEX idx_name ON employee (name); #在employee表的name列 继续阅读 >>


李东林 17/08/14 15:50:03
基本的SELECT语句 SELECT 语句的基本格式为: SELECT 要查询的列名 FROM 表名字 WHERE 限制条件; 如果要查询表的所有内容,则把 要查询的列名 用一个星号 * 号表示,代表要查询表中所有的列。 而大多数情况,我们只需要查看某个表的指定的列,比如要查看employee 表的 name 和 age: SELECT name,age FROM employee; 数学符号条件 SELECT 语句常常会有 WHERE 限制条件,用于达到更加精确的查询。WHERE限制条件可以有数学符号 (=,<,>,>=,<=) ,刚才我们查询了 name 和 age,现在稍作修改: SELECT name,age FROM employee WHERE age>25; 筛选出 age 大于 25 的结果: 或者查找一个名字为 Mary 的员工的 name,age 和 phone: SELECT name,age,phone FRO 继续阅读 >>


李东林 17/08/07 15:48:54
有时候会想把github上的文件删除,但是本地仓库里的文件想保留下来该怎么办,只要用三条命令就能完成了 git rm --cached filename/-r directory git commit "xxxx" git push 1.删除github文件,本地保留 git rm --cached test.txt git commit -m "delete file" git push 此时github上已经不存在了 2.删除远程code 文件夹,本地保留 一定要注意,删除文件夹要使用-r 参数 git rm --cached -r code git commit -m "delete directory" git push 作者:FallingU 发表于 2017/08/03 21:47:42 原文链接 https://blog.csdn.net/FallingU/article/deta 继续阅读 >>


李东林 17/08/03 21:47:42
如果在刚开始学习算法,做算法题的时候,题上经常会要求输入多组数据,对于刚开始学习的小白来说,可能不知道怎么算输入多组数据,也不知道该怎么处理,刚好想起来,就把方法记录一下 怎么算输入多组数据? 一般题中要求输入多组数据的意思就是读取数量不定的输入数据(不能确定输入数据的数量),在这种情况下,需要不断读取数据直至没有新的输入为止。 方法一: #include <stdio.h> int main() { int a; while(scanf("%d",&a)!=EOF) { printf("%d\n",a); } return 0; }上面是使用C语言的的方法,把输入语句作为while循环的判断条件,当输入数据不是文件结束符(EOF)的时候,就可以实现连续输入 方法二: #include <iostream> using namespace std; int main() { for(int 继续阅读 >>


李东林 17/07/31 10:58:35
整理一下vim常用的一些命令和操作,以便及时翻看查找 打开文件 进入命令行模式后输入:e 文件路径 可以打开相应文件。 移动光标 按Esc进入普通模式,在该模式下使用方向键或者h,j,k,l键可以移动游标。 按键 说明 h 左 l 右(小写L) j 下 k 上 w 移动到下一个单词 b 移动到上一个单词 不同的插入方式 命令 说明 i 在当前光标处进行编辑 I 在行首插入 A 在行末插入 a 在光标后插入编辑 o 在当前行后插入一个新行 O 在当前行前插入一个新行 cw 替换从光标所在位置后到一个单词结尾的字符 保存文件 输入:w 文件名可以将文档另存为其他文件名或存到其它路径下 从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑 退出方式 命令 说明 :q! 强制退出,不保存 :q 退出 :wq! 强制保存并退出 :w <文件路径> 另存为 :saveas 文件路径 另存为 :x 保存并退出 :wq 保存并退出 普通模式下输入Sh 继续阅读 >>


李东林 17/07/27 10:52:23
模块的定义 模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的模块通常由一组函数和数据结构组成,用来实现一种文件系统,一个驱动程序或其他内核上层的功能 我们在刚开始学习内核模块的时候,可以先编写一个简单的内核模块,对它进行编译,并链接到内核里面运行,通过这个过程可以大概了解模块的编写规则以及从编写到运行的过程。 下面是一个简单的内核模块的例子 源程序“hello.c” /*包含了对模块的结构定义以及模块的版本控制, * 任何模块程序的编写都要包含这个头文件*/ #include <linux/module.h> #include <linux/kernel.h> //包含了常用的内核函数 /*宏__init告诉编译程序相关的函数和变量仅用于初始化, * 编译程序将标有__init的所有代码存储到特殊的内存段中, * 初始化结束后就释放这段内存*/ #inclu 继续阅读 >>


李东林 17/07/26 23:17:36
单链表的反序 单向链表的反序图示:                ---->[1]---->[2]---->[3]...---->[n]---->[NULL](原链表)                               1->next  2->next  3->next   n->next  head                 head   1->next  2->next  3->next   n->next                 [NULL]<----[1]<----[2]<----[3]<----...[n]<----(反序后的链表) 反序也就是头指针指向最后一个结点,然后最后一个结点指向倒数第二个结点,以此类推,直到第一个结点指向空指针            实现方法: (1)首先考虑如何能实现整个反序过程,很容易想到必须有一个指针P1进行读取每个 继续阅读 >>


李东林 17/07/25 21:47:59
范围for语句语法形式: 如果想对string对象中的每个字符进行操作,目前最好的办法是使用C++11新标准提供的一种语句:范围for语句 范围for(range for)语句遍历给定序列中的每个元素并对序列中的每个值执行某种操作,其语法形式是: for (declaration : expression) statement expression部分是一个对象,必须是一个序列,比方说用花括号括起来的初始值列表、数组或者vector或string等类型的对象。这些类型的共同特点是拥有能返回迭代器的begin和end成员。declaration 部分负责定义一个变量,该变量将被用于访问序列中的基础元素。每次迭代,declaration部分的变量会被初始化为expression部分的下一个元素值。确保类型相容最简单的办法是使用auto类型说明符。 虽然我们通常称new T [ ]分配的内存为“动态数组”,但是要记住我们所说的动态数组并不是数组类型,这是很重要的。当用new分配一个数组 继续阅读 >>


李东林 17/07/25 08:59:02
今天在学习MySQL时候,想要将文本文件的数据导入到数据库中,却发现一直报错,换了导入文本的路径也还是同样的错误,错误显示ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement。 然后在网上找解决办法,找的方法在Linux 下也不怎么好用,最后找到了解决Linux下MySQL文件导入出错的方法 出错的原因是因为在MySQL 5.7.6版本之后,导入文件只能在secure_file_priv指定的文件夹下(也有原因是因为权限不够) 方法一: 我们可以用show variables like '%secure%';命令显示文件目录 这样将导入文件放在 /var/lib/mysql-files/文件夹下,之后再从这里导入就可以了 导出文件时候,也是将 文件导出到这个文件夹里。 load dat 继续阅读 >>


李东林 17/07/21 22:27:45