
3种解决方法,也谈谈这三种的弊端吧!
方法:
一每创建一个用户自动创建一个该用户的好友用户表每一行的记录是一个好友记录
二做一个Frient的表,表中有两列,第一列UID是用户ID,第二列FID是对应该用户的好友
三,在用户信息的表中,有一个字段10000长度的varchar里边用','号分割各个好友的ID
弊端:
一:只适合少量的用户论坛,如果有100万个注册用户,就得有100万张好友表,这样当用户一多,数据库会很大!
二:这种方法是给用户注册表创建一张好友关联表,这样或许是这三种方法中最好的方式了吧,但是注意记得要添加索引,不然查询起来,数据一多,会非常慢;
三、这样在程序方面会比较麻烦,先取出来,后添加数据,再update,感觉速度会上不来
thinkphp如何查询数据库?
数据库查询
ThinkPHP内置了非常灵活的查询方法,可以快速的进行数据查询 *** 作。
查询条件可以用于CURD等任何 *** 作,作为where方法的参数传入即可。
ThinkPHP可以支持直接使用字符串作为查询条件,但是大多数情况推荐使用索引数组或者对象来作为查询条件,因为会更加安全。
查询方式
一、使用字符串作为查询条件
这是最传统的方式,但是安全性不高,例如:
1
2
$User = M("User"); // 实例化User对象
$User->where('type=1 AND status=1')->select();
最后生成的SQL语句是
1
SELECT FROM think_user WHERE type=1 AND status=1
二、使用数组作为查询条件
1
2
3
4
5
$User = M("User"); // 实例化User对象
$condition['name'] = 'thinkphp';
$condition['status'] = 1;
// 把查询条件传入查询方法
$User->where($condition)->select();
最后生成的SQL语句是
1
SELECT FROM think_user WHERE 'name'='thinkphp' AND status=1
如果进行多字段查询,那么字段之间的默认逻辑关系是 逻辑与 AND,但是用下面的规则可以更改默认的逻辑判断,通过使用 _logic 定义查询逻辑:
1
2
3
4
5
6
$User = M("User"); // 实例化User对象
$condition['name'] = 'thinkphp';
$condition['account'] = 'thinkphp';
$condition['_logic'] = 'OR'; //定义查询逻辑
// 把查询条件传入查询方法
$User->where($condition)->select();
最后生成的SQL语句是
1
SELECT FROM think_user WHERE 'name'='thinkphp' OR `account`='thinkphp'
三、使用对象方式来查询 (这里以stdClass内置对象为例)
1
2
3
4
5
6
$User = M("User"); // 实例化User对象
// 定义查询条件
$condition = new stdClass();
$condition->name = 'thinkphp';
$condition->status= 1;
$User->where($condition)->select();
最后生成的SQL语句和上面一样
1
SELECT FROM think_user WHERE `name`='thinkphp' AND status=1
使用对象方式查询和使用数组查询的效果是相同的,并且是可以互换的,大多数情况下,我们建议采用数组方式更加高效,后面我们会以数组方式为例来讲解具体的查询语言用法。
表达式查询
上面的查询条件仅仅是一个简单的相等判断,可以使用查询表达式支持更多的SQL查询语法,并且可以用于数组或者对象方式的查询(下面仅以数组方式为例说明),查询表达式的使用格式:
1
$map['字段名'] = array('表达式','查询条件');
表达式不分大小写,支持的查询表达式有下面几种,分别表示的含义是:
1
2
3
4
$map['id'] = array('eq',100); id = 100;
$map['id'] = array('egt',100);id >= 100
$map['name'] = array('like','thinkphp%'); name like 'thinkphp%' 模糊查询
$map['a'] =array('like',array('%thinkphp%','%tp'),'OR');$map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND'); (a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')
本文来自ThinkPHP框架技术文章栏目:>
以上就是thinkphp如何查询数据库的详细内容,更多请关注php中文网其它相关文章!
描述:sql server 数据库中使用条件查询就可以实现符合查询条件的数据记录显示出来。查询语法为:select from 表名 where 字段名=条件(语法说明:select后面的号代表的是所有字段显示出来。条件出的条件如果为字符型条件需要使用单引号引起来,如果是int类型不用引号),以下以某数据中的一张数据表user_user为例子,分别使用两种查询方式:
1、完整条件查询语法为:select from 表名 where 字段名=条件
查询语句:select from user_user where Dname='管理员'
这个非常简单,MySQL数据库的用户信息、数据库信息和登录IP信息通常都保存在系统数据库中,可以直接经过查询得到,下面我简单介绍一下,以MySQL55为例:
用户信息
这个主要保存在mysql数据库的user表中,通常修改用户的密码、删除用户及分配权限等就是在这个表进行,下面我简单介绍一下:
查询所有用户这个直接执行“selectuser,hostfromuser;”语句就行,如下,第一列为用户名,第二列为允许登录的IP,%表示任意IP都可登录,localhost则只允许本地登录:
查询用户权限这个直接执行“showgrantsfor'user'@'host';”命令就行,如下,以root用户为例,则直接执行“showgrantsfor'root'@'localhost';”命令,all表示所有权限,select表示只查权限,update表示只改权限,delete表示只删权限等:
数据库信息
这个主要保存在information_schema数据库中,它通常保存着MySQL数据库所维护的所有数据库信息,包括数据库名,数据表名,表栏的数据类型与访问权限等,下面我简单介绍一下:
查询所有数据库
这个直接执行“showdatabases;”命令就行,如下,会列出当前MySQL数据库中存储的所有数据库,查看某一个数据库下所有数据表的话,执行“showtables;”命令就行:
查看数据库大小
以test数据库为例,计算单位为MB,直接执行“selectconcat(round(sum(data_length)/(10241024),2)+round(sum(index_length)/(10241024),2),'MB')as'DBSize'fromtableswheretable_schema='test';”命令就行,如下:
查看数据库编码
这个直接执行“showvariableslike'character%';”命令就行,如下,character_set_client为客户端编码,character_set_connection为建立连接编码,character_set_database为数据库编码,character_set_results为结果集编码,character_set_server为数据库服务器编码;
登录IP信息
这里通常是查看连接MySQL数据库的IP信息,统计每个IP的连接数,执行“selectSUBSTRING_INDEX(host,':',1)asip,count()frominformation_schemaprocesslistgroupbyip”命令就行,如下,第一列为IP地址,第二列为该IP下的连接数:
至此,我们就完成了查询MySQL数据库的用户信息、数据库信息和登录IP信息。总的来说,整个过程非常简单,只要你有一定的MySQL基础,熟悉一下相关文档和说明,很快就能掌握的,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。
1、首先通过运行数据库客户端管理软件SQLyogEnt进行查询,第一步运行SQLyogEnt,在桌面找到SQLyogEnt的软件图标,用户双击这个图标。
2、然后输入数据库的信息,在界面左下角点击连接按钮,连接数据库。
3、连接上数据库后就进入了数据库管理软件的控制台,控制台的左侧以目录的形式显示了当前登录的用户和数据库以及数据库的表。目录的右边从上到下有2个空白的长方形框,上方的是SQL查询语言的输入框,下方显示的是查询所得到的结果。
4、有时候一个数据库IP新建了多个数据库,在查询前要用数据在控制台左侧目录上选择需要 *** 作的数据库,然后在进行查询。
5、上面说道了SQL的长方形空白的输入框,现在我们对数据库表进行一次查询吧。如果要查询一个表中所有的信息可以输入:SELECTFROMTABLE_Name
6、查询表中的某一条数据:SELECTFROMTable_NameWHEREid=XXXX注意这里的id选择表中的唯一键,就是用于标识这条数据与其他数据不同的字段
显示某个字段的数据信息:如name
SELECTnameFROMTable_NameWHEREid=XXXX
个人没研究过这个,毕竟不是空的,都是直接用is not null
不过 like %% 显示的是所有不为空(null)的字段(不知道全部是空格能不能显示)
那么 like % 可能就在null这里可能会有些区别
建立一张表a,两个字段,一个是编码,一个是测试字段
1 a
2 aa
3 aaa
4 (四个空格)
5 (null) 也就是空
6 null(字符串null)
然后分别执行 子二个字段 like '%%' 和 like ‘%’的 *** 作,就应该可以根据前面出现的数字,确定二者的区别,如果二者真的显示的结果一样,那么也就没区别了。如果显示的结果不一样,那么才能知道二者的区别。
以上就是关于数据库如何查询全部的内容,包括:数据库如何查询、thinkphp 数据库查询怎么查、数据库怎么使用语句查询并整理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)