이 기사의 내용은 PHP 및 MySQL(IV)의 기본 튜토리얼에 관한 것입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
MySQL의 SQL
MySQL의 경우 가장 먼저 기억해야 할 것은 각 명령 줄 앞에 세미콜론(;)이 붙는다는 점입니다. , 하지만... 절대적으로 절대적인 것은 없으며 여기서도 마찬가지입니다.
세미콜론을 추가하지 않아도 되는 상황도 있습니다. 일반적인 가로 배열 대신 원하는 필드의 세로 배열을 표시하려면 G를 사용하여 SQL 문 줄을 끝내면 됩니다. 예를 들면 다음과 같습니다.
mysql_query ("INSERT INTO tablename (first_name, last_name) VALUES ('$first_name', '$last_name') ");
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 '%';
사용자가 아무것도 입력하지 않고 제출 버튼을 누르면 어떻게 되나요? 값이 정말로 필요한 경우 앞서 언급한 대로 데이터 유효성 검사를 위해 클라이언트 측 스크립트나 서버 측 스크립트를 사용할 수 있습니다. 그러나 데이터베이스에서 일부 필드는 공백으로 남겨두고 아무것도 채울 수 있습니다. 이러한 레코드에 대해 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 매뉴얼 튜토리얼: http://www.php.cn/course/37.html
mysql 비디오 튜토리얼: http://www.php.cn/course/list/51.html