1. Trang chủ
  2. » Công Nghệ Thông Tin

Mysql your visual blueprint for creating open source databases- P9 pps

20 366 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 576,68 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

GET THE CURRENT DATE WORK WITH DATE COMPONENTS MySQL includes a variety of functions for extracting components, such as the day of the week or the week of the year, from a date value.. T

Trang 1

› Type SELECT author,

RIGHT(quote, 10) and press

Enter

ˇ Type FROM quotes; and

press Enter

■This displays the author column and the last ten characters of the quote column for each row

Á Type SELECT author, MID(quote, 5, 10) and press Enter

‡ Type FROM quotes; and press Enter

■This displays the author column and ten characters of the quote column, starting at the fifth character

MySQL also includes functions that allow you to search a string for a particular substring The first of these,LOCATE, searches a text value for a string you specify If the string is found within the larger string, it returns a number indicating the character position where it starts If the string is not found,LOCATEreturns zero The following query searches the values of the quote column in the quotes table for the string "every" and displays the results:

Example:

SELECT LOCATE("every", quote) FROM quotes;

The LOCATEfunction also accepts a third optional parameter If you specify a number after the two strings, MySQL will only search for the substring starting with the character index you specify This is useful when you want to find the second or third occurrence of a string.

MySQL also supports the INSTRfunction for compatibility with other database systems This function is similar to LOCATE, but the parameters are in the opposite order: you first specify the larger string, and then the substring to search for Unlike LOCATE,INSTR

does not support a starting position for the search.

Trang 2

MySQL allows you to store a date or date/time

combination in several column types, including

DATE,TIME,DATETIME, and TIMESTAMP.

MySQL also includes a number of functions that allow you

to work with dates and times and convert them into different formats.

UNDERSTANDING DATE AND

TIME FUNCTIONS

If you need to know the current date within a MySQL

query, you can use the NOWfunction This function

returns the current date and time If you use this

function as a string value, it will return a string with

the year, month, date, hour, minute, and second with

punctuation in between If you use the result as a

numeric value, it will contain no punctuation.

The NOWfunction does not require any parameters The

SYSDATEand CURRENT_TIMESTAMPfunctions are

synonyms for NOW.

The CURRENT_DATEfunction returns the current date only This function can be abbreviated CURDATE The

CURRENT_TIMEand CURTIMEfunctions are similar but return only the hours, minutes, and seconds values for the current time.

GET THE CURRENT DATE

WORK WITH DATE COMPONENTS

MySQL includes a variety of

functions for extracting

components, such as the day of the

week or the week of the year, from

a date value The following table

describes these functions.

The HOUR,MINUTE, and SECOND

functions work only with values

that include a time, such as

TIMESTAMPor TIMEcolumns The

other functions work only with

values that include a date.

DAYOFWEEK Numeric day of week (1-7 for Sunday-Saturday)

WEEKDAY Numeric day of week (0-6 for Monday-Sunday)

DAYNAME Name of day of week

DAYOFMONTH Day of month (1-31)

DAYOFYEAR Day of year (1-366)

MONTH Numeric month (1-12)

MONTHNAME Name of month

QUARTER Numeric quarter (1-4)

WEEK Week of year (0-53)

YEAR Numeric year (4 digits)

YEARWEEK Year and week number (6 digits)

HOUR Hour of day (0-23)

MINUTE Minute of hour (0-59)

SECOND Second (0-59)

Trang 3

The DATE_ADDfunction adds an interval to a

date value To use this function, you specify the

date to work with as an expression or column

name, the keyword INTERVAL, a number

specifying the amount of time to add, and a

keyword indicating the type of interval The basic

intervals are SECOND,MINUTE,HOUR,DAY,

MONTH, and YEAR.

The DATE_SUBfunction is similar, but subtracts

the specified interval from the date You can use

ADDDATEand SUBDATEas synonyms for

DATE_ADDand DATE_SUB The example below

subtracts two months from a date in the

updatetime column.

Example:

SELECT DATE_SUB(updatetime, INTERVAL 2

MONTH) FROM address;

In addition to the basic intervals, you can use various keywords

to specify multiple parts of a date, such as a year and month The table below lists these keywords with an example of the syntax for each one.

MINUTE_SECOND Minutes and seconds "03:22"

HOUR_MINUTE Hours and minutes "12:03"

HOUR_SECOND Hours, minutes, and "12:03:22"

seconds

DAY_HOUR Days and hours "2 12"

YEAR_MONTH Years and months "2-1"

DAY_MINUTE Days, hours, and minutes "2 12:03"

DAY_SECOND Days, hours, minutes, "2 12:03:22"

and seconds ADD AND SUBTRACT

The DATE_FORMATfunction allows you to display a date

with the format you specify The first parameter should

be a date value, and the second is a string with one or

more codes for components of the date and time The

following codes display components of the date.

DATE_FORMAT FUNCTIONS

%d Day of month (01, 02, 03, and so on)

%e Day of month (1, 2, 3, and so on)

%D Day of month (1st, 2nd, 3rd, and so on)

%m Numeric month (01, 02, 03, and so on)

%c Numeric month (1, 2, 3, and so on)

%M Month name

%W Name of day of week

%a Name of day of week (abbreviated)

%Y Year (4 digits)

%y Year (2 digits)

The following codes can be used within the

DATE_FORMATfunction to display the components

of the time An additional function,TIME_FORMAT,

is similar to DATE_FORMATbut only allows the following codes.

TIME_FORMAT FUNCTIONS

%H Hour (24 hours, 2 digits)

%k Hour (24 hours, 1-2 digits)

%h Hour (12 hours, 2 digits)

%i Minute (2 digits)

%S Second (2 digits)

%T Complete 24-hour time

%t Complete 12-hour time with AM or PM FORMAT DATES

Trang 4

Note: This example uses the address

table in the testdb database You can

import this table from the CD-ROM

⁄ From the MySQL monitor, type USE testdb; and press Enter

■The database is now selected

¤ Type INSERT INTO address (name, updatetime) and press Enter

‹ Type VALUES ("John Smith", "1998-12-22 10:05:00");

and press Enter

■This adds a record with a specified date

› Type INSERT INTO address (name) VALUES ("Jane Doe");

and press Enter

■This record is assigned the current date and time

You can use MySQL’s date and time functions on dates

you specify within a query, or dates and times stored

in DATE,TIME,DATETIME, or TIMESTAMPcolumns.

If you specify a date, you can use one of two formats: a

number that combines the year, month, date, hour, minute,

and second values, or a string with punctuation The

following two dates are equivalent:

2004-12-31 12:33:00

20041231123300

For TIMEcolumns or functions that require only a time,

you can simply specify the hours, minutes, and seconds as a

number or string Similarly, you can specify the year, month,

and date for DATEcolumns or functions that work with dates.

For example, the address table defined earlier in this book

has a TIMESTAMPcolumn called updatetime You can use

the MONTHand YEARfunctions, which extract the corresponding components from a date, to display only the month and year for each row’s TIMESTAMP:

SELECT MONTH(updatetime), YEAR(updatetime) FROM address;

When you use functions like this and are returning the data

to an application, you may find it useful to use the AS

keyword to assign an alias to the evaluated values.

You can compare dates using the =operator, as with other data types You can also use functions like YEAR

within a WHEREclause to compare just part of the date The following SELECTquery displays all of the rows with

an updatetime column with the year 2002:

SELECT * FROM address WHERE YEAR(updatetime) = 2002;

WORK WITH DATES AND TIMES

WORK WITH DATES AND TIMES

Trang 5

ˇ Type SELECT name,

MONTH(updatetime),

YEAR(updatetime) and

press Enter

Á Type FROM address; and press Enter

■The month and year for all rows are displayed

‡ Type SELECT * FROM

address and press Enter

° Type WHERE

YEAR(updatetime) = 1998;

and press Enter

■Rows that match the specified year are displayed

MySQL includes several functions for converting date values to different formats.

The following functions convert MySQL date and time values:

TO_DAYS Converts to number of days since year zero

UNIX_TIMESTAMP Converts to a UNIX timestamp

(number of seconds since 1/1/1970)

TIME_TO_SEC Converts a time value to a number of seconds

Conversely, the following functions convert from various formats back to a MySQL date or time value:

FROM_DAYS Converts from number of days since year zero

FROM_UNIXTIME Converts from UNIX timestamp

SEC_TO_TIME Converts number of seconds to time (hours, minutes, seconds)

If you need to convert a date to a format not listed here, you can use the individual functions such as MONTH, DATE,and YEAR,or the DATE_FORMAT

function, described in the next section.

Trang 6

Note: This example uses the address

table in the testdb database,

available on the CD-ROM

⁄ From the MySQL monitor,

type USE testdb; and press

Enter

■The database is now

selected

¤ Type SELECT name, DATE_FORMAT(updatetime,

"%M %D, %Y") and press Enter

‹ Type FROM address; and press Enter

■The rows of the table are listed with formatted dates

› Type SELECT DATE_FORMAT(NOW(), "The date is %m/%d/%Y"); and press Enter

■The current date is displayed in the specified format

ˇ Type SELECT TIME_FORMAT(NOW(),

"%h:%i:%s"); and press Enter

■The current time is displayed in the specified format

DISPLAY FORMATTED DATES

Often, you will need to display a date in a specific

format You can use the DATE_FORMATfunction

to do this in MySQL This function is particularly

useful to format a date before displaying it or returning it

to an application.

To use DATE_FORMAT, you specify the date value, which can

be a specified date or a column name, and a format string

with one or more codes for date and time components The

following example displays the rows of the address table

with a date such as "February 20th, 2004":

SELECT name,

DATE_FORMAT(updatetime, "%M %D, %Y")

FROM address;

As with other calculated values, you can use the ASkeyword

to assign an alias to the formatted date This is particularly

useful if you are passing the date to an application.

The format string you use with DATE_FORMATcan contain punctuation and text to accompany the date Any text that is not a code beginning with the %symbol is passed through to the output The following example obtains the current date using the NOWfunction and formats it with a text message:

SELECT DATE_FORMAT(NOW(), "The date is

%m/%d/%Y.");

If you are only working with the time for a date value, you can use the TIME_FORMATfunction This function is similar

to DATE_FORMAT, but accepts only the codes that represent the components of the time The following example displays the current time using this function:

SELECT TIME_FORMAT(NOW(), "%h:%i:%s");

The codes you can use with the DATE_FORMATand

TIME_FORMATfunctions are listed in the section

"Understanding Date and Time Functions," earlier in this chapter.

DISPLAY FORMATTED DATES

Trang 7

ADD AND SUBTRACT DATES AND TIMES

Note: This example uses the address

table in the testdb database,

available on the CD-ROM

⁄ From the MySQL

monitor, type SELECT

DATE_ADD(NOW(), INTERVAL

3 MONTH); and press Enter

■This displays the current date plus three months

¤ Type SELECT NOW() + INTERVAL 2 YEAR; and press Enter

■This adds two years to the current date

‹ Type USE testdb; and press Enter

› Type SELECT * FROM address WHERE and press Enter

ˇ Type updatetime > (NOW() – INTERVAL 30 DAY); and press Enter

■All rows updated within the last 30 days are displayed

You can use the MySQL functions DATE_ADDand

DATE_SUBto add and subtract values from a date.

This is useful when you need to calculate a future

or past date, and is also useful when testing date values.

To add an interval to a date value, use DATE_ADDand

specify the date, the keyword INTERVAL, the number to

add, and the unit for the number, such as MONTHor DAY For

example, the following SELECTstatement displays the date

three months from the current date:

SELECT DATE_ADD(NOW(), INTERVAL 3 MONTH);

In MySQL version 3.23 and later, you can use the +and

-operators as shorthand for DATE_ADDand DATE_SUB To

use these, simply specify the same INTERVALkeyword and

unit type The following example adds two years to the

current date and displays the result:

SELECT NOW() + INTERVAL 2 YEAR;

While you can use date addition and subtraction to modify existing date values, they can also be useful in a WHERE

clause For example, the following SELECTquery displays the rows from the address table where the updatetime column has a value within the last 30 days:

SELECT * FROM address WHERE updatetime > (NOW() - INTERVAL 30 DAY);

This example subtracts an interval of 30 days from the NOW

function to obtain the date 30 days ago and then tests whether the updatetime column’s value is after that date.

Be sure to use singular values such as DAY,MONTH, and

YEARin the INTERVALclause Plural values, such as

YEARS,will result in an error.

ADD AND SUBTRACT DATES AND TIMES

Trang 8

Along with the functions described earlier in this

chapter, MySQL includes a variety of other functions.

These include functions to display information about

the MySQL server, current user, and session; functions to encode and decode strings in various ways; and functions for working with binary numbers.

MISCELLANEOUS FUNCTIONS

DATABASE

The DATABASEfunction does not require any arguments.

It returns the name of the currently selected database.

Usually this is the database you selected with the USE

statement.

Example:

SELECT DATABASE();

USER

The USERfunction displays the name of the current

MySQL username If you are using the MySQL monitor,

this is the user you specified on the command line.

The returned value includes the username and the

hostname the user is connecting from, separated by

the@symbol The SYSTEM_USERand SESSION_USER

functions are synonyms for USER.

Example:

SELECT USER();

VERSION

The VERSIONfunction returns the MySQL server’s software version number as a string This function does not require any arguments.

Example:

SELECT VERSION();

CONNECTION_ID

The CONNECTION_IDfunction returns the current connection ID This is a number assigned when the client connects to the MySQL server and will be a unique number for each current client session.

Example:

SELECT CONNECTION_ID();

LAST_INSERT_ID

The LAST_INSERT_IDfunction returns the last value assigned to a column with the AUTO_INCREMENT

attribute when a row was added using the INSERT

statement within the current client session If you have added a row to a table that includes an auto-increment column, you can use this function to obtain a unique identifier for the new row.

Example:

SELECT LAST_INSERT_ID();

MYSQL INFORMATION FUNCTIONS

The functions described here return information about the

current database, the current user, and the MySQL server

itself These are particularly useful from within an

application.

Trang 9

The PASSWORDfunction accepts a string and

encrypts it This function is used by MySQL

itself to encrypt passwords for users For

security reasons, after you have an encrypted

value, there is no way to calculate the

original password; to check user passwords,

MySQL encrypts the value entered by the

user and compares it with the encrypted

password stored in the database.

Example:

SELECT PASSWORD("zephyr");

ENCRYPT

The ENCRYPTfunction accepts a string as

an argument and encrypts it This function

is available only on UNIX servers, as it uses

the standard UNIX function crypt() As

with the PASSWORDfunction, this is a

one-way encryption and cannot be reversed.

Depending on the operating system, the

ENCRYPTfunction may work with only the

first eight characters of the string This is

due to the fact that the underlying UNIX

function is intended for encrypting short

passwords.

Example:

SELECT ENCRYPT("zephyr");

ENCRYPTION FUNCTIONS

MySQL includes several operators and functions that

you can use to work with individual bits of binary data.

These include logical ANDand ORfunctions that work

on the individual bits (binary digits) of a number and

other operations The following table describes the

binary operators available in MySQL.

Along with these operations, MySQL includes a function,

BIT_COUNT, which returns the number of bits used to

store a number This is useful for checking whether a

number will fit in a particular numeric column type.

| Logical bitwise OR

& Logical bitwise AND

<< Shift the bits of a number

one space to the left

> Shift the bits of a number

one space to the right

~ Convert all 1 bits to 0 and all 0 bits to 1 BINARY (BIT) OPERATORS

MySQL includes a variety of functions that can encode or

decode strings These are useful when working with

passwords and other sensitive information in a database.

ENCODE

The ENCODEfunction encodes a string using another string as a password It uses the letters in the password to determine how to alter the original string Unlike PASSWORDand ENCRYPT, the encoding is reversible.

The result of the ENCODEfunction is a binary string with the same length as the original string Because it may contain nontext characters, this value cannot be stored in a text column, such as CHAR

or TEXT You can store it in a binary column type such as BLOB.

Example:

SELECT ENCODE("Hello there", "zephyr");

DECODE

The DECODEfunction accepts a string encoded with the ENCODE

function and a password It decodes the string using the password.

If the password is the same one used when encoding the string, this should restore the original value of the string.

MD5

The MD5function calculates an MD5checksum for a string A

checksum is a value calculated from a string value using a formula.

MD5is a standard developed by RSA Data Security It uses a complex formula to create an alphanumeric checksum based on the original string value The checksum cannot be used to recreate the original string, but it can be compared with another string’s checksum to determine whether the strings match.

Example:

SELECT MD5("Hello there");

Trang 10

MySQL includes a variety of tools for importing and

exporting data These are useful for transferring

data to and from other database systems,

spreadsheets, and other applications, and to back up and

restore data in MySQL tables.

IMPORT AND EXPORT TOOLS

Export with SELECT

The INTO OUTFILEoption can be used with any

SELECTquery to create a text file with the resulting

row data Each row of the table is written as a row in

the text file By default, the fields within each line are

separated by tab characters The file is saved on the

MySQL server The default location is the directory

where the MySQL database itself is stored.

Example:

SELECT name, address, city

INTO OUTFILE "mail.txt"

FROM mail;

Text File Formats

The SELECT INTO OUTFILEand LOAD DATA INFILE

commands support several options to control the

structure of the output file You can specify these options

after the table name and before any list of column names

with LOAD DATA, or after the name of the output file

with SELECT INTO OUTFILE The table below shows

the available options.

The ENCLOSED BYoption can also be used as

OPTIONALLY ENCLOSED BY If this is specified, text

values are enclosed in the character, but numeric fields

are not enclosed.

FIELDS Separates fields \t(tab)

TERMINATED BY

FIELDS Encloses each field none

ENCLOSED BY

FIELDS Prefixes special

ESCAPED BY characters \(backslash)

LINES

TERMINATED BY Ends each line \n(newline)

Import with LOAD DATA

You can use the LOAD DATA INFILEcommand in MySQL to read a text file into a database table This command can be used to import a text file created by the

SELECT INTO OUTFILEcommand, or a file you have exported from another application To use this command, use LOAD DATA INFILEand the filename to import Specify the table to import to with the INTO TABLE

keywords, and specify a list of column names if needed.

If you do not specify a list of column names, MySQL will expect all columns to appear in the file in the same order they are defined in the table's structure.

You can specify the LOW_PRIORITYkeyword after LOAD DATAto wait until no clients are reading from the table before importing the data The CONCURRENToption can

be used to allow clients to read data while the import is

in progress The LOCALoption allows you to specify a file on the client machine instead of the MySQL server.

If a row in the text file contains the same value for a unique or key field as an existing row of the table, an error will occur, and the import operation will be aborted You can optionally specify the REPLACE

keyword after the filename to replace the existing rows with the rows from the text file, avoiding this error Alternately, specify the IGNOREkeyword to skip any duplicate rows and continue the import.

Example:

LOAD DATA INFILE 'address.txt' INTO TABLE address (name, address, city);

Ngày đăng: 03/07/2014, 01:20

TỪ KHÓA LIÊN QUAN