联结表 1.创建联结 SELECT vend_name,prod_name,prod_price FROM vendors, products WHERE vendors.vend_id = products.vend_id 上面的语句与之前最大的区别在于,指定的列位于两张表内,使用where进行联结。 返回表vendors与表products中vend_id相等的vend_name,prod_name,prod_price 基于两个表之间的相等测试,这种联结称为等值联结,或内部联结。对于这种联结,还可以使用下面这种语法: INNER JOIN ON SELECT vend_name,prod_name,prod_price FROM vendors INNER JOIN products ON vendors.vend_id = products.vend_id 2.联结多个表 SELECT vend_name,prod_name,prod_price, quantity FROM vendors, products, 继续阅读 >>


闫钰晨 17/08/17 17:39:48
表order1中的数据: 汇总数据 1.聚集函数 聚集函数:运行在行组上,计算和返回单个值的函数。 SQL聚集函数 函数 说明 AVG() 返回某列的平均数 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列之和 SELECT AVG(order_price) AS avg_price FROM order1; 返回表order1 中order_price一列的平均值 2.聚集不同值 像最开始的表里一样,价格有许多重复的,如果只想把不同的值加起来求平均值该怎么办?这就用到了之前博客中提到的DISTINCT SELECT AVG(DISTINCT order_price) AS avg_price FROM order1; 3.组合聚集函数 SELECT语句可以根据需要包含多个聚集函数 SELECT COUNT(*)AS num, M 继续阅读 >>


闫钰晨 17/08/17 14:56:44
表accounts的内容 创建计算字段 1.计算字段 【1】当存在数据库表中的数据不是应用程序所需要的格式,就需要从表中检索,计算或者格式化,变成我们所需要的数据,(例如表中人名为一列,电话号码为一列,但是在一个字段中既要显示人名,又要显示对应的电话号码)这就是需要计算字段的原因。 【2】计算字段并不实际存在,是运行时在SELECT语句内创建的。 字段:基本上与列的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上。 2.拼接字段 拼接:将值;连接到一起构成单个值 Concat() SELECT Concat(number,'(', phone,')') FROM accounts 将表中的信息按照 number(phone)的格式返回 3.使用别名 从上面的输出可以看到,拼接成功了,但是输出的这一列并没有名字,如果只是查询一下这样做可以,但是一个未知的列不能用于客户机应用中,,客户机没办法引用它。 AS SELECT Concat(number,'(', pho 继续阅读 >>


闫钰晨 17/08/16 14:47:47
REGEXP REGEXP告诉MySQL,其后跟的东西为正则表达式 【1】基本字符匹配 . 匹配任意一个字符 SELECT number FROM accounts where number REGEXP '00.'; 查找表accounts中包含00,以及其后跟一个任意字符的number ——————————————————————————————- LIKE和REGEXP的一个重要差别!!!!!! SELECT birthdate FROM accounts where birthdate REGEXP '1998'; SELECT birthdate FROM accounts where birthdate LIKE '1998'; LIKE匹配整个列,如果1998只是出现在列中,那么LIKE不会返回; REGEXP在列值内匹配,即只要出现了1998,REGEXP就会返回。 ——————————————————————————————- 【2】进行O 继续阅读 >>


闫钰晨 17/08/12 16:32:57
表accounts中的数据 过滤数据 where 【1】 SELECT number FROM accounts WHERE address = 'XUPT'; 从表accounts中查找address为XUPT的number 【2】WHERE 子句操作符 操作符 说明 = 等于 <> 不等于 > 大于 < 小于 <=/ >= 小于或等于/大于或等于 BETWEEN … AND … 介于某个范围之内,例:WHERE age BETWEEN 20 AND 30 NOT BETWEEN …AND … 不在某个范围之内 IN(项1,项2,…) 在指定项内,例:WHERE city IN(‘beijing’,’shanghai’) NOT IN(项1,项2,…) 不在指定项内 LIKE 搜索匹配,常与模式匹配符配合使用 NOT LIKE LIKE的反义 继续阅读 >>


闫钰晨 17/08/12 14:46:06
检索数据 SELECT 【1】检索单个列 SELECT number FROM accouts; 从表accounts中检索一个名为number的列 【2】检索多个列 SELECT number, phone FROM accouts; select后跟多个列名即可,列名之间以逗号分隔,最后一个列名后没有逗号 【3】检索所有列 使用(*)通配符 SELECT * FROM accounts; 【4】检索不同的行 DISTINCT SELECT DISTINCT address FROM accounts; 只返回address不同的列 DISTINCT应用于所有列,而不仅是前置它的列 【5】限制结果 LIMIT SELECT address FROM accounts LIMIT 5; LIMIT 5指示返回不多于5行 SELECT address FROM accounts LIMIT 5,5; LIMIT 5,5 表示返回从第5行开始的5行 LIMIT 检索出 继续阅读 >>


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


闫钰晨 17/08/11 11:08:23
啊啊啊啊啊啊啊,最近看了MySQL必知必会,感觉操作上还可以吧,就是关键字也太多多多多多了~~~为了自己查找,复习起来方便,所以把这些操作简单总结一下(→_→) 创建和操纵表 1.创建表 CREATE TABLE CREATE TABLE customers ( cust_id int NOT NULL AUTO_INCREMENT, cust_name char(50) NOT NULL, cust address char(50) NULL, cust city char(50) NULL, quantity int NOT NULL DEFAULT 1, PRIMARY KEY(cust_id) ) ENGINE = InnoDB; 【1】表名紧跟在CREATE TABLE后; 【2】所有列都在()中,各列用逗号隔开;每列的定义以列名开始,数据类型,是否允许NULL值; 【3】AUTO_INCREAM 继续阅读 >>


闫钰晨 17/08/10 22:03:24
一、信号概述 1.发送信号 【1】 #include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); 该函数将信号sig发送给目标进程;目标进程由pid指定,可能取值如下: pid参数 含义 pid>0 信号发送给PID为pid 的进程。 pid=0 信号发送给本进程组内的其他进程 pid = -1 信号发送给除init进程外的所有进程,但发送者需要拥有对目标进程发送信号的权限 pid < -1 信号发送给组ID为-pid的进程组中的所有成员 【2】 linux定义的信号值均大于0,如果sig取值为0则kill函数不发送任何信号。将sig值设为0时,可用来检测目标进程或进程组是否存在,因为检查在信号发送之前执行。但是这种检测方式是不可靠的,因为一方面由于进程PID的回绕,可能导致被检测到的pid不是我们所期望的pid,另一个方面,这种检测方法不是原子 继续阅读 >>


闫钰晨 17/08/07 16:57:00
一、select系统调用 1.selectAPI 原型: #include<sys/select.h> int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,struct timeval* timeout) 【1】nfds参数指定被监听的文件描述符的总数。 【2】readfds,writefds,exceptfds分别指向可读,可写和异常等事件对应的文件描述符集合。通过这三个参数传入自己感兴趣的文件描述符;select调用返回时,内核将修改它们来通知应用程序哪些文件描述符已经就绪。三个参数都是fd_set结构指针类型: #include <typesizes.h> #define __FD_SETSIZE 1024 #include <sys/select.h> #define FD_SETSIZE __FD_SETSIZE typedef long int __fd_mask; #undef __NFDBITS #defi 继续阅读 >>


闫钰晨 17/08/04 15:11:45