ホームページ データベース mysql チュートリアル MySQL编程中的6个重要的实用技巧

MySQL编程中的6个重要的实用技巧

Jun 07, 2016 pm 04:07 PM
データベース

对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号

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

对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:

mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");

这是因为PHP也是以分号作为一行的结束的,额外的分号有时会让PHP的语法分析器搞不明白,所以还是省略掉的好。在这种情况下,虽然省略了分号,但是PHP在执行MySQL命令时会自动的帮你加上的。

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

看下面的例子:

$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(*)”]

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个值的集合,该怎么办呢,这时就需要定义多个集合来一起解决这个问题了。

用mysql_unbuffered_query()开发快速的脚本

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

通配符

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

SELECT*FROM dbname WHERE USER_ID LIKE'%';

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

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查询要特别的小心。

--------------------------------------分割线 --------------------------------------

Ubuntu 14.04下安装MySQL

《MySQL权威指南(原书第2版)》清晰中文扫描版 PDF

Ubuntu 14.04 LTS 安装 LNMP Nginx\PHP5 (PHP-FPM)\MySQL

Ubuntu 14.04下搭建MySQL主从服务器

Ubuntu 12.04 LTS 构建高可用分布式 MySQL 集群

Ubuntu 12.04下源代码安装MySQL5.6以及Python-MySQLdb

MySQL-5.5.38通用二进制安装

--------------------------------------分割线 --------------------------------------

本文永久更新链接地址:

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Go 言語はデータベースの追加、削除、変更、クエリ操作をどのように実装しますか? Mar 27, 2024 pm 09:39 PM

Go 言語は、効率的かつ簡潔で習得が容易なプログラミング言語であり、同時プログラミングやネットワーク プログラミングに優れているため、開発者に好まれています。実際の開発ではデータベースの操作が欠かせませんが、今回はGo言語を使ってデータベースの追加・削除・変更・クエリ操作を実装する方法を紹介します。 Go 言語では、データベースを操作するために通常、よく使用される SQL パッケージや gorm などのサードパーティ ライブラリを使用します。ここでは SQL パッケージを例として、データベースの追加、削除、変更、クエリ操作を実装する方法を紹介します。 MySQL データベースを使用していると仮定します。

Hibernate はポリモーフィック マッピングをどのように実装しますか? Hibernate はポリモーフィック マッピングをどのように実装しますか? Apr 17, 2024 pm 12:09 PM

Hibernate ポリモーフィック マッピングは、継承されたクラスをデータベースにマップでき、次のマッピング タイプを提供します。 join-subclass: 親クラスのすべての列を含む、サブクラス用の別個のテーブルを作成します。 table-per-class: サブクラス固有の列のみを含む、サブクラス用の別個のテーブルを作成します。 Union-subclass: join-subclass と似ていますが、親クラス テーブルがすべてのサブクラス列を結合します。

iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます iOS 18では、紛失または破損した写真を復元するための新しい「復元」アルバム機能が追加されます Jul 18, 2024 am 05:48 AM

Apple の最新リリースの iOS18、iPadOS18、および macOS Sequoia システムでは、さまざまな理由で紛失または破損した写真やビデオをユーザーが簡単に回復できるように設計された重要な機能が写真アプリケーションに追加されました。この新機能では、写真アプリのツール セクションに「Recovered」というアルバムが導入され、ユーザーがデバイス上に写真ライブラリに含まれていない写真やビデオがある場合に自動的に表示されます。 「Recovered」アルバムの登場により、データベースの破損、カメラ アプリケーションが写真ライブラリに正しく保存されない、または写真ライブラリを管理するサードパーティ アプリケーションによって失われた写真やビデオに対する解決策が提供されます。ユーザーはいくつかの簡単な手順を実行するだけで済みます

HTML がデータベースを読み取る方法の詳細な分析 HTML がデータベースを読み取る方法の詳細な分析 Apr 09, 2024 pm 12:36 PM

HTML はデータベースを直接読み取ることはできませんが、JavaScript と AJAX を通じて実現できます。この手順には、データベース接続の確立、クエリの送信、応答の処理、ページの更新が含まれます。この記事では、JavaScript、AJAX、および PHP を使用して MySQL データベースからデータを読み取る実践的な例を示し、クエリ結果を HTML ページに動的に表示する方法を示します。この例では、XMLHttpRequest を使用してデータベース接続を確立し、クエリを送信して応答を処理することで、ページ要素にデータを埋め込み、データベースを読み取る HTML の機能を実現します。

PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル PHP で MySQLi を使用してデータベース接続を確立するための詳細なチュートリアル Jun 04, 2024 pm 01:42 PM

MySQLi を使用して PHP でデータベース接続を確立する方法: MySQLi 拡張機能を含める (require_once) 接続関数を作成する (functionconnect_to_db) 接続関数を呼び出す ($conn=connect_to_db()) クエリを実行する ($result=$conn->query()) 閉じる接続 ( $conn->close())

PHP でデータベース接続エラーを処理する方法 PHP でデータベース接続エラーを処理する方法 Jun 05, 2024 pm 02:16 PM

PHP でデータベース接続エラーを処理するには、次の手順を使用できます。 mysqli_connect_errno() を使用してエラー コードを取得します。 mysqli_connect_error() を使用してエラー メッセージを取得します。これらのエラー メッセージをキャプチャしてログに記録することで、データベース接続の問題を簡単に特定して解決でき、アプリケーションをスムーズに実行できるようになります。

PHP を使用してデータベース内の中国語の文字化けを処理するためのヒントと実践 PHP を使用してデータベース内の中国語の文字化けを処理するためのヒントと実践 Mar 27, 2024 pm 05:21 PM

PHP は Web サイト開発で広く使用されているバックエンド プログラミング言語であり、強力なデータベース操作機能を備えており、MySQL などのデータベースとの対話によく使用されます。ただし、中国語の文字エンコーディングは複雑であるため、データベース内で中国語の文字化けを処理するときに問題が発生することがよくあります。この記事では、文字化けの一般的な原因、解決策、具体的なコード例を含め、データベース内の中国語の文字化けを処理するための PHP のスキルと実践方法を紹介します。文字化けの一般的な原因は、データベースの文字セット設定が正しくないことです。データベースの作成時に、utf8 や u などの正しい文字セットを選択する必要があります。

Golangでデータベースコールバック関数を使用するにはどうすればよいですか? Golangでデータベースコールバック関数を使用するにはどうすればよいですか? Jun 03, 2024 pm 02:20 PM

Golang でデータベース コールバック関数を使用すると、次のことを実現できます。 指定されたデータベース操作が完了した後にカスタム コードを実行します。追加のコードを記述せずに、個別の関数を通じてカスタム動作を追加します。コールバック関数は、挿入、更新、削除、クエリ操作に使用できます。コールバック関数を使用するには、sql.Exec、sql.QueryRow、または sql.Query 関数を使用する必要があります。

See all articles