>  기사  >  백엔드 개발  >  PHP와 MySQL에 대한 기본 튜토리얼(4)

PHP와 MySQL에 대한 기본 튜토리얼(4)

黄舟
黄舟원래의
2016-12-19 10:01:251362검색

이 기사의 내용은 PHP 및 MySQL(IV)의 기본 튜토리얼에 관한 것입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.

MySQL의 SQL

MySQL의 경우 가장 먼저 기억해야 할 것은 각 명령 줄 앞에 세미콜론(;)이 붙는다는 점입니다. , 하지만... 절대적으로 절대적인 것은 없으며 여기서도 마찬가지입니다.

세미콜론을 추가하지 않아도 되는 상황도 있습니다. 일반적인 가로 배열 대신 원하는 필드의 세로 배열을 표시하려면 G를 사용하여 SQL 문 줄을 끝내면 됩니다. 예를 들면 다음과 같습니다.

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

TEXT, DATE 및 SET 데이터 유형


MySQL 데이터 테이블의 필드에는 데이터 유형이 정의되어 있어야 합니다. 약 25개의 옵션이 있으며 대부분은 간단하며 추가 설명이 필요하지 않습니다. 그러나 언급해야 할 몇 가지 사항이 있습니다.
SELECT * FROM PENPALS 
WHERE USER_ID = 1G

TEXT는 데이터 유형이 아니지만 일부 책에서는 그렇게 말할 수 있습니다. 실제로는 "LONG VARCHAR" 또는 "MEDIUMTEXT"여야 합니다. DATE 데이터 유형의 형식은 YYYY-MM-DD입니다(예: 1999-12-08). 날짜 기능을 사용하면 다음 형식으로 현재 시스템 시간을 쉽게 얻을 수 있습니다.

또한 DATA 데이터 유형 간을 빼서 일 단위의 시간 차이를 구할 수 있습니다.

세트 SET는 유용한 데이터 유형입니다. SET은 여러 값을 저장할 수 있고 ENUM은 하나의 값만 저장할 수 있다는 점을 제외하면 열거형 ENUM과 다소 유사합니다. 또한 SET 유형은 최대 64개의 미리 정의된 값만 가질 수 있는 반면 ENUM 유형은 최대 65,535개의 미리 정의된 값을 처리할 수 있습니다. 그리고 64개가 넘는 값을 가진 컬렉션이 필요하다면 어떻게 될까요? 이때 이 문제를 함께 해결하려면 여러 컬렉션을 정의해야 합니다.
date("Y-m-d")


와일드카드

$age = ($current_date - $birthdate);

SQL에는 "*"와 "%"라는 두 가지 유형의 와일드카드 문자가 있습니다. 다양한 상황에서 사용됩니다. 예를 들어 데이터베이스의 모든 내용을 보려면 다음과 같이 쿼리할 수 있습니다.

여기서는 두 와일드카드가 모두 사용됩니다. 둘 다 어떤 문자열과도 일치한다는 점에서 같은 의미이지만 서로 다른 상황에서 사용됩니다. " * "는 필드 이름을 일치시키는 데 사용되고 " % "는 필드 값을 일치시키는 데 사용됩니다. 또 한 가지 알아차리기 쉽지 않은 점은 "%" 와일드카드 문자를 LIKE 키워드와 함께 사용해야 한다는 점입니다.

밑줄 "_"인 와일드카드 문자도 있습니다. 위와는 다른 의미를 가지며 단일 문자와 일치하는 데 사용됩니다.

SELECT * FROM dbname 
WHERE USER_ID LIKE '%';
NOT NULL 및 빈 레코드

사용자가 아무것도 입력하지 않고 제출 버튼을 누르면 어떻게 되나요? 값이 정말로 필요한 경우 앞서 언급한 대로 데이터 유효성 검사를 위해 클라이언트 측 스크립트나 서버 측 스크립트를 사용할 수 있습니다. 그러나 데이터베이스에서 일부 필드는 공백으로 남겨두고 아무것도 채울 수 있습니다. 이러한 레코드에 대해 MySQL은 다음과 같은 몇 가지 작업을 수행합니다.

기본 작업인 NULL 값을 삽입합니다. 필드 정의에서 NOT NULL을 선언하면(이 필드를 생성하거나 수정할 때) MySQL은 이 필드를 비워두고 아무것도 채우지 않습니다.

ENUM 열거 유형 필드의 경우 NOT NULL을 선언하면 MySQL은 열거 세트의 첫 번째 값을 필드에 삽입합니다. 즉, MySQL은 열거형 세트의 첫 번째 값을 이 열거형 유형의 기본값으로 사용합니다.

NULL 값을 갖는 레코드와 빈 레코드에는 몇 가지 차이점이 있습니다. % 와일드카드 문자는 빈 레코드와 일치할 수 있지만 NULL 레코드와 일치할 수는 없습니다. 어떤 시점에서는 이러한 구별이 의도하지 않은 결과를 초래할 수 있습니다. 내 경험에 따르면 모든 필드는 NOT NULL 로 선언되어야 합니다. 이러한 방식으로 다음 SELECT 쿼리 문이 정상적으로 실행될 수 있습니다.


첫 번째 줄에서 사용자가 CITY 값을 지정하지 않으면 와일드카드 문자 %가 대체되는 데 사용됩니다. CITY 변수이므로 CITY 필드가 비어 있는 레코드도 검색할 때 모든 CITY 값이 고려됩니다.

그런데 CITY 필드 값이 NULL인 레코드가 있으면 문제가 발생합니다. 위 쿼리에서는 이러한 필드를 찾을 수 없습니다. 문제에 대한 해결 방법은 다음과 같습니다.

if (!$CITY) {$CITY = "%";} 
$selectresult = mysql_query ("SELECT * FROM dbname 
WHERE FIRST_NAME = ' 柳 ' 
AND LAST_NAME = ' 如风 ' 
AND CITY LIKE '$CITY' 
");

NULL을 검색할 때는 "IS" 키워드를 사용해야 하며 LIKE가 제대로 작동하지 않는다는 점에 유의하세요.

마지막으로 언급할 점은 새 필드를 추가하거나 수정하기 전에 이미 데이터베이스에 일부 레코드가 있는 경우 원본 레코드에 새로 추가된 필드의 값이 비어 있을 수도 있다는 것입니다. 이는 MySQL의 버그로 볼 수 있으므로 이 경우 SELECT 쿼리 사용 시 특히 주의가 필요하다.

위 내용은 PHP 및 MySQL 기본 튜토리얼(4) 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!

관련 추천:

mysql 기본 지식 요약

PHP 및 MySQL 기본 튜토리얼(1)

PHP 및 MySQL 기본 튜토리얼(2)

PHP 및 MySQL 기본 튜토리얼(3)

PHP 및 MySQL 기본 튜토리얼(4)

mysql 매뉴얼 튜토리얼: http://www.php.cn/course/37.html

mysql 비디오 튜토리얼: http://www.php.cn/course/list/51.html

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.