mysql阅读笔记二

计算字段并不实际存在于数据库表中,计算字段是运行时在select语句内创建的,只有数据库知道select语句中哪些列是实际的表列,哪些是计算字段。

拼接 将值连接到一起构成单个值 注意:多数DBMS使用+或||来实现拼接,mysql使用concat()函数来实现;注意concat需要把一个或多个指定的串,各个串之间用逗号分隔。

通过LTrim()去掉数据项左边的空格,trim()去掉数据左右的空格;selecttrim(name)

首先要注意是mysql使用的日期格式,无论何时指定一个日期,不管是插入或更新表值,还是where子句进行过滤,日期格式必须是yyyy-mm-dd,消除歧义

Where order_date=’2005-09-01’

Order_date 的数据类型为datetime,该类型存储日期与时间(小时分钟秒),解决办法是将给出的日期与列中的日期进行比较,必须使用Date()函数,将列中的日期提出出来,Date(order_date)进行比较。

如果要检索出2005年9月的所有订单,方法一:

Where Date(order_date)between ‘2005-09-01’ and ‘2005-09-30’;

或者Year(order_date)=2005 and month(order_date)=9;

聚集函数:运行在行组上,计算和返回单个值的函数;

聚集函数:avg()返回某列的平均值 avg()只能用于单个列的平均值,获得多个列的平均值,必须给出多个avg()函数。

Count() 返回某列的行数  使用count(column)对特定列中具有值的行进行计数,忽略NULL值。count(*)对表的行数进行计数,包括NULL行。

Max()  返回某列的最大值   返回列的最大值,在文本数据时,如果数据按相应的列进行排序,则max()返回最后一行。

Min()  返回某列的最小值    返回列的最小值,在文本数据时,如果数据按相应的列进行排序,则min()返回最前一行。

Sum() 返回某列值得和

Where进行行过滤,having过滤分组,where在数据分组前进行过滤,having在数据分组后进行过滤

作为计算字段使用子查询:需要显示customers表中每个客户的订单总数。订单与相应的客户ID存储在orders中。

1、            从customers表中检索客户列表

2、            对于每个检索出的每个客户,统计在orders表中的订单数目。

Selectcust_name,cust_state,(select count(*) from orders whereorders.cust_id=customers.cust_id) as orders

From customers

Order by cust_name;

在用union组合查询时,只能使用一条orderby 子句,它必须出现在最后一条select语句之后。对于结果集,不存在用一种方式排序一部分,而用另一部分排序另一部分,因此,不允许使用多条orderby 子句。

使用全文本搜索

   一般在创建表时,进行全文本搜索,createtable 语句接受FULLTEXT子句,它给出被索引列的一个逗号分隔的列表。

Create table productnotes

(

Note_id int not nullauto_increment,

Pro_id char(10) not null,

Note_date date_time,

Note_text text null,

Primary key(note_id),

FULLTEXT(note_text)

)engine=myisam;

不要在导入数据时,使用FULLTEXT应该首先导入所有数据,然后再修改表,定义FULLTEXT.

Select note_text fromproductnotes where match(note_text) against (‘raddit’);

在索引之后,使用两个函数match()和against()执行全文搜索,其中match()指定搜索的列,against()指定要使用的表达式。

传递给match()的值必须与FULLTEXT()定义中的相同,如果指定多列,则必须列出它们(次序相同)

使用查询扩展(与搜索有关的行)

在使用查询扩展时,mysql对数据与索引进行两遍扫描来完成搜索:

首先,进行一个基本的全文本搜索,找出与搜索条件匹配的所有行。

其次,mysql检查这些匹配行并选择所有用的词

再其次,mysql再次进行全文搜索,这次不仅使用原来的条件,而且还使用所有有用的词。

Select note_text fromproductnotes where match(note_text) against (‘heavy’ in Boolean mode);

布尔文本搜素:

Select note_text

From productnotes

Where match(note_text)against(‘heavy –rope*’  in Boolean mode);

全文本布尔操作符

+  包含,次必须存在

-         排除,次必须不出现

操作符  >  包含,而且增加等级

操作符  <  包含,而且减少等级

() 把词组成子表达式(允许这些子表达式作为一个祖被包含、排除、排列)

~  取消一个词的排序值

操作符*  词尾通配符

“”  定义一个短语(它匹配整个短语以便包含或排除这个短语)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值