MySQL应该学习的6件事是什么

62次阅读
没有评论

共计 2650 个字符,预计需要花费 7 分钟才能阅读完成。

本篇内容介绍了“MySQL 应该学习的 6 件事是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 每一行命令都是用分号 (;) 作为结束

对于 MySQL,*** 件你必须牢记的是它的每一行命令都是用分号 (;) 作为结束的,但当一行 MySQL 被插入在 PHP 代码中时,*** 把后面的分号省略掉,例如:
mysql_query (INSERT INTO tablename (first_name, last_name) VALUES ($first_name , $last_name)
这是因为 PHP 也是以分号作为一行的结束的,额外的分号有时会让 PHP 的语法分析器搞不明白,所以还是省略掉的好。在这种情况下,虽然省略了分号,但是 PHP 在执行 MySQL 命令时会自动的帮你加上的。

2. 采用关联数组存取查询结果

看下面的例子:

$connection = mysql_connect(localhost ,  albert ,  shhh  mysql_select_db( winestore , $connection); $result = mysql_query(SELECT cust_id, surname, firstname FROM customer , $connection); while ($row = mysql_fetch_array($result)) { echo  ID:t{$row[ cust_id]}n  echo  Surnamet{$row[ surname]}n  echo  First name:t{$row[ firstname]}nn  }

  函数 mysql_fetch_array() 把查询结果的一行放入数组,可以同时用两种方式引用,例如 cust_id 可以同时用下面两种方式:$row[ cust_id] 或者 $row[0]。显然,前者的可读性要比后者好多了。

在多表连查中,如果两个列名字一样,*** 用别名分开:

SELECT winery.name AS wname, region.name AS rname, FROM winery, region WHERE winery.region_id = region.region_id;  列名的引用为:$row[wname]  和  $row[rname]

在指定表名和列名的情况下,只引用列名:

SELECT winery.region_id FROM winery  列名的引用为: $row[region_id]

聚集函数的引用就是引用名:

SELECT count(*) FROM customer;  列名的引用为: $row[count(*) ]

3. TEXT、DATE、和 SET 数据类型

MySQL 数据表的字段必须有定义一个数据类型。这有大约 25 种选择,大部分都是直接明了的,就不多费口舌了。但有几个有必要提一下。

TEXT 不是一种数据类型,虽然可能有些书上是这么说的。它实际上应该是“LONG VARCHAR”或者“MEDIUMTEXT”。

DATE 数据类型的格式是 YYYY-MM-DD,比如:1999-12-08。你可以很容易的用 date 函数来得到这种格式的当前系统时间:date(Y-m-d)   并且,在 DATA 数据类型之间可以作减法,得到相差的时间天数:

$age = ($current_date - $birthdate);

集合 SET 是一个有用的数据类型,它和枚举 ENUM 有点相似,只不过是 SET 能够保存多个值而 ENUM 只能保存一个值而已。而且,SET 类型最多只能够有 64 个预定的值,而 ENUM 类型却能够处理最多 65,535 个预定义的值。而如果需要有大于 64 个值的集合,该怎么办呢,这时就需要定义多个集合来一起解决这个问题了。

4. 用 mysql_unbuffered_query() 开发快速的脚本

这个函数能用来替换 mysql_query() 函数,主要的区别就是 mysql_unbuffered_query() 执行完查询后马上返回,不需要等待或者对数据库加锁。但是返回的行数不能用 mysql_num_rows() 函数来检查,因为输出的结果集大小未知。

5. 通配符

SQL 的通配符有两种:“*”和“%”。分别用在不同的情况下。例如:如果你想看到数据库的所有内容,可以像这样来查询:

SELECT * FROM dbname WHERE USER_ID LIKE  %

这里,两个通配符都被用上了。他们表示相同的意思 ?? 都是用来匹配任何的字符串,但是他们用在不同的上下文中。“*”用来匹配字段名,而“%”用来匹配字段值。另外一个不容易引起注意的地方是“%”通配符需要和 LIKE 关键字一起使用。还有一个通配符,就是下划线“_”,它代表的意思和上面不同,是用来匹配任何单个的字符的。

6. NOT NULL 和空记录

如果用户在没有填任何东西的情况下按了 submit 按钮,会怎样呢?如果你确实需要一个值,那么可以用客户端脚本或者服务器端脚本来进行数据验证。但是,在数据库中却是允许一些字段被空出来什么也不填。对此类纪录,MySQL 将要为之执行一些事情:插入值 NULL,即缺省的操作。
如果你在字段定义中为之声明了 NOT NULL(在建立或者修改这个字段的时候),MySQL 将把这个字段空出来什么东西也不填。对于一个 ENUM 枚举类型的字段,如果你为之声明了 NOT NULL,MySQL 将把枚举集的 *** 个值插入到字段中。也就是说,MySQL 把枚举集的 *** 个值作为这个枚举类型的缺省值。

一个值为 NULL 的纪录和一个空纪录是有一些区别的。% 通配符可以匹配空纪录,但是却不能匹配 NULL 纪录。在某些时候,这种区别会造成一些意想不到的后果。就我的经验而言,任何字段都应该声明为 NOT NULL。这样许多的 SELECT 查询语句就能够正常运转了。注意在搜索 NULL 时,必须用“IS”关键字,而 LIKE 是不会正常工作的。在 *** 要提到的是,如果你在加入或者修改一个新的字段之前,数据库中已经有了一些记录了,这时新加入的字段在原来的纪录中的值,可能是 NULL,也可能为空。这也算是 MySQL 的一个 Bug 吧,所以在这种情况下,使用 SELECT 查询要特别的小心。

“MySQL 应该学习的 6 件事是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计2650字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)