********** Data Types ********** Numeric Types ============= CUBRID supports the following numeric data types to store integers or real numbers. +----------------------+-----------+---------------------------------+--------------------------------+---------------------+ | Type | Bytes | Min | Max | Exact/approx. | +======================+===========+=================================+================================+=====================+ | **SHORT**, | 2 | -32,768 | 32,767 | exact numeric | | **SMALLINT** | | | | | +----------------------+-----------+---------------------------------+--------------------------------+---------------------+ | **INTEGER**, | 4 | -2,147,483,648 | +2,147,483,647 | exact numeric | | **INT** | | | | | +----------------------+-----------+---------------------------------+--------------------------------+---------------------+ | **BIGINT** | 8 | -9,223,372,036,854,775,808 | +9,223,372,036,854,775,807 | exact numeric | +----------------------+-----------+---------------------------------+--------------------------------+---------------------+ | **NUMERIC**, | 16 | precision *p*: 1 | precision *p*: 38 | exact numeric | | **DECIMAL** | | | | | | | | scale *s*: 0 | scale *s*: 38 | | +----------------------+-----------+---------------------------------+--------------------------------+---------------------+ | **FLOAT**, | 4 | -3.402823466E+38 | +3.402823466E+38 | approximate numeric | | **REAL** | | (ANSI/IEEE 754-1985 standard) | (ANSI/IEEE 754-1985 standard) | floating point : 7 | +----------------------+-----------+---------------------------------+--------------------------------+---------------------+ | **DOUBLE**, | 8 | -1.7976931348623157E+308 | +1.7976931348623157E+308 | approximate numeric | | **DOUBLE PRECISION** | | (ANSI/IEEE 754-1985 standard) | (ANSI/IEEE 754-1985 standard) | floating point : 15 | +----------------------+-----------+---------------------------------+--------------------------------+---------------------+ Numeric data types are divided into exact and approximate types. Exact numeric data types (**SMALLINT**, **INT**, **BIGINT**, **NUMERIC**) are used for numbers whose values must be precise and consistent, such as the numbers used in financial accounting. Note that even when the literal values are equal, approximate numeric data types (**FLOAT**, **DOUBLE**) can be interpreted differently depending on the system. CUBRID does not support the UNSIGNED type for numeric data types. On the above table, two types on the same cell are identical types but it always prints the above type name when you execute :ref:`show-columns-statement` statement. For example, you can use both **SHORT** and **SMALLINT** when you create a table, but it prints "SHORT" when you execute :ref:`show-columns-statement` statement. **Precision and Scale** The precision of numeric data types is defined as the number of significant figures. This applies to both exact and approximate numeric data types. The scale represents the number of digits following the decimal point. It is significant only in exact numeric data types. Attributes declared as exact numeric data types always have fixed precision and scale. **NUMERIC** (or **DECIMAL**) data type always has at least one-digit precision, and the scale should be between 0 and the precision declared. Scale cannot be greater than precision. For **INTEGER**, **SMALLINT**, or **BIGINT** data types, the scale is 0 (i.e. no digits following the decimal point), and the precision is fixed by the system. **Numeric Literals** Special signs can be used to input numeric values. The plus sign (+) and minus sign (-) are used to represent positive and negative numbers respectively. You can also use scientific notations. In addition, you can use currency signs specified in the system to represent currency values. The maximum precision that can be expressed by a numeric literal is 255. **Numeric Coercions** All numeric data type values can be compared with each other. To do this, automatic coercion to the common numeric data type is performed. For explicit coercion, use the **CAST** operator. When different data types are sorted or calculated in a numerical expression, the system performs automatic coercion. For example, when adding a **FLOAT** attribute value to an **INTEGER** attribute value, the system automatically coerces the **INTEGER** value to the most approximate **FLOAT** value before it performs the addition operation. The following is an example to print out the value of **FLOAT** type when adding the value of **INTEGER** type to the value of **FLOAT** type. .. code-block:: sql CREATE TABLE tbl (a INT, b FLOAT); INSERT INTO tbl VALUES (10, 5.5); SELECT a + b FROM tbl; :: 1.550000e+01 This is an example of overflow error occurred when adding two integer values, the following can be an **INTEGER** type value for the result. .. code-block:: sql SELECT 100000000*1000000; :: ERROR: Data overflow on data type integer. In the above case, if you specify one of two integers as the **BIGINT** type, it will determine the result value into the **BIGINT** type, and then output the normal result. .. code-block:: sql SELECT CAST(100000000 AS BIGINT)*1000000; :: 100000000000000 .. warning:: Earlier version than CUBRID 2008 R2.0, the input constant value exceeds **INTEGER**, it is handled as **NUMERIC**. However, 2008 R2.0 or later versions, it is handled as **BIGINT** . INT/INTEGER ----------- The **INTEGER** data type is used to represent integers. The value range is available is from -2,147,483,648 to +2,147,483,647. **SMALLINT** is used for small integers, and **BIGINT** is used for big integers. * If a real number is entered for an **INT** type, the number is rounded to zero decimal place and the integer value is stored. * **INTEGER** and **INT** are used interchangeably. * **DEFAULT** constraint can be specified in a column of this type. :: If you specify 8934 as INTEGER, 8934 is stored. If you specify 7823467 as INTEGER, 7823467 is stored. If you specify 89.8 to an INTEGER, 90 is stored (all digits after the decimal point are rounded). If you specify 3458901122 as INTEGER, an error occurs (if the allowable limit is exceeded). SHORT/SMALLINT -------------- The **SMALLINT** data type is used to represent a small integer type. The value range is available is from -32,768 to +32,767. * If a real number is entered for an **SMALLINT** type, the number is rounded to zero decimal place and the integer value is stored. * **SMALLINT** and **SHORT** are used interchangeably. * **DEFAULT** constraint can be specified in a column of this type. :: If you specify 8934 as SMALLINT, 8934 is stored. If you specify 34.5 as SMALLINT, 35 is stored (all digits after the decimal point are rounded). If you specify 23467 as SMALLINT, 23467 is stored. If you specify 89354 as SMALLINT, an error occurs (if the allowable limit is exceeded). BIGINT ------ The **BIGINT** data type is used to represent big integers. The value range is available from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. * If a real number is entered for a **BIG** type, the number is rounded to zero decimal place and the integer value is stored. * Based on the precision and the range of representation, the following order is applied. **SMALLINT** ⊂ **INTEGER** ⊂ **BIGINT** ⊂ **NUMERIC** * **DEFAULT** constraint can be specified in a column of this type. :: If you specify 8934 as BIGINT, 8934 is stored. If you specify 89.1 as BIGINT, 89 is stored. If you specify 89.8 as BIGINT, 90 is stored (all digits after the decimal point are rounded). If you specify 3458901122 as BIGINT, 3458901122 is stored. NUMERIC/DECIMAL --------------- **NUMERIC** or **DECIMAL** data types are used to represent fixed-point numbers. As an option, the total number of digits (precision) and the number of digits after the decimal point (scale) can be specified for definition. The minimum value for the precision *p* is 1. When the precision *p* is omitted, you cannot enter data whose integer part exceeds 15 digits because the default value is 15. If the scale *s* is omitted, an integer rounded to the first digit after the decimal point is returned because the default value is 0. :: NUMERIC [(p[, s])] * Precision must be equal to or greater than scale. * Precision must be equal to or greater than the number of integer digits + scale. * **NUMERIC**, **DECIMAL**, and **DEC** are used interchangeably. * To check how the precision and the scale became changed when you operate with **NUMERIC** typed values, see :ref:`numeric-data-type-op-and-conversion`. * **DEFAULT** constraint can be specified in a column of this type. :: If you specify 12345.6789 as NUMERIC, 12346 is stored (it rounds to the first place after the decimal point since 0 is the default value of scale). If you specify 12345.6789 as NUMERIC(4), an error occurs (precision must be equal to or greater than the number of integer digits). If you declare NUMERIC(3,4), an error occurs (precision must be equal to or greater than the scale). If you specify 0.12345678 as NUMERIC(4,4), .1235 is stored (it rounds to the fifth place after the decimal point). If you specify -0.123456789 as NUMERIC(4,4), -.1235 is stored (it rounds to the fifth place after decimal point and then prefixes a minus (-) sign). FLOAT/REAL ---------- The **FLOAT** (or **REAL**) data type represents floating point numbers. The ranges of values that can be described as normalized values are from -3.402823466E+38 to -1.175494351E-38, 0, and from +1.175494351E-38 to +3.402823466E+38, whereas the values other than normalized values, which are closer to 0, are described as de-normalized values. It conforms to the ANSI/IEEE 754-1985 standard. The minimum value for the precision *p* is 1 and the maximum value is 38. When the precision *p* is omitted or it is specified as seven or less, it is represented as single precision (in 7 significant figures). If the precision *p* is greater than 7 and equal to or less than 38, it is represented as double precision (in 15 significant figures) and it is converted into **DOUBLE** data type. **FLOAT** data types must not be used if you want to store a precise value that exceeds the number of significant figures, as they only store the approximate value of any input value over 7 significant figures. :: FLOAT[(p)] * **FLOAT** is in 7 significant figures. * Extra cautions are required when comparing data because the **FLOAT** type stores approximate numeric. * **FLOAT** and **REAL** are used interchangeably. * **DEFAULT** constraint can be specified in a column of this type. :: If you specify 16777217 as FLOAT, 16777216 is stored and 1.677722e+07 is displayed (if precision is omitted, 8-th digit is rounded up because it is represented as 7 significant figures). If you specify 16777217 as FLOAT(5), 16777216 is stored and 1.677722e+07 is displayed (if precision is in seven or less, 8-th digit is rounded up because it is represented as 7 significant figures). If you specify 16777.217 as FLOAT(5), 16777.216 is stored and 1.677722e+04 is displayed (if precision is in seven or less, 8-th digit is rounded up because it is represented as 7 significant figures). If you specify 16777.217 as FLOAT(10), 16777.217 is stored and 1.677721700000000e+04 is displayed (if precision is greater than 7 and less than or equal to 38, zeroes are added because it is represented as 15 significant figures). DOUBLE/DOUBLE PRECISION ----------------------- The **DOUBLE** data type is used to represent floating point numbers. The ranges of values that can be described as normalized values are from -1.7976931348623157E+308 to -2.2250738585072014E-308, 0, and from 2.2250738585072014E-308 to 1.7976931348623157E+308, whereas the values other than normalized values, which are closer to 0, are described as de-normalized values. It conforms to the ANSI/IEEE 754-1985 standard. The precision *p* is not specified. The data specified as this data type is represented as double precision (in 15 significant figures). **DOUBLE** data types must not be used if you want to store a precise value that exceeds the number of significant figures, as they only store the approximate value of any input value over 15 significant figures. * **DOUBLE** is in 15 significant figures. * Extra caution is required when comparing data because the **DOUBLE** type stores approximate numeric. * **DOUBLE** and **DOUBLE PRECISION** are used interchangeably. * **DEFAULT** constraint can be specified in a column of this type. :: If you specify 1234.56789 as DOUBLE, 1234.56789 is stored and 1.234567890000000e+03 is displayed. If you specify 9007199254740993 as DOUBLE, 9007199254740992 is stored and 9.007199254740992e+15 is displayed. .. note:: MONETARY type is deprecated, and it is not recommended anymore. .. _date-time-type: Date/Time Types =============== Date/time data types are used to represent the date or time (or both together). CUBRID supports the following data types: +---------------+-----------+---------------------------+---------------------------+---------------------------------------------------------------------+ | Type | bytes | Min. | Max. | Note | +===============+===========+===========================+===========================+=====================================================================+ | **DATE** | 4 | 0001-01-01 | 9999-12-31 | As an exception, DATE '0000-00-00' format is allowed. | +---------------+-----------+---------------------------+---------------------------+---------------------------------------------------------------------+ | **TIME** | 4 | 00:00:00 | 23:59:59 | | +---------------+-----------+---------------------------+---------------------------+---------------------------------------------------------------------+ | **TIMESTAMP** | 4 | 1970-01-01 00:00:01 (GMT) | 2038-01-19 03:14:07 (GMT) | As an exception, TIMESTAMP '0000-00-00 00:00:00' format is allowed. | | | | 1970-01-01 09:00:01 (KST) | 2038-01-19 12:14:07 (KST) | | +---------------+-----------+---------------------------+---------------------------+---------------------------------------------------------------------+ | **DATETIME** | 8 | 0001-01-01 00:00:0.000 | 9999-12-31 23:59:59.999 | As an exception, DATETIME '0000-00-00 00:00:00' format is allowed. | +---------------+-----------+---------------------------+---------------------------+---------------------------------------------------------------------+ **Range and Resolution** * By default, the range of a time value is represented by the 24-hour system. Dates follow the Gregorian calendar. An error occurs if a value that does not meet these two constraints is entered as a date or time. * The range of year in **DATE** is 0001 - 9999 AD. * From the CUBRID 2008 R3.0 version, if time value is represented with two-digit numbers, a number from 00 to 69 is converted into a number from 2000 to 2069; a number from 70 to 99 is converted into a number from 1970 to 1999. In earlier than CUBRID 2008 R3.0 version, if time value is represented with two-digit numbers, a number from 01 to 99 is converted into a number from 0001 to 0099. * The range of **TIMESTAMP** is between 1970-01-01 00:00:01 and 2038-01-19 03 03:14:07 (GMT). For KST (GMT+9), values from 1970-01-01 09:00:01 to 2038-01-19 12:14:07 can be stored. timestamp'1970-01-01 00:00:00' (GMT) is the same as timestamp'0000-00-00 00:00:00'. * The results of date, time and timestamp operations may depend on the rounding mode. In these cases, for Time and Timestamp, the most approximate second is used as the minimum resolution; for Date, the most approximate date is used as the minimum resolution. **Coercions** The **Date** / **Time** types can be cast explicitly using the **CAST** operator only when they have the same field. For implicit coercion, see :ref:`implicit-type-conversion`. The following table shows types that allows explicit coercions. For implicit coercion, see :ref:`arithmetic-op-type-casting`. **Explicit Coercions** +----------------+------+------+----------+-----------+ | FROM \\ TO | DATE | TIME | DATETIME | TIMESTAMP | +================+======+======+==========+===========+ | **DATE** | \- | X | O | O | +----------------+------+------+----------+-----------+ | **TIME** | X | \- | X | X | +----------------+------+------+----------+-----------+ | **DATETIME** | O | O | \- | O | +----------------+------+------+----------+-----------+ | **TIMESTAMP** | O | O | O | \- | +----------------+------+------+----------+-----------+ In general, zero is not allowed in **DATE**, **DATETIME**, and **TIMESTAMP** types. However, if both date and time values are 0, it is allowed as an exception. This is useful in terms that this value can be used if an index exists upon query execution of a column corresponding to the type. * Some functions in which the **DATE**, **DATETIME**, and **TIMESTAMP** types are specified as an argument return different value based on the **return_null_on_function_errors** system parameter if every input argument value for date and time is 0. If **return_null_on_function_errors** is yes, **NULL** is returned; if no, an error is returned. The default value is **no**. * The functions that return **DATE**, **DATETIME**, and **TIMESTAMP** types can return a value of 0 for date and time. However, these values cannot be stored in Date objects in Java applications. Therefore, it will be processed with one of the following based on the configuration of zeroDateTimeBehavior, the connection URL property: being handled as an exception, returning **NULL**, or returning a minimum value (see :ref:`jdbc-connection-conf`). * If the **intl_date_lang** system is configured, input string of :func:`TO_DATE`, :func:`TO_TIME`, :func:`TO_DATETIME`, :func:`TO_TIMESTAMP`, :func:`DATE_FORMAT`, :func:`TIME_FORMAT`, :func:`TO_CHAR` and :func:`STR_TO_DATE` functions follows the corresponding locale date format. For details, see :ref:`stmt-type-parameters` and the description of each function. DATE ---- The **DATE** data type is used to represent the year (yyyy), month (mm) and day (dd). Supported range is "01/01/0001" to "12/31/9999." The year can be omitted. If it is, the year value of the current system is specified automatically. The specified input/output types are as follows: :: date'mm/dd[/yyyy]' date'[yyyy-]mm-dd' * All fields must be entered as integer. * The date value is displayed in the type of 'MM/DD/YYYY' in CSQL, and it is displayed in the type of 'YYYY-MM-DD' in JDBC application programs and the CUBRID Manager. * The :func:`TO_DATE` function is used to convert a character string type into a **DATE** type. * 0 is not allowed to input in year, month, and day; however, '0000-00-00', which every digit consisting of year, month, and day is 0, is allowed as an exception. * **DEFAULT** constraint can be specified in a column of this type. :: DATE'2008-10-31' is displayed as '10/31/2008'. DATE'10/31' is displayed as '10/31/2011'(if a value for year is omitted, the current year is automatically specified). DATE'00-10-31' is displayed as '10/31/2000'. DATE'0000-10-31' is displayed as an error (a year value should be at least 1). DATE'70-10-31' is displayed as '10/31/1970'. DATE'0070-10-31' is displayed as '10/31/0070'. TIME ---- The **TIME** data type is used to represent the hour (hh), minute (mm) and second (ss). Supported range is "00:00:00" to "23:59:59." Second can be omitted; if it is, 0 seconds is specified. Both 12-hour and 24-hour notations are allowed as an input format. The input format of **TIME** is as follows: :: time'hh:mi[:ss] [am | pm]' * All items must be entered as integer. * AM/PM time notation is used to display time in the CSQL; while the 24-hour notation is used in the CUBRID Manager. * AM/PM can be specified in the 24-hour notation. An error occurs if the time specified does not follow the AM/PM format. * Every time value is stored in the 24-hour notation. * The :func:`TO_TIME` function is used to return a character string type into a TIME type. * **DEFAULT** constraint can be specified in a column of this type. :: TIME'00:00:00' is outputted as '12:00:00 AM'. TIME'1:15' is regarded as '01:15:00 AM'. TIME'13:15:45' is regarded as '01:15:45 PM'. TIME'13:15:45 pm' is stored normally. TIME'13:15:45 am' is an error (an input value does not match the AM/PM format). TIMESTAMP --------- The **TIMESTAMP** data type is used to represent a data value in which the date (year, month, date) and time (hour, minute, second) are combined. The range of representable value is between GMT '1970-01-01 00:00:01' and '2038-01-19 03:14:07'. The **DATETIME** type can be used if the value is out of range or data in milliseconds is stored. The input format of **TIMESTAMP** is as follows: :: timestamp'hh:mi[:ss] [am|pm] mm/dd[/yyyy]' timestamp'hh:mi[:ss] [am|pm] [yyyy-]mm-dd' timestamp'mm/dd[/yyyy] hh:mi[:ss] [am|pm]' timestamp'[yyyy-]mm-dd hh:mi[:ss] [am|pm]' * All fields must be entered in integer format. * If the year is omitted, the current year is specified by default. If the time value (hour/minute/second) is omitted, 12:00:00 AM is specified. * You can store the timestamp value of the system in the **TIMESTAMP** type by using the :c:macro:`SYS_TIMESTAMP`\ (or :c:macro:`SYSTIMESTAMP`, :c:macro:`CURRENT_TIMESTAMP`). * The :func:`TIMESTAMP` or :func:`TO_TIMESTAMP` function is used to cast a character string type into a **TIMESTAMP** type. * 0 is not allowed to input in year, month, and day; however, '0000-00-00 00:00:00', which every digit consisting of year, month, day, hour, minute, and second is 0, is allowed as an exception. GMT timestamp'1970-01-01 12:00:00 AM' or KST timestamp'1970-01-01 09:00:00 AM' is translated into timestamp'0000-00-00 00:00:00'. * **DEFAULT** constraint can be specified in a column of this type. :: TIMESTAMP'10/31' is outputted as '12:00:00 AM 10/31/2011' (if the value for year/time is omitted, a default value is outputted ). TIMESTAMP'10/31/2008' is outputted as '12:00:00 AM 10/31/2008' (if the value for time is omitted, a default value is outputted ). TIMESTAMP'13:15:45 10/31/2008' is outputted as '01:15:45 PM 10/31/2008'. TIMESTAMP'01:15:45 PM 2008-10-31' is outputted as '01:15:45 PM 10/31/2008'. TIMESTAMP'13:15:45 2008-10-31' is outputted as '01:15:45 PM 10/31/2008'. TIMESTAMP'10/31/2008 01:15:45 PM' is outputted as '01:15:45 PM 10/31/2008'. TIMESTAMP'10/31/2008 13:15:45' is outputted as '01:15:45 PM 10/31/2008'. TIMESTAMP'2008-10-31 01:15:45 PM' is outputted as '01:15:45 PM 10/31/2008'. TIMESTAMP'2008-10-31 13:15:45' is outputted as '01:15:45 PM 10/31/2008'. An error occurs on TIMESTAMP '2099-10-31 01:15:45 PM' (out of range to represent TIMESTAMP). DATETIME -------- The **DATETIME** data type is used to represent a data value in which the data (year, month, date) and time (hour, minute, second) are combined. The range of representable value is between 0001-01-01 00:00:00.000 and 9999-12-31 23:59:59.999 (GMT). The input format of **TIMESTAMP** is as follows: :: datetime'hh:mi[:ss[.msec]] [am|pm] mm/dd[/yyyy]' datetime'hh:mi[:ss[.msec]] [am|pm] [yyyy-]mm-dd' datetime'mm/dd[/yyyy] hh:mi[:ss[.ff]] [am|pm]' datetime'[yyyy-]mm-dd hh:mi[:ss[.ff]] [am|pm]' * All fields must be entered as integer. * If you year is omitted, the current year is specified by default. If the value (hour, minute/second) is omitted, 12:00:00.000 AM is specified. * You can store the timestamp value of the system in the **DATETIME** type by using the :c:macro:`SYS_DATETIME` (or :c:macro:`SYSDATETIME`, :c:macro:`CURRENT_DATETIME`, :func:`CURRENT_DATETIME`, :func:`NOW`) function. * The :func:`TO_DATETIME` function is used to convert a string type into a **DATETIME** type. * 0 is not allowed to input in year, month, and day; however, '0000-00-00 00:00:00', which every digit consisting of year, month, day, hour, minute, and second is 0, is allowed as an exception. * **DEFAULT** constraint can be specified in a column of this type. :: DATETIME'10/31' is outputted as '12:00:00.000 AM 10/31/2011' (if the value for year/time is omitted, a default value is outputted). DATETIME'10/31/2008' is outputted as '12:00:00.000 AM 10/31/2008'. DATETIME'13:15:45 10/31/2008' is outputted as '01:15:45.000 PM 10/31/2008'. DATETIME'01:15:45 PM 2008-10-31' is outputted as '01:15:45.000 PM 10/31/2008'. DATETIME'13:15:45 2008-10-31' is outputted as '01:15:45.000 PM 10/31/2008'. DATETIME'10/31/2008 01:15:45 PM' is outputted as '01:15:45.000 PM 10/31/2008'. DATETIME'10/31/2008 13:15:45' is outputted as '01:15:45.000 PM 10/31/2008'. DATETIME'2008-10-31 01:15:45 PM' is outputted as '01:15:45.000 PM 10/31/2008'. DATETIME'2008-10-31 13:15:45' is outputted as '01:15:45.000 PM 10/31/2008'. DATETIME'2099-10-31 01:15:45 PM' is outputted as '01:15:45.000 PM 10/31/2099'. .. _cast-string-to-datetime: CASTing a String to Date/Time Type ---------------------------------- .. _cast-to-datetime-recommend: Recommended Format for Strings in Date/Time Type ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ When you casting a string to Date/Time type by using the :func:`CAST` function, it is recommended to write the string in the following format: Note that date/time string formats used in the :func:`CAST` function are not affected by locale which is specified by creating DB. Also, in :func:`TO_DATE`, :func:`TO_TIME`, :func:`TO_DATETIME`, :func:`TO_TIMESTAMP` functions, when date/time format is omitted, write the date/time string in the following format. * **DATE** Type :: YYYY-MM-DD MM/DD/YYYY * **TIME** Type :: HH:MI:SS [AM|PM] * **DATETIME** Type :: YYYY-MM-DD HH:MI:SS[.msec] [AM|PM] HH:MI:SS[.msec] [AM|PM] YYYY-MM-DD MM/DD/YYYY HH:MI:SS[.msec] [AM|PM] HH:MI:SS[.msec] [AM|PM] MM/DD/YYYY * **TIMESTAMP** Type :: YYYY-MM-DD HH:MI:SS [AM|PM] HH:MI:SS [AM|PM] YYYY-MM-DD MM/DD/YYYY HH:MI:SS [AM|PM] HH:MI:SS [AM|PM] MM/DD/YYYY Available Format for Strings in Date/Time Type ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :func:`CAST` function allows the below format for date/time strings. **Available DATE String Format** :: [year sep] month sep day * 2011-04-20: April 20th, 2011 * 04-20: April 20th of this year If a separator (*sep*) is a slash (/), strings are recognized in the following order: :: month/day[/year] * 04/20/2011: April 20th, 2011 * 04/20: April 20th of this year If you do not use a separator (*sep*), strings are recognized in the following format. It is allowed to use 1, 2, and 4 digits for years and 1 and 2 digits for months. For day, you should always enter 2 digits. :: YYYYMMDD YYMMDD YMMDD MMDD MDD * 20110420: April 20th, 2011 * 110420: April 20th, 2011 * 420: April 20th of this year **Available TIME String Format** :: [hour]:min[:[sec]][.[msec]] [am|pm] * 09:10:15.359 am: 9 hours 10 minutes 15 seconds AM (0.359 seconds will be truncated) * 09:10:15: 9 hours 10 minutes 15 seconds AM * 09:10: 9 hours 10 minutes AM * \:10: 12 hours 10 minutes AM :: [[[[[[Y]Y]Y]Y]M]MDD]HHMISS[.[msec]] [am|pm] * 20110420091015.359 am: 9 hours 10 minutes 15 seconds AM * 0420091015: 9 hours 10 minutes 15 seconds AM :: [H]HMMSS[.[msec]] [am|pm] * 091015.359 am: 9 hours 10 minutes 15 seconds AM * 91015: 9 hours 10 minutes 15 seconds AM :: [M]MSS[.[msec]] [am|pm] * 1015.359 am: 12 hours 10 minutes 15 seconds AM * 1015: 12 hours 10 minutes 15 seconds AM :: [S]S[.[msec]] [am|pm] * 15.359 am: 12 hours 15 seconds AM * 15: 12 hours 15 seconds AM .. note:: : The [H]H format was allowed in CUBRID 2008 R3.1 and the earlier versions. That is, the string '10' was converted to **TIME** '10:00:00' in the R3.1 and the earlier versions, and will be converted to **TIME** '00:00:10' in version R4.0 and later. **Available DATETIME String Format** :: [year sep] month sep day [sep] [sep] hour [sep min[sep sec[.[msec]]]] * 04-20 09: April 20th of this year, 9 hours AM :: month/day[/year] [sep] hour [sep min [sep sec[.[msec]]]] * 04/20 09: April 20th of this year, 9 hours AM :: year sep month sep day sep hour [sep min[sep sec[.[msec]]]] * 2011-04-20 09: April 20th, 2011, 9 hours AM :: month/day/year sep hour [sep min[sep sec [.[msec]]]] * 04/20/2011 09: April 20th, 2011, 9 hours AM :: YYMMDDH (It is allowed only when time format is one digit.) * 1104209: April 20th, 2011, 9 hours AM :: YYMMDDHHMI[SS[.msec]] * 1104200910.359: April 20th, 2011, 9 hours 10 minutes AM (0.359 seconds will be truncated) * 110420091000.359: April 20th, 2011, 9 hours 10 minutes 0.359 seconds AM :: YYYYMMDDHHMISS[.msec] * 201104200910.359: November 4th, 2020 8 hours 9 minutes 10.359 seconds PM * 20110420091000.359: April 20th, 2011, 9 hours 10 minutes 0.359 seconds AM **Available Time-Date String Format** :: [hour]:min[:sec[.msec]] [am|pm] [year-]month-day * 09:10:15.359 am 2011-04-20: April 20th, 2011, 9 hours 10 minutes 15.359 seconds AM * \:10 04-20: April 20th of this year, 12 hours 10 minutes AM :: [hour]:min[:sec[.msec]] [am|pm] month/day[/[year]] * 09:10:15.359 am 04/20/2011: April 20th, 2011, 9 hours 10 minutes 15.359 seconds AM * \:10 04/20: April 20th of this year, 12 hours 10 minutes AM :: hour[:min[:sec[.[msec]]]] [am|pm] [year-]month-day * 09:10:15.359 am 04-20: April 20th of this year, 9 hours 10 minutes 15.359 seconds AM * 09 04-20: April 20th of this year, 9 hours AM :: hour[:min[:sec[.[msec]]]] [am|pm] month/day[/[year]] * 09:10:15.359 am 04/20: April 20th of this year, 9 hours 10 minutes, 15.359 seconds AM * 09 04/20: April 20th of this year, 9 hours AM **Rules** *msec* is a series of numbers representing milliseconds. The numbers after the fourth digit will be ignored. The rules for the separator string are as follows: * You should always use one colon (:) as a separator for the **TIME** separator. * **DATE** and **DATETIME** strings can be represented as a series of numbers without the separator sep), and non-alphanumeric characters can be used as separators. The **DATETIME** string can be divided into Time and Date with a space. * Separators should be identical in the input string. * For the Time-Date string, you can only use colon (:) for a Time separator and hyphen (-) or slash (/) for a Date separator. If you use a hyphen when entering date, you should enter like yyyy-mm-dd; in case of a slash, enter like mm/dd/yyyy. The following rules will be applied in the part of date. * You can omit the year as long as the syntax allows it. * If you enter the year as two digits, it represents the range from 1970-2069. That is, if YY<70, it is treated as 2000+YY; if YY>=70, it is treated as 1900+YY. If you enter one, three or four digit numbers for the year, the numbers will be represented as they are. * A space before and after a string and the string next to the space are ignored. The am/pm identifier for the **DATETIME** and **TIME** strings can be recognized as part of TIME value, but are not recognized as the am/pm identifier if non-space characters are added to it. The **TIMESTAMP** type of CUBRID consists of **DATE** type and **TIME** type, and **DATETIME** type consists of **DATE** type and **TIME** type with milliseconds being added to them. Input strings can include Date (**DATE** string), Time (**TIME** string), or both (**DATETIME** strings). You can convert a string including a specific type of data to another type, and the following rules will be applied for the conversion. * If you convert the **DATE** string to the **DATETIME** type, the time value will be '00:00:00.' * If you convert the **TIME** string to the **DATETIME** type, colon (:) is recognized as a date separator, so that the **TIME** string can be recognized as a date string and the time value will be '00:00:00.' * If you convert the **DATETIME** string to the **DATE** type, the time part will be ignored from the result but the time input value format should be valid. * You can covert the **DATETIME** string to the **TIME** type, and you must follow the following rules. * The date and time in the string must be divided by at least one blank. * The date part of the result value is ignored but the date input value format should be valid. * The year in the date part must be over 4 digits (available to start with 0) or the time part must include hours and minutes ([H]H:[M]M) at least. Otherwise the date pate are recognized as the TIME type of the [MM]SS format, and the following string will be ignored. * If the one of the units (year, month, date, hour, minute and second) of the **DATETIME** string is greater than 999999, it is not recognized as a number, so the string including the corresponding unit will be ignored. For example, in '2009-10-21 20:9943:10', an error occurs because the value in minutes is out of the range. However, if '2009-10-21 20:1000123:10' is entered,'2009' is recognized as the **TIME** type of the MMSS format, so that **TIME** '00:20:09' will be returned. * If you convert the time-date sting to the **TIME** type, the date part of the string is ignored but the date part format must be valid. * All input strings including the time part allow *[.msec]* on conversion, but only the **DATETIME** type can be maintained. If you convert this to a type such as **DATE**, **TIMESTAMP** or **TIME**, the *msec* value is discarded. * All conversions in the **DATETIME**, **TIME** string allow English locale following after time value or am/pm specifier written in the current locale of a server. .. code-block:: sql SELECT CAST('420' AS DATE); :: cast('420' as date) ====================== 04/20/2012 .. code-block:: sql SELECT CAST('91015' AS TIME); :: cast('91015' as time) ======================== 09:10:15 AM .. code-block:: sql SELECT CAST('110420091035.359' AS DATETIME); :: cast('110420091035.359' as datetime) ======================================= 09:10:35.359 AM 04/20/2011 .. code-block:: sql SELECT CAST('110420091035.359' AS TIMESTAMP); :: cast('110420091035.359' as timestamp) ======================================== 09:10:35 AM 04/20/2011 Bit Strings =========== A bit string is a sequence of bits (1's and 0's). Images (bitmaps) displayed on the computer screen can be stored as bit strings. CUBRID supports the following two types of bit strings: * Fixed-length bit string (**BIT**) * Variable-length bit string (**BIT VARYING**) A bit string can be used as a method argument or an attribute type. Bit string literals are represented in a binary or hexadecimal format. For binary format, append the string consisting of 0's and 1's to the letter **B** or append a value to the **0b** as shown example below. :: B'1010' 0b1010 For hexadecimal format, append the string consisting of the numbers 0 - 9 and the letters A - F to the uppercase letter **X** or append a value to the **0x** . The following is hexadecimal representation of the same number that was represented above in binary format. :: X'a' 0xA The letters used in hexadecimal numbers are not case-sensitive. That is, X'4f' and X'4F' are considered as the same value. **Length** If a bit string is used in table attributes or method declarations, you must specify the maximum length. The maximum length for a bit string is 1,073,741,823 bits. **Bit String Coercion** Automatic coercion is performed between a fixed-length and a variable-length bit string for comparison. For explicit coercion, use the :func:`CAST` operator. BIT(n) ------ Fixed-length binary or hexadecimal bit strings are represented as **BIT** (*n*), where *n* is the maximum number of bits. If *n* is not specified, the length is set to 1. If *n* is not specified, the length is set to 1. The bit string is filled with 8-bit unit from the left side. For example, the value of B'1' is the same as the value of B'10000000'. Therefore, it is recommended to declare a length by 8-bit unit, and input a value by 8-bit unit. .. note:: If you input B'1' to the BIT(4) column, it is printed out X'8' on CSQL, X'80' on CUBRID Manager, Query Browser or application program. * *n* must be a number greater than 0. * If the length of the string exceeds *n*, it is truncated and filled with 0s. * If a bit string smaller than *n* is stored, the remainder of the string is filled with 0s. * **DEFAULT** constraint can be specified in a column of this type. .. code-block:: sql CREATE TABLE bit_tbl(a1 BIT, a2 BIT(1), a3 BIT(8), a4 BIT VARYING); INSERT INTO bit_tbl VALUES (B'1', B'1', B'1', B'1'); INSERT INTO bit_tbl VALUES (0b1, 0b1, 0b1, 0b1); INSERT INTO bit_tbl(a3,a4) VALUES (B'1010', B'1010'); INSERT INTO bit_tbl(a3,a4) VALUES (0xaa, 0xaa); SELECT * FROM bit_tbl; :: a1 a2 a3 a4 ========================================================================= X'8' X'8' X'80' X'8' X'8' X'8' X'80' X'8' NULL NULL X'a0' X'a' NULL NULL X'aa' X'aa' BIT VARYING(n) -------------- A variable-length bit string is represented as **BIT VARYING** (*n*), where *n* is the maximum number of bits. If *n* is not specified, the length is set to 1,073,741,823 (maximum value). *n* is the maximum number of bits. If *n* is not specified, the maximum length is set to 1,073,741,823. The bit string is filled with 8-bit values from the left side. For example, the value of B'1' is the same as the value of B'10000000'. Therefore, it is recommended to declare a length by 8-bit unit, and input a value by 8-bit unit. .. note:: If you input B'1' to the BIT VARYING(4) column, it is printed out X'8' on CSQL, X'80' on CUBRID Manager, Query Browser or application program. * If the length of the string exceeds *n*, it is truncated and filled with 0s. * The remainder of the string is not filled with 0s even if a bit string smaller than *n* is stored. * *n* must be a number greater than 0. * **DEFAULT** constraint can be specified in a column of this type. .. code-block:: sql CREATE TABLE bitvar_tbl(a1 BIT VARYING, a2 BIT VARYING(8)); INSERT INTO bitvar_tbl VALUES (B'1', B'1'); INSERT INTO bitvar_tbl VALUES (0b1010, 0b1010); INSERT INTO bitvar_tbl VALUES (0xaa, 0xaa); INSERT INTO bitvar_tbl(a1) VALUES (0xaaa); SELECT * FROM bitvar_tbl; :: a1 a2 ============================================ X'8' X'8' X'a' X'a' X'aa' X'aa' X'aaa' NULL .. code-block:: sql INSERT INTO bitvar_tbl(a2) VALUES (0xaaa); :: ERROR: Data overflow coercing X'aaa' to type bit varying. .. _char-data-type: Character Strings ================= CUBRID supports the following two types of character strings: * Fixed-length character string: **CHAR** (*n*) * Variable-length character string: **VARCHAR** (*n*) .. note:: From CUBRID 9.0 version, **NCHAR** and **NCHAR VARYING** is no more supported. Instead, please use **CHAR** and **VARCHAR**. The following are the rules that are applied when using the character string types. * In general, single quotations are used to enclose character string. Double quotations may be used as well depending on the value of **ansi_quotes**, which is a parameter related to SQL statement. If the **ansi_quotes** value is set to **no**, character string enclosed by double quotations is handled as character string, not as an identifier. The default value is **yes**. For details, :ref:`stmt-type-parameters`. * If there are characters that can be considered to be blank (e.g. spaces, tabs, or line breaks) between two character strings, these two character strings are treated as one according to ANSI standard. For example, the following example shows that a line break exists between two character strings. :: 'abc' 'def' The above two strings and the below string are considered identical. :: 'abcdef' * If you want to include a single quote as part of a character string, enter two single quotes in a row. For example, the character string on the left is stored as the one on the right. :: '''abcde''fghij' 'abcde'fghij * The maximum size of the token for all the character strings is 16 KB. * To enter the language of a specific country, we recommend that you to specify the locale when creating DB, then you can change locale by the introducer **CHARSET** (or **COLLATE** modifier). For more information, see :doc:`/sql/i18n`. **Length** Specify the number of a character string. When the length of the character string entered exceeds the length specified, the excess characters are truncated. For a fixed-length character string type such as **CHAR**, the length is fixed at the declared length. Therefore, the right part (trailing space) of the character string is filled with space characters when the string is stored. For a variable-length character string type such as **VARCHAR**, only the entered character string is stored, and the space is not filled with space characters. The maximum length of a **CHAR** or **VARCHAR** type to be specified is 1,073,741,823. Also, the maximum length that can be input or output in a CSQL statement is 8,192 KB. .. note:: In the CUBRID version less than 9.0, the length of **CHAR** or **VARCHAR** was not the number of characters, but the byte size. **Character Set, charset** A character set (charset) is a set in which rules are defined that relate to what kind of codes can be used for encoding when specified characters (symbols) are stored in the computer. The character used by CUBRID can be configured as the **CUBRID_CHARSET** environment variable. For details, see :doc:`/sql/i18n`. **Collating Character Sets** A collation is a set of rules used for comparing characters to search or sort values stored in the database when a certain character set is specified. For details, see :doc:`/sql/i18n`. **Character String Coercion** Automatic coercion takes place between a fixed-length and a variable-length character string for the comparison of two characters, applicable only to characters that belong to the same character set. For example, when you extract a column value from a **CHAR** (5) data type and insert it into a column with a **CHAR** (10) data type, the data type is automatically coerced to **CHAR** (10). If you want to coerce a character string explicitly, use the **CAST** operator (See :func:`CAST`). CHAR(n) ------- A fixed-length character string is represented as **CHAR** *(n)*, in which *n* represents the number of characters. If *n* is not specified, the value is specified as 1, default value. When the length of a character string exceeds *n*, they are truncated. When character string which is shorter than *n* is stored, whitespace characters are used to fill up the trailing space. **CHAR** (*n*) and **CHARACTER** (*n*) are used interchangeably. .. note:: In the earlier versions of CUBRID 9.0, *n* represents bite length, not the number of characters. * *n* is an integer between 1 and 1,073,741,823 (1G). * Empty quotes (' ') are used to represent a blank string. In this case, the return value of the **LENGTH** function is not 0, but is the fixed length defined in **CHAR** (*n*). That is, if you enter a blank string into a column with **CHAR** (10), the **LENGTH** is 10; if you enter a blank value into a **CHAR** with no length specified, the **LENGTH** is the default value 1. * Space characters used as filling characters are considered to be smaller than any other characters, including special characters. :: If you specify 'pacesetter' as CHAR(12), 'pacesetter ' is stored (a 10-character string plus two whitespace characters). If you specify 'pacesetter ' as CHAR(10), 'pacesetter' is stored (a 10-character string; two whitespace characters are truncated). If you specify 'pacesetter' as CHAR(4), 'pace' is stored (truncated as the length of the character string is greater than 4). If you specify 'p ' as CHAR, 'p' is stored (if n is not specified, the length is set to the default value 1). * **DEFAULT** constraint can be specified in a column of this type. VARCHAR(n)/CHAR VARYING(n) -------------------------- Variable-length character strings are represented as **VARCHAR** (*n*), where *n* represents the number of characters. If *n* is not specified, the value is specified as 1,073,741,823, the maximum length. When the length of a character string exceeds *n*, they are truncated. When character string which is shorter than *n* is stored, whitespace characters are used to fill up the trailing space for **VARCHAR** (*n*), the length of string used are stored. **VARCHAR** (*n*), **CHARACTER, VARYING** (*n*), and **CHAR VARYING** (*n*) are used interchangeably. .. note:: In the earlier versions of CUBRID 9.0, *n* represents bite length, not the number of characters. * **STRING** is the same as the **VARCHAR** (maximum length). * *n* is an integer between 1 and 1,073,741,823 (1G). * Empty quotes (' ') are used to represent a blank string. In this case, the return value of the **LENGTH** function is not 0. :: If you specify 'pacesetter' as CHAR(4), 'pace' is stored (truncated as the length of the character string is greater than 4). If you specify 'pacesetter' as VARCHAR(12), 'pacesetter' is stored (a 10-character string). If you specify 'pacesetter ' as VARCHAR(12), 'pacesetter ' is stored (a 10-character string plus two whitespace characters). If you specify 'pacesetter ' as VARCHAR(10), 'pacesetter' is stored (a 10-character string; two whitespace characters are truncated). If you specify 'p ' as VARCHAR, 'p' is stored (if n is not specified, the default value 1,073,741,823 is used, and the trailing space is not filled with whitespace characters). * **DEFAULT** constraint can be specified in a column of this type. STRING ------ **STRING** is a variable-length character string data type. **STRING** is the same as the VARCHAR with the length specified as the maximum value. That is, **STRING** and **VARCHAR** (1,073,741,823) have the same value. .. _escape-characters: Escape Special Characters ------------------------- CUBRID supports two kinds of methods to escape special characters. One is using quotes and the other is using backslash (\\). * Escape with Quotes If you set **no** for the system parameter **ansi_quotes** in the **cubrid.conf** file, you can use both double quotes (") and singe quotes (') to wrap strings. The default value for the **ansi_quotes** parameter is **yes**, and you can use only single quotes to wrap the string. * You should use two single quotes ('') for the single quotes included in the strings wrapped in single quotes. * You should use two double quotes ("") for the double quotes included in the strings wrapped in double quotes. (when **ansi_quotes** = **no**) * You don't need to escape the single quotes included in the string wrapped in double quotes. (when **ansi_quotes** = **no**) * You don't need to escape the double quotes included in the string wrapped in single quotes. * Escape with Backslash You can use escape using backslash (\\) only if you set no for the system parameter **no_backslash_escapes** in the **cubrid.conf** file. The default value for the **no_backslash_escapes** parameter is **yes**. If the value of **no_backslash_escapes** is **no**, the following are the special characters. * \\' : Single quotes (') * \\" : Double quotes (") * \\n : Newline, linefeed character * \\r : Carriage return character * \\t : Tab character * \\\\ : Backslash * \\% : Percent sign (%). For details, see the following description. * \\_ : Underbar (\_). For details, see the following description. For all other escapes, the backslash will be ignored. For example, "\x" is the same as entering only "x". **\\%** and **\\_** are used in the pattern matching syntax such as **LIKE** to search percent signs and underbars and are used as a wildcard character if there is no backslash. Outside of the pattern matching syntax, "\\%"and "\\_" are recognized as normal strings not wildcard characters. For details, see :ref:`like-expr`. The following is the result of executing Escape if a value for the system parameter **ansi_quotes** in the **cubrid.conf** file is yes(default), and a value for **no_backslash_escapes** is no. .. code-block:: sql -- ansi_quotes=yes, no_backslash_escapes=no SELECT STRCMP('single quotes test('')', 'single quotes test(\')'); If you run the above query, backslash is regarded as an escape character. Therefore, above two strings are the same. :: strcmp('single quotes test('')', 'single quotes test('')') ============================================================= 0 .. code-block:: sql SELECT STRCMP('\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z', 'a\bcdefghijklm\nopq\rs\tuvwxyz'); If you run the above query, backslash is regarded as an escape character. Therefore, above two strings are the same. :: strcmp('abcdefghijklm s uvwxyz', 'abcdefghijklm s uvwxyz') ===================================================================== 0 .. code-block:: sql SELECT LENGTH('\\'); If you run the above query, backslash is regarded as an escape character. Therefore, the length of above string is 1. :: char_length('\') =================== 1 The following is the result of executing Escape if a value for the system parameter **ansi_quotes** in the **cubrid.conf** file is yes(default), and a value for **no_backslash_escapes** is yes(default). Backslash character is regarded as a general character. .. code-block:: sql -- ansi_quotes=yes, no_backslash_escapes=yes SELECT STRCMP('single quotes test('')', 'single quotes test(\')'); If you run the above query, the quotation mark is regarded as opened, so the below error occurs. If you input this query on the CSQL interpreter's console, it waits the next quotation mark's input. :: ERROR: syntax error, unexpected UNTERMINATED_STRING, expecting SELECT or VALUE or VALUES or '(' .. code-block:: sql SELECT STRCMP('\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z', 'a\bcdefghijklm\nopq\rs\tuvwxyz'); If you run the above query, backslash is regarded as a general character. Therefore, the result of the comparison between the above two strings shows different. :: strcmp('\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z', 'a\bcdefghijklm\nopq\rs\tuvwxyz') =================================================================================================== -1 .. code-block:: sql SELECT LENGTH('\\'); If you run the above query, backslash is regarded as a general character. Therefore, the length of above string is 2. :: char_length('\\') ==================== 2 The following shows the result of executing Escape about the LIKE clause when **ansi_quotes** is yes and **no_backslash_escapes** is no. .. code-block:: sql -- ansi_quotes=yes, no_backslash_escapes=no CREATE TABLE t1 (a VARCHAR(200)); INSERT INTO t1 VALUES ('aaabbb'), ('aaa%'); SELECT a FROM t1 WHERE a LIKE 'aaa\%' ESCAPE '\\'; :: a ====================== 'aaa%' If you run above query, it returns only one row because '%' character is regarded as a general character. In the string of LIKE clause, backslash is always regarded as a general character. Therefore, if you want to make the '%' character as a general character, not as an pattern matching character, you should specify that '%' is an escape character by using ESCAPE clause. In the ESCAPE clause, backslash is regarded as an escape character. Therefore, we used two backslashes. If you want use other character than a backslash as an escape character, you can write the query as follows. .. code-block:: sql SELECT a FROM t1 WHERE a LIKE 'aaa#%' ESCAPE '#'; ENUM Data Type ============== The **ENUM** type is a data type consisting of an ordered set of distinct constant char literals called enum values. The syntax for creating an enum column is:: : ENUM '(' ')' : ',' CHAR_STRING | CHAR_STRING The following example shows the definition of an **ENUM** column. .. code-block:: sql CREATE TABLE tbl ( color ENUM ('red', 'yellow', 'blue', 'green') ); * **DEFAULT** constraint can be specified in a column of this type. An index is associated to each element of the enum set, according to the order in which elements are defined in the enum type. For example, the *color* column can have one of the following values (assuming that the column allows NULL values) : ========= ============ Value Index Number ========= ============ NULL NULL 'red' 1 'yellow' 2 'blue' 3 'green' 4 ========= ============ The set of values of an **ENUM** type must not exceed 512 elements and each element of the set must be unique. CUBRID allocates two bytes of storage for each **ENUM** type value because it only stores the index of each value. This reduces the storage space needed which may improve performance. Either the enum value or the value index can be used when working with **ENUM** types. For example, to insert values into an **ENUM** type column, users can use either the value or the index of the **ENUM** type: .. code-block:: sql -- insert enum element 'yellow' with index 2 INSERT INTO tbl (color) VALUES ('yellow'); -- insert enum element 'red' with index 1 INSERT INTO tbl (color) VALUES (1); When used in expressions, the **ENUM** type behaves either as a **CHAR** type or as a number, depending on the context in which it is used: .. code-block:: sql -- the first result column has ENUM type, the second has INTEGER type and the third has VARCHAR type SELECT color, color + 0, CONCAT(color, '') FROM tbl; :: color color+0 concat(color, '') ========================================================= 'yellow' 2 'yellow' 'red' 1 'red' When used in type contexts other than **CHAR** or numbers, the enum is coerced to that type using either the index or the enum value. The table below shows which part of an **ENUM** type is used in the coercion: +---------------+-------------------------+ | Type | Enum type (Index/Value) | +===============+=========================+ | SHORT | Index | +---------------+-------------------------+ | INTEGER | Index | +---------------+-------------------------+ | BIGINT | Index | +---------------+-------------------------+ | FLOAT | Index | +---------------+-------------------------+ | DOUBLE | Index | +---------------+-------------------------+ | NUMERIC | Index | +---------------+-------------------------+ | TIME | Value | +---------------+-------------------------+ | DATE | Value | +---------------+-------------------------+ | DATETIME | Value | +---------------+-------------------------+ | TIMESTAMP | Value | +---------------+-------------------------+ | CHAR | Value | +---------------+-------------------------+ | VARCHAR | Value | +---------------+-------------------------+ | BIT | Value | +---------------+-------------------------+ | VARBIT | Value | +---------------+-------------------------+ ENUM Type Comparisons ----------------------- When used in **=** or **IN** predicates of the form ( ), CUBRID tries to convert the constant to the **ENUM** type. If the coercion fails, CUBRID does not return an error but considers the comparison to be false. This is implemented like this in order to allow index scan plans to be generated on these two operators. For all other :doc:`comparison operators`, the **ENUM** type is converted to the type of the other operand. If a comparison is performed on two **ENUM** types, both arguments are converted to **CHAR** type and the comparison follows **CHAR** type rules. Except for **=** and **IN**, predicates on **ENUM** columns cannot be used in index scan plans. To understand these rules, consider the following table: .. code-block:: sql CREATE TABLE tbl ( color ENUM ('red', 'yellow', 'blue', 'green') ); INSERT INTO tbl (color) VALUES (1), (2), (3), (4); The following query will convert the constant 'red' to the enum value 'red' with index 1 .. code-block:: sql SELECT color FROM tbl WHERE color = 'red'; :: color ====================== 'red' .. code-block:: sql SELECT color FROM tbl WHERE color = 1; :: color ====================== 'red' The following queries will not return a conversion error but will not return any results: .. code-block:: sql SELECT color FROM tbl WHERE color = date'2010-01-01'; SELECT color FROM tbl WHERE color = 15; SELECT color FROM tbl WHERE color = 'asdf'; In the following queries the **ENUM** type will be converted to the type of the other operand: .. code-block:: sql -- CHAR comparison using the enum value SELECT color FROM tbl WHERE color < 'pink'; :: color ====================== 'blue' 'green' .. code-block:: sql -- INTEGER comparison using the enum index SELECT color FROM tbl WHERE color > 3; :: color ====================== 'green' .. code-block:: sql -- Conversion error SELECT color FROM tbl WHERE color > date'2012-01-01'; :: ERROR: Cannot coerce value of domain "enum" to domain "date". ENUM Type Ordering ------------------ Values of the **ENUM** type are ordered by value index, not by enum value. When defining a column with **ENUM** type, users also define the ordering of the enum values. .. code-block:: sql SELECT color FROM tbl ORDER BY color ASC; :: color ====================== 'red' 'yellow' 'blue' 'green' To order the values stored in an **ENUM** type column as **CHAR** values, users can cast the enum value to the **CHAR** type: .. code-block:: sql SELECT color FROM tbl ORDER BY CAST (color AS VARCHAR) ASC; :: color ====================== 'blue' 'green' 'red' 'yellow' Notes ----- The **ENUM** type is not a reusable type. If several columns require the same set of values, an **ENUM** type must be defined for each one. When comparing two columns of **ENUM** type, the comparison is performed as if the columns were coerced to **CHAR** type even if the two **ENUM** types define the same set of values. Using the **ALTER ... CHANGE** statement to modify the set of values of an **ENUM** type is only allowed if the value of the system parameter **alter_table_change_type_strict** is set to yes. In this case, CUBRID uses enum value (the char-literal) to convert values to the new domain. If a value is outside of the new **ENUM** type values set, it is automatically mapped to the empty string(''). .. code-block:: sql CREATE TABLE tbl(color ENUM ('red', 'green', 'blue')); INSERT INTO tbl VALUES('red'), ('green'), ('blue'); The following statement will extend the **ENUM** type with the value 'yellow': .. code-block:: sql ALTER TABLE tbl CHANGE color color ENUM ('red', 'green', 'blue', 'yellow'); INSERT into tbl VALUES(4); SELECT color FROM tbl; :: color ====================== 'red' 'green' 'blue' 'yellow' The following statement will change all tuples with value 'green' to value 'red' because the value 'green' cannot be converted the new **ENUM** type: .. code-block:: sql ALTER TABLE tbl CHANGE color color enum ('red', 'yellow', 'blue'); SELECT color FROM tbl; :: color ====================== 'red' '' 'blue' 'yellow' The **ENUM** type is mapped to char-string types in CUBRID drivers. The following example shows how to use the **ENUM** type in a JDBC application: .. code-block:: java Statement stmt = connection.createStatement("SELECT color FROM tbl"); ResultSet rs = stmt.executeQuery(); while(rs.next()) { System.out.println(rs.getString()); } The following example shows how to use the **ENUM** type in a CCI application. .. code-block:: c req_id = cci_prepare (conn, "SELECT color FROM tbl", 0, &err); error = cci_execute (req_id, 0, 0, &err); if (error < CCI_ER_NO_ERROR) { /* handle error */ } error = cci_cursor (req_id, 1, CCI_CURSOR_CURRENT, &err); if (error < CCI_ER_NO_ERROR) { /* handle error */ } error = cci_fetch (req_id, &err); if (error < CCI_ER_NO_ERROR) { /* handle error */ } cci_get_data (req, idx, CCI_A_TYPE_STR, &data, 1); .. _blob-clob: BLOB/CLOB Data Types ==================== An External **LOB** type is data to process Large Object, such as text or images. When LOB-type data is created and inserted, it will be stored in a file to an external storage, and the location information of the relevant file (**LOB** Locator) will be stored in the CUBRID database. If the **LOB** Locator is deleted from the database, the relevant file that was stored in the external storage will be deleted as well. CUBRID supports the following two types of **LOB** : * Binary Large Object (**BLOB**) * Character Large Object (**CLOB**) .. note:: **Terminologies** * **LOB** (Large Object): Large-sized objects such as binaries or text. * **FBO** (File Based Object): An object that stores data of the database in an external file. * **External LOB**\ : An object better known as FBO, which stores **LOB** data in a file into an external DB. It is supported by CUBRID. Internal **LOB** is an object that stores **LOB** data inside the DB. * **External Storage**\ : An external storage to store LOB (example : POSIX file system). * **LOB Locator**\ : The path name of a file stored in external storage. * **LOB Data**\ : Details of a file in a specific location of LOB Locator. When storing LOB data in external storage, the following naming convention will be applied: :: {table_name}_{unique_name} * *table_name* : It is inserted as a prefix and able to store the **LOB** data of many tables in one external storage. * *unique_name* : The random name created by the DB server. **LOB** data is stored in the local file system of the DB server. LOB data is stored in the path specified in the **-lob-base-path option** value of **cubrid createdb**; if this value is omitted, the data will be stored in the [db-vol path]/lob path where the database volume will be created. For more details, see :ref:`creating-database` and :ref:`lob-storage`. If a user change any **LOB** file without using CUBRID API or CUBRID tools, data consistency is not guaranteed. If a **LOB** data file path that was registered to the database directory file(**databases.txt**) is deleted, please note that database server (**cub_server**) and standalone utilities will not correctly work. BLOB ---- A type that stores binary data outside the database. The maximum length of **BLOB** data is the maximum file size creatable in an external storage. In SQL statements, the **BLOB** type expresses the input and output value in a bit string. That is, it is compatible with the **BIT** (n) and **BIT VARYING** (n) types, and only an explicit type change is allowed. If data lengths differ from one another, the maximum length is truncated to fit the smaller one. When converting the **BLOB** type value to a binary value, the length of the converted data cannot exceed 1GB. When converting binary data to the **BLOB** type, the size of the converted data cannot exceed the maximum file size provided by the **BLOB** storage. CLOB ---- A type that stores character string data outside the database. The maximum length of **CLOB** data is the maximum file size creatable in an external storage. In SQL statements, the CLOB type expresses the input and output value in a character string. That is, it is compatible with the **CHAR** (n), **VARCHAR** (n) types. However, only an explicit type change is allowed, and if data lengths are different from one another, the maximum length is truncated to fit to the smaller one. When converting the **CLOB** type value to a character string, the length of the converted data cannot exceed 1 GB. When converting a character string to the **CLOB** type, the size of the converted data cannot exceed the maximum file size provided by the **CLOB** storage. To Create and alter LOB ----------------------- **BLOB** / **CLOB** type columns can be created/added/deleted by using a **CREATE TABLE** statement or an **ALTER TABLE** statement. * You cannot create the index file for a **LOB** type column. * You cannot define the **PRIMARY KEY**, **FOREIGN KEY**, **UNIQUE**, **NOT NULL** constraints for a **LOB** type column. However, **SHARED** property cannot be defined and **DEFAULT** property can only be defined by the **NULL** value. * **LOB** type column/data cannot be the element of collection type. * If you are deleting a record containing a **LOB** type column, all files located inside a **LOB** column value (Locator) and the external storage will be deleted. When a record containing a LOB type column is deleted in a basic key table, and a record of a foreign key table that refers to the foregoing details is deleted at once, all **LOB** files located in a **LOB** column value (Locator) and the external storage will be deleted. However, if the relevant table is deleted by using a **DROP TABLE** statement, or a **LOB** column is deleted by using an **ALTER TABLE...DROP** statement, only a **LOB** column value (**LOB** Locator) is deleted, and the **LOB** files inside the external storage which a **LOB** column refers to will not be deleted. .. code-block:: sql -- creating a table and CLOB column CREATE TABLE doc_t (doc_id VARCHAR(64) PRIMARY KEY, content CLOB); -- an error occurs when UNIQUE constraint is defined on CLOB column ALTER TABLE doc_t ADD CONSTRAINT content_unique UNIQUE(content); -- an error occurs when creating an index on CLOB column CREATE INDEX i_doc_t_content ON doc_t (content); -- creating a table and BLOB column CREATE TABLE image_t (image_id VARCHAR(36) PRIMARY KEY, doc_id VARCHAR(64) NOT NULL, image BLOB); -- an error occurs when adding a BOLB column with NOT NULL constraint ALTER TABLE image_t ADD COLUMN thumbnail BLOB NOT NULL; -- an error occurs when adding a BLOB column with DEFAULT attribute ALTER TABLE image_t ADD COLUMN thumbnail2 BLOB DEFAULT BIT_TO_BLOB(X'010101'); To store and update LOB ----------------------- In a **BLOB** / **CLOB** type column, each **BLOB** / **CLOB** type value is stored, and if binary or character string data is input, you must explicitly change the types by using each :func:`BIT_TO_BLOB` and :func:`CHAR_TO_CLOB` function. If a value is input in a **LOB** column by using an **INSERT** statement, a file is created in an external storage internally and the relevant data is stored; the relevant file path (Locator) is stored in an actual column value. If a record containing a **LOB** column uses a **DELETE** statement, a file to which the relevant **LOB** column refers will be deleted simultaneously. If a **LOB** column value is changed using an **UPDATE** statement, the column value will be changed following the operation below, according to whether a new value is **NULL** or not. * If a **LOB** type column value is changed to a value that is not **NULL** : If a Locator that refers to an external file is already available in a **LOB** column, the relevant file will be deleted. A new file is created afterwards. After storing a value that is not **NULL**, a Locator for a new file will be stored in a **LOB** column value. * If changing a **LOB** type column value to **NULL** : If a Locator that refers to an external file is already available in a **LOB** column, the relevant file will be deleted. And then **NULL** is stored in a **LOB** column value. .. code-block:: sql -- inserting data after explicit type conversion into CLOB type column INSERT INTO doc_t (doc_id, content) VALUES ('doc-1', CHAR_TO_CLOB('This is a Dog')); INSERT INTO doc_t (doc_id, content) VALUES ('doc-2', CHAR_TO_CLOB('This is a Cat')); -- inserting data after explicit type conversion into BLOB type column INSERT INTO image_t VALUES ('image-0', 'doc-0', BIT_TO_BLOB(X'000001')); INSERT INTO image_t VALUES ('image-1', 'doc-1', BIT_TO_BLOB(X'000010')); INSERT INTO image_t VALUES ('image-2', 'doc-2', BIT_TO_BLOB(X'000100')); -- inserting data from a sub-query result INSERT INTO image_t SELECT 'image-1010', 'doc-1010', image FROM image_t WHERE image_id = 'image-0'; -- updating CLOB column value to NULL UPDATE doc_t SET content = NULL WHERE doc_id = 'doc-1'; -- updating CLOB column value UPDATE doc_t SET content = CHAR_TO_CLOB('This is a Dog') WHERE doc_id = 'doc-1'; -- updating BLOB column value UPDATE image_t SET image = (SELECT image FROM image_t WHERE image_id = 'image-0') WHERE image_id = 'image-1'; -- deleting BLOB column value and its referencing files DELETE FROM image_t WHERE image_id = 'image-1010'; To access LOB ------------- When you get a **LOB** type column, the data stored in a file to which the column refers will be displayed. You can execute an explicit type change by using :func:`CAST` operator, :func:`CLOB_TO_CHAR` and :func:`BLOB_TO_BIT` function. * If the query is executed in CSQL, a column value (Locator) will be displayed, instead of the data stored in a file. To display the data to which a **BLOB** / **CLOB** column refers, it must be changed to strings by :func:`CLOB_TO_CHAR` function. * To use the string process function, the strings need to be converted by :func:`CLOB_TO_CHAR` function. * You cannot specify a **LOB** column in ** GROUP BY** clause and **ORDER BY** clause. * Comparison operators, relational operators, **IN**, **NOT IN** operators cannot be used to compare **LOB** columns. However, **IS NULL** expression can be used to compare whether it is a **LOB** column value (Locator) or **NULL**. This means that **TRUE** will be returned when a column value is **NULL**, and if a column value is **NULL**, there is no file to store **LOB** data. * When a **LOB** column is created, and the file is deleted after data input, a **LOB** column value (Locator) will become a state that is referring to an invalid file. As such, using :func:`CLOB_TO_CHAR`, :func:`BLOB_TO_BIT`, :func:`CLOB_LENGTH` and :func:`BLOB_LENGTH` functions on the columns that have mismatching **LOB** Locator and a **LOB** data file enables them to display **NULL**. .. code-block:: sql -- displaying locator value when selecting CLOB and BLOB column in CSQL interpreter SELECT doc_t.doc_id, content, image FROM doc_t, image_t WHERE doc_t.doc_id = image_t.doc_id; :: doc_id content image ================================================================== 'doc-1' file:/home1/data1/ces_658/doc_t.00001282208855807171_7329 file:/home1/data1/ces_318/image_t.00001282208855809474_7474 'doc-2' file:/home1/data1/ces_180/doc_t.00001282208854194135_5598 file:/home1/data1/ces_519/image_t.00001282208854205773_1215 2 rows selected. .. code-block:: sql -- using string functions after coercing its type by CLOB_TO_CHAR( ) SELECT CLOB_TO_CHAR(content), SUBSTRING(CLOB_TO_CHAR(content), 10) FROM doc_t; :: clob_to_char(content) substring( clob_to_char(content) from 10) ============================================ 'This is a Dog' ' Dog' 'This is a Cat' ' Cat' 2 rows selected. .. code-block:: sql SELECT CLOB_TO_CHAR(content) FROM doc_t WHERE CLOB_TO_CHAR(content) LIKE '%Dog%'; :: clob_to_char(content) ====================== 'This is a Dog' .. code-block:: sql SELECT CLOB_TO_CHAR(content) FROM doc_t ORDER BY CLOB_TO_CHAR(content); :: clob_to_char(content) ====================== 'This is a Cat' 'This is a Dog' .. code-block:: sql SELECT * FROM doc_t WHERE content LIKE 'This%'; :: doc_id content ============================================ 'doc-1' file:/home1/data1/ces_004/doc_t.00001366272829040346_0773 'doc-2' file:/home1/data1/ces_256/doc_t.00001366272815153996_1229 .. code-block:: sql -- an error occurs when LOB column specified in ORDER BY/GROUP BY clauses SELECT * FROM doc_t ORDER BY content; :: ERROR: doc_t.content can not be an ORDER BY column Functions and Operators for LOB ------------------------------- You can explicitly cast bit/string type to **BLOB**/**CLOB** type and **BLOB**/**CLOB** type to bit/string type with :func:`CAST` operator. For more details, see :func:`CAST` operator. :: CAST ( AS { BLOB | CLOB }) CAST ( AS { BLOB | CLOB }) These are the functions for BLOB/CLOB types. For more details, refer :doc:`/sql/function/lob_fn`. * :func:`CLOB_TO_CHAR` * :func:`BLOB_TO_BIT` * :func:`CHAR_TO_CLOB` * :func:`BIT_TO_BLOB` * :func:`CHAR_TO_BLOB` * :func:`CLOB_FROM_FILE` * :func:`BLOB_FROM_FILE` * :func:`CLOB_LENGTH` * :func:`BLOB_LENGTH` .. note:: " <*blob_or_clob_column* **IS NULL** ": using **IS NULL** condition, it compares the value of **LOB** column(Locator) if it's **NULL** or not. If it's **NULL**, this condition returns **TRUE**. .. _lob-storage: To create and manage LOB storage -------------------------------- By default, the **LOB** data file is stored in the /lob directory where database volume is created. However, if the lob base path is specified with :option:`createdb -B` option when creating the database, **LOB** data files will be stored in the directory designated. However, if the specified directory does not exist, CUBRID tries to create the directory and display an error message when it fails to create it. For more details, see :option:`createdb -B` option. :: # image_db volume is created in the current work directory, and a LOB data file will be stored. % cubrid createdb image_db en_US # LOB data file is stored in the "/home1/data1" path within a local file system. % cubrid createdb --lob-base-path="file:/home1/data1" image_db en_US You can identify a directory where a LOB file will be stored by executing the cubrid spacedb utility. :: % cubrid spacedb image_db Space description for database 'image_db' with pagesize 16.0K. (log pagesize: 16.0K) Volid Purpose total_size free_size Vol Name 0 GENERIC 512.0M 510.1M /home1/data1/image_db Space description for temporary volumes for database 'image_db' with pagesize 16.0K. Volid Purpose total_size free_size Vol Name LOB space description file:/home1/data1 To expand or change the **lob-base-path** of the database, change its **lob-base-path** of **databases.txt** file. Restart the database server to apply the changes made to **databases.txt**. However, even if you change the **lob-base-path** of **databases.txt**, access to the **LOB** data stored in a previous storage is possible. :: # You can change to a new directory from the lob-base-path of databases.txt file. % cat $CUBRID_DATABASES/databases.txt #db-name vol-path db-host log-path lob-base-path image_db /home1/data1 localhost /home1/data1 file:/home1/data2 Backup/recovery for data files of **LOB** type columns are not supported, while those for meta data(Locator) are supported. If you are copying a database by using :program:`copydb` utility, you must configure the **databases.txt** additionally, as the **LOB** file directory path will not be copied if the related option is not specified. For more details, see the :option:`copydb -B` and :option:`copydb --copy-lob-path` options. Transaction and Recovery ------------------------ Commit/Rollback for **LOB** data changes are supported. That is, it ensures the validation of mapping between **LOB** Locator and actual **LOB** data within transactions, and it supports recovery during DB errors. This means that an error will be displayed in case of mapping errors between **LOB** Locator and **LOB** data due to the rollback of the relevant transactions, as the database is terminated during transactions. See the example below. .. code-block:: sql -- csql> ;AUTOCOMMIT OFF CREATE TABLE doc_t (doc_id VARCHAR(64) PRIMARY KEY, content CLOB); INSERT INTO doc_t VALUES ('doc-10', CHAR_TO_CLOB('This is content')); COMMIT; UPDATE doc_t SET content = CHAR_TO_CLOB('This is content 2') WHERE doc_id = 'doc-10'; ROLLBACK; SELECT doc_id, CLOB_TO_CHAR(content) FROM doc_t WHERE doc_id = 'doc-10'; :: doc_id content ========================================================= 'doc-10' 'This is content' .. code-block:: sql -- csql> ;AUTOCOMMIT OFF INSERT INTO doc_t VALUES ('doc-11', CHAR_TO_CLOB ('This is content')); COMMIT; UPDATE doc_t SET content = CHAR_TO_CLOB('This is content 3') WHERE doc_id = 'doc-11'; -- system crash occurred and then restart server SELECT doc_id, CLOB_TO_CHAR(content) FROM doc_t WHERE doc_id = 'doc-11'; :: -- Error : LOB Locator references to the previous LOB data because only LOB Locator is rollbacked. .. note:: * When selecting **LOB** data in an application through a driver such as JDBC, the driver can get **ResultSet** from DB server and fetch the record while changing the cursor location on **Resultset**. That is, only Locator, the meta data of a **LOB** column, is stored at the time when **ResultSet** is imported, and **LOB** data that is referred by a File Locator will be fetched from the file Locator at the time when a record is fetched. Therefore, if **LOB** data is updated between two different points of time, there could be an error, as the mapping of **LOB** Locator and actual **LOB** data will be invalid. * Since backup/recovery is supported only for meta data (Locator) of the **LOB** type columns, an error is likely to occur, as the mapping of **LOB** Locator and LOB data is invalid if recovery is performed based on a specific point of time. * TO execute **INSERT** the **LOB** data into other device, LOB data referred by the meta data (Locator) of a **LOB** column must be read. * In a CUBRID HA environment, the meta data (Locator) of a **LOB** column is replicated and data of a **LOB** type is not replicated. Therefore, if storage of a **LOB** type is located on the local machine, no tasks on the columns in a slave node or a master node after failover are allowed. .. warning:: Up to CUBRID 2008 R3.0, Large Objects are processed by using **glo** (Generalized Large Object) classes. However, the **glo** classes has been deprecated since the CUBRID 2008 R3.1. Instead of it, **LOB** / **CLOB** data type is supported. Therefore, both DB schema and application must be modified when upgrading CUBRID in an environment using the previous version of **glo** classes. .. _collection-data-type: Collection Types ================ Allowing multiple data values to be stored in a single attribute is an extended feature of relational database. Each element of a collection is possible to have different data type each other except View. Rest types except BLOB and CLOB can be an element of collection types. +--------------+---------------------------------------+------------------------------------+----------------------------+----------------------------+ | Type | Description | Definition | Input Data | Stored Data | +==============+=======================================+====================================+============================+============================+ | **SET** | A union which does not allow | col_name SET VARCHAR(20) or | {'c','c','c','b','b','a'} | {'a','b','c'} | | | duplicates | col_name SET (VARCHAR(20)) | | | +--------------+---------------------------------------+------------------------------------+----------------------------+----------------------------+ | **MULTISET** | A union which allows | col_name MULTISET VARCHAR(20) or | {'c','c','c','b','b','a'} | {'a','b','b','c','c','c'} | | | duplicates | col_name MULTISET (VARCHAR(20)) | | | +--------------+---------------------------------------+------------------------------------+----------------------------+----------------------------+ | **LIST** or | A union which allows duplicates | col_name LIST VARCHAR(20) or | {'c','c','c','b','b','a'} | {'c','c','c','b','b','a'} | | **SEQUENCE** | and stores data in the order of input | col_name LIST (VARCHAR(20)) | | | +--------------+---------------------------------------+------------------------------------+----------------------------+----------------------------+ As you see the table above, the value specified as a collection type can be inputted with curly braces ('{', '}') each value is separated with a comma (,). If the specified collection types are identical, the collection types can be cast explicitly by using the **CAST** operator. The following table shows the collection types that allow explicit coercions. +--------------+-----+----------+------+ | FROM \\ TO | SET | MULTISET | LIST | +==============+=====+==========+======+ | **SET** | \- | Yes | Yes | +--------------+-----+----------+------+ | **MULTISET** | Yes | \- | No | +--------------+-----+----------+------+ | **LIST** | Yes | Yes | \- | +--------------+-----+----------+------+ Collection Types do not support collations. Therefore, Below query returns error. .. code-block:: sql CREATE TABLE tbl (str SET (string) COLLATE utf8_en_ci); :: Syntax error: unexpected 'COLLATE', expecting ',' or ')' SET --- **SET** is a collection type in which each element has different values. Elements of a **SET** are allowed to have only one data type. It can have records of other tables. .. code-block:: sql CREATE TABLE set_tbl (col_1 SET (CHAR(1))); INSERT INTO set_tbl VALUES ({'c','c','c','b','b','a'}); INSERT INTO set_tbl VALUES ({NULL}); INSERT INTO set_tbl VALUES ({''}); SELECT * FROM set_tbl; :: col_1 ====================== {'a', 'b', 'c'} {NULL} {' '} .. code-block:: sql SELECT CAST (col_1 AS MULTISET), CAST (col_1 AS LIST) FROM set_tbl; :: cast(col_1 as multiset) cast(col_1 as sequence) ============================================ {'a', 'b', 'c'} {'a', 'b', 'c'} {NULL} {NULL} {' '} {' '} .. code-block:: sql INSERT INTO set_tbl VALUES (''); :: ERROR: Casting '' to type set is not supported. MULTISET -------- **MULTISET** is a collection type in which duplicated elements are allowed. Elements of a **MULTISET** are allowed to have only one data type. It can have records of other tables. .. code-block:: sql CREATE TABLE multiset_tbl (col_1 MULTISET (CHAR(1))); INSERT INTO multiset_tbl VALUES ({'c','c','c','b','b', 'a'}); SELECT * FROM multiset_tbl; :: col_1 ====================== {'a', 'b', 'b', 'c', 'c', 'c'} .. code-block:: sql SELECT CAST(col_1 AS SET), CAST(col_1 AS LIST) FROM multiset_tbl; :: cast(col_1 as set) cast(col_1 as sequence) ============================================ {'a', 'b', 'c'} {'c', 'c', 'c', 'b', 'b', 'a'} LIST/SEQUENCE ------------- **LIST** (= **SEQUENCE**) is a collection type in which the input order of elements is preserved, and duplications are allowed. Elements of a **LIST** are allowed to have only one data type. It can have records of other tables. .. code-block:: sql CREATE TABLE list_tbl (col_1 LIST (CHAR(1))); INSERT INTO list_tbl VALUES ({'c','c','c','b','b', 'a'}); SELECT * FROM list_tbl; :: col_1 ====================== {'c', 'c', 'c', 'b', 'b', 'a'} .. code-block:: sql SELECT CAST(col_1 AS SET), CAST(col_1 AS MULTISET) FROM list_tbl; :: cast(col_1 as set) cast(col_1 as multiset) ============================================ {'a', 'b', 'c'} {'a', 'b', 'b', 'c', 'c', 'c'} .. _implicit-type-conversion: Implicit Type Conversion ======================== An implicit type conversion represents an automatic conversion of a type of expression to a corresponding type. **SET**, **MULTISET**, **LIST** and **SEQUENCE** should be converted explicitly. If you convert the **DATETIME** and the **TIMESTAMP** types to the **DATE** type or the **TIME** type, data loss may occur. If you convert the **DATE** type to the **DATETIME** type or the **TIMESTAMP** type, the time will be set to '12:00:00 AM.' If you convert a string type or an exact numeric type to a floating-point numeric type, the value may not be accurate. Because a string type and an exact type use a decimal precision to represent the value, but a floating-point numeric type uses a binary precision. The implicit type conversion executed by CUBRID is as follows: **Implicit Type Conversion Table 1** +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | From \\ To | DATETIME | DATE | TIME | TIMESTAMP | DOUBLE | FLOAT | NUMERIC | BIGINT | +===============+==============+==========+==========+===============+============+===========+=============+============+ | **DATETIME** | \- | O | O | O | | | | | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **DATE** | O | \- | | O | | | | | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **TIME** | | | \- | | | | | | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **TIMESTAMP** | O | O | O | \- | | | | | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **DOUBLE** | | | O | O | \- | O | O | O | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **FLOAT** | | | O | O | O | \- | O | O | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **NUMERIC** | | | | O | O | O | \- | O | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **BIGINT** | | | O | O | O | O | O | \- | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **INT** | | | O | O | O | O | O | O | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **SHORT** | | | O | O | O | O | O | O | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **BIT** | | | | | | | | | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **VARBIT** | | | | | | | | | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **CHAR** | O | O | O | O | O | O | O | O | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ | **VARCHAR** | O | O | O | O | O | O | O | O | +---------------+--------------+----------+----------+---------------+------------+-----------+-------------+------------+ .. _number-2-time: **Limitations when numeric value is changed as TIME or TIMESTAMP** * All numeric types except for NUMERIC type can be converted into TIME type; at this time, it represents a value of the remainder which is calcuated by dividing the input number into 86,400 seconds(1 day), and the remainder is calculated as seconds. * All numeric types including NUMERIC can be converted into TIMESTAMP type; at this time, the input number cannot exceed 2,147,483,647 as the maximum. **Implicit Type Conversion Table 2** +---------------+---------+-----------+---------+------------+----------+-------------+ | From \\ To | INT | SHORT | BIT | VARBIT | CHAR | VARCHAR | +===============+=========+===========+=========+============+==========+=============+ | **DATETIME** | | | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **DATE** | | | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **TIME** | | | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **TIMESTAMP** | | | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **DOUBLE** | O | O | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **FLOAT** | O | O | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **NUMERIC** | O | O | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **BIGINT** | O | O | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **INT** | \- | O | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **SHORT** | O | \- | | | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **BIT** | | | \- | O | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **VARBIT** | | | O | \- | O | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **CHAR** | O | O | O | O | \- | O | +---------------+---------+-----------+---------+------------+----------+-------------+ | **VARCHAR** | O | O | O | O | O | \- | +---------------+---------+-----------+---------+------------+----------+-------------+ Conversion Rules ---------------- INSERT and UPDATE ^^^^^^^^^^^^^^^^^ The type will be converted to the type of the column affected. .. code-block:: sql CREATE TABLE t(i INT); INSERT INTO t VALUES('123'); SELECT * FROM t; :: i ============= 123 Function ^^^^^^^^ If the parameter value entered in the function can be converted to the specified type, the parameter type will be converted. The strings are converted to numbers because the input parameter expected in the following function is a number. .. code-block:: sql SELECT MOD('123','2'); :: mod('123', '2') ========================== 1.000000000000000e+00 You can enter multiple type values in the function. If the type value not specified in the function is delivered, the type will be converted depending on the following priority order. * Date/Time Type ( **DATETIME** > **TIMESTAMP** > **DATE** > **TIME** ) * Approximate Numeric Type ( **DOUBLE** > **FLOAT** ) * Exact Numeric Type ( **NUMERIC** > **BIGINT** > **INT** > **SHORT** ) * String Type ( **CHAR** > **VARCHAR** ) Comparison Operation ^^^^^^^^^^^^^^^^^^^^ The following are the conversion rules according to an operand type of the comparison operator. +-------------------+-------------------+----------------------------------------------+----------------+ | operand1 Type | operand2 Type | Conversion | Comparison | +===================+===================+==============================================+================+ | Numeric Type | Numeric Type | None | NUMERIC | | +-------------------+----------------------------------------------+----------------+ | | String Type | Converts operand2 to **DOUBLE** | NUMERIC | | +-------------------+----------------------------------------------+----------------+ | | Date/Time Type | Converts operand1 to Date/Time | TIME/TIMESTAMP | +-------------------+-------------------+----------------------------------------------+----------------+ | String Type | Numeric Type | Converts operand1 to **DOUBLE** | NUMERIC | | +-------------------+----------------------------------------------+----------------+ | | String Type | None | String | | +-------------------+----------------------------------------------+----------------+ | | Date/Time Type | Converts operand1 to date/time type | Date/Time | +-------------------+-------------------+----------------------------------------------+----------------+ | Date/Time Type | Numeric Type | Converts operand2 to Date/Time | TIME/TIMESTAMP | | +-------------------+----------------------------------------------+----------------+ | | String Type | Converts operand2 to date/time type | Date/Time | | +-------------------+----------------------------------------------+----------------+ | | Date/Time Type | Converts it to the type with higher priority | Date/Time | +-------------------+-------------------+----------------------------------------------+----------------+ When Date/Time type and numeric type are compared, see :ref:`Limitations when numeric value is changed as TIME or TIMESTAMP ` of the above table. There are exceptions when operand1 is string type and operand2 is a value. +-------------------+-------------------+--------------------------------------+----------------+ | operand1 Type | operand2 Type | Conversion | Comparison | +===================+===================+======================================+================+ | String type | Numeric type | Converts operand2 to the string type | String | | +-------------------+--------------------------------------+----------------+ | | Date/Time type | Converts operand2 to the string type | String | +-------------------+-------------------+--------------------------------------+----------------+ If operand2 is a set operator( **IS IN**, **IS NOT IN**, **= ALL**, **= ANY**, **< ALL**, **< ANY**, **<= ALL**, **<= ANY**, **>= ALL**, **>= ANY** ), the exception above is not applied. The following is examples of implicit type conversion in comparison operations. * **Numeric Type & String Type Operands** The string type operand will be converted to **DOUBLE**. .. code-block:: sql CREATE TABLE t1(i INT, s STRING); INSERT INTO t1 VALUES(1,'1'),(2,'2'),(3,'3'),(4,'4'), (12,'12'); SELECT i FROM t1 WHERE i < '11.3'; :: i ============= 1 2 3 4 .. code-block:: sql SELECT ('2' <= 11); :: ('2'<11) ============= 1 * **String Type & Date/Time Type Operands** The string type operand will be converted to the date/time type. .. code-block:: sql SELECT ('2010-01-01' < date'2010-02-02'); :: ('2010-01-01'= '2010-01-01'); :: (date '2010-02-02'>='2010-01-01') =================================== 1 * **String Type & Numeric Type Host Variable Operands** The numeric type host variable will be converted to the string type. .. code-block:: sql PREPARE s FROM 'SELECT s FROM t1 WHERE s < ?'; EXECUTE s USING 11; :: s =================== '1' * **String Type & Numeric Type value Operands** The numeric type value will be converted to the string type. .. code-block:: sql SELECT s FROM t1 WHERE s > 11; :: s ================== '2' '3' '4' '12' .. code-block:: sql SELECT s FROM t1 WHERE s BETWEEN 11 AND 33; :: s ====================== '2' '3' '12' * **String Type Column & Date/Time Type Value Operands** The date/time type value will be converted to the string type. .. code-block:: sql CREATE TABLE t2 (s STRING); INSERT INTO t2 VALUES ('01/01/1998'), ('01/01/1999'), ('01/01/2000'); SELECT s FROM t2; :: s ====================== '01/01/1998' '01/01/1999' '01/01/2000' .. code-block:: sql SELECT s FROM t2 WHERE s <= date'02/02/1998'; In the above query, comparison operation is performed by converting date'02/02/1998' into string '02/02/1998'. :: s ====================== '01/01/1998' '01/01/1999' '01/01/2000' Range Operation ^^^^^^^^^^^^^^^ * **Numeric Type and String Type Operands** The string type operand will be converted to **DOUBLE**. .. code-block:: sql CREATE TABLE t3 (i INT); INSERT INTO t3 VALUES (1), (2), (3), (4); SELECT i FROM t3 WHERE i <= ALL {'11','12'}; :: i ============= 1 2 3 4 * **String Type and Date/Time Type Operands** The string type operand will be converted to the date/time type. .. code-block:: sql SELECT s FROM t2; :: s ================= '01/01/1998' '01/01/1999' '01/01/2000' .. code-block:: sql SELECT s FROM t2 WHERE s <= ALL {date'02/02/1998',date'01/01/2000'}; :: s ================ '01/01/1998' An error will be returned if it cannot be converted to the corresponding type. Arithmetic Operation ^^^^^^^^^^^^^^^^^^^^ * **Date/Time Type Operand** If the date/time type operands are given to '-' operator and the types are different from each other, it will be converted to the type with a higher priority. The following example shows that the operand data type on the left is converted from **DATE** to **DATETIME** so that the result of '-' operation of **DATETIME** can be outputted in milliseconds. .. code-block:: sql SELECT date'2002-01-01' - datetime'2001-02-02 12:00:00 am'; :: date '2002-01-01'- datetime '2001-02-02 12:00:00 am' ===================================================== 28771200000 * **Numeric Type Operand** If the numeric type operands are given and the types are different from each other, it will be converted to the type with the higher priority. * **Date/Time Type & Numeric Type Operands** If the date/time type and the numeric type operands are given to '+' or '-' operator, the numeric type operand is converted to either **BIGINT**, **INT** or **SHORT**. * **Date/Time Type & String Type Operands** If a date/time type and a string type are operands, only '+' and '-' operators are allowed. If the '+' operator is used, it will be applied according to the following rules. * The string type will be converted to **BIGINT** with an interval value. The interval is the smallest unit for operands in the Date/Time type, and the interval for each type is as follows: * **DATE** : Days * **TIME**, **TIMESTAMP** : Seconds * **DATETIME** : Milliseconds * Floating-point numbers are rounded. * The result type is the type of an date/time operand. .. code-block:: sql SELECT date'2002-01-01' + '10'; :: date '2002-01-01'+'10' ====================== 01/11/2002 If the date/time type and a string type are operands and the '-' operator is used, they will be applied according to the following rules. * If the date/time type operands are **DATE**, **DATETIME** and **TIMESTAMP**, the string will be converted to **DATETIME**; if the date/time operand is **TIME**, the string is converted to **TIME**. * The result type is always **BIGINT**. .. code-block:: sql SELECT date'2002-01-01'-'2001-01-01'; :: date '2002-01-01'-'2001-01-01' ================================ 31536000000 -- this causes an error .. code-block:: sql SELECT date'2002-01-01'-'10'; :: ERROR: Cannot coerce '10' to type datetime. * **Numeric Type & String Type Operands** If a numeric type and a string type are operands, they will be applied according to the following rules. * Strings will be converted to **DOUBLE** when possible. * The result type is **DOUBLE** and depends on the type of the numeric operand. .. code-block:: sql SELECT 4 + '5.2'; :: 4+'5.2' ========================== 9.199999999999999e+00 Unlike CUBRID 2008 R3.1 and the earlier versions, the string in the date/time format, that is, the string such as '2010-09-15' is not converted to the date/time type. You can use a literal (DATE'2010-09-15') with the date/time type for addition and subtraction operations. .. code-block:: sql SELECT '2002-01-01'+1; :: ERROR: Cannot coerce '2002-01-01' to type double. .. code-block:: sql SELECT DATE'2002-01-01'+1; :: date '2002-01-01'+1 ===================== 01/02/2002 * **String Type Operand** If you multiply, divide or subtract both strings, the result returns a **DOUBLE** type value. .. code-block:: sql SELECT '3'*'2'; :: '3'*'2' ============================ 6.000000000000000e+00 The '+' operator action depends on how to set the system parameter **plus_as_concat** in the **cubrid.conf** file. For details, see :ref:`stmt-type-parameters`. * If a value for **plus_as_concat** is yes (default value), the concatenation of two strings will be returned. .. code-block:: sql SELECT '1'+'1'; :: '1'+'1' ====================== '11' * If a value for **plus_as_concat** is no and two strings can be converted to numbers, the **DOUBLE** type value will be returned by adding the two numbers. .. code-block:: sql SELECT '1'+'1'; :: '1'+'1' ========================== 2.000000000000000e+00 An error will be returned if it cannot be converted to the corresponding type. They went down to the water-side to try the effects of a bath in the surf as it rolled in from the Pacific Ocean. They found it refreshing, and were tempted to linger long in the foam-crested waves. Near by there was a fishing-place, where several Japanese were amusing themselves with rod and line, just as American boys and men take pleasure in the same way. Fish seemed to be abundant, as they were biting freely, and it took but a short time to fill a basket. In the little harbor formed between the island and the shore several junks and boats were at anchor, and in the foreground some smaller boats were moving about. There was not an American feature to the scene, and the boys were thoroughly delighted at this perfect picture of Japanese life. It was sea-life, too; and they had island and main, water and mountain, boats and houses, all in a single glance. "For our sick soldiers!" "Yes, I'm going to take that away with me to-day." "I destroyed it. There was no object in keeping it. I tore it up then and there and pitched it on the pavement. The motor was driven by a dumb man, who conveyed me to the corner house. It struck me as strange, but then the owner might have returned. When I got there I found the man subsequently murdered suffering from a combination of alcoholic poisoning and laudanum. It was hard work, but I managed to save him. A Spanish woman--the only creature besides my patient I saw--paid me a fee of three guineas, and there ends the matter." fatherly letter--but frank! He said he saw from the address that I ¡°Who are you, please?¡± Sandy shot the question out suddenly. He had gone back. "You'll come through all right," said the Surgeon smiling. "You're the right kind to live. You've got grit. I'll look at your partner now." 'he Took Another Look at his Heavy Revolver.' 254 But after the gun was gone, and after Shorty had written a laborious letter, informing Sammy of the shipment of the gun and its history, which letter inclosed a crisp greenback, and was almost as urgent in injunctions to Sammy to write as Sammy had been about his piece of ordnance, Shorty sat down in sadness of heart. He was famishing for information from Maria, and at the lowest calculation he could not hope for a letter from Sammy for two weeks. The firing and stone-throwing lasted an hour or more, and then seemed to die down from sheer exhaustion. Odiam had triumphed at last. Just when Reuben's unsettled allegiance should have been given entirely to the wife who had borne him a son, his farm had suddenly snatched from him all his thought, all his care, his love, and his anxiety, all that should have been hers. It seemed almost as if some malignant spirit had controlled events, and for Rose's stroke prepared a counter-stroke that should effectually drive her off the field. The same evening that Rose had gone weeping and shuddering upstairs, Reuben had interviewed the vet. from Rye and heard him say "excema epizootica." This had not conveyed much, so the vet. had translated brutally: "I don't ask for that to-night¡ªall I ask is food and shelter, same as you'd give to a dog." "Yes, yes, we will consider of some more fitting answer," said Leicester fiercely;¡ªand after consulting earnestly for a few minutes with Jack Straw, Thomas Sack, and other leaders, he returned to De Vere, and said¡ª HoMEÃâ·ÑÍøÕ¾Ò»¼¶ÊÓÆµ²¤ÂÜÃÛ ENTER NUMBET 0018www.zs-tech.net.cn
laijianshen.com.cn
www.aurumstar.com.cn
www.dhjscl.com.cn
www.hefae.com.cn
kieo.com.cn
msqa.com.cn
www.rxov.com.cn
www.gx10000.com.cn
www.jstjiuye.com.cn
迷人的浪屄 重口味av 狂操小姐特爽吗 美女屄照片 仓井空片子 潘号 美女大胸色图 美女xingjiao18p 妇女小穴图片 c168b91e000357e6 丝袜骚妇爱爱 操逼图1234 制服诱惑五月四房间 美鲍图下载 亚洲猛女性交图片150p 欧美做爱15图片 草妈妈小姨子穴 刘亦菲无码艳照图 少女和狗性交 裸模陈丽佳 WWW.73XH.COM WWW.22222SE.COM WWW.QOEDU.ORG WWW.NNNN16.COM WWW.KYFDZ.COM WWW.CCC156.COM WWW.GUOXUE.COM WWW.YLQWX.COM WWW.TFKRQ.COM WWW.MAODH.COM WWW.BBB184.COM WWW.2323AV.COM WWW.JAVCHIP.COM WWW.BX2500.COM WWW.SYFX168.COM WWW.XIEEGUO.COM WWW.DSYQ.COM WWW.2651.CN WWW.222128.COM BAWRIBOON.CHANREUA WWW.N9B3.COM WWW.999KPW.COM WWW.ZG99.COM WWW.HHH689.COM WWW.SJ1718.COM WWW.AIDJE.COM WWW.7777RR.COM WWW.BOBO138.COM WWW.QQHJY.COM WWW.5ITAOTU.COM WWW.576586.COM WWW.44SJSJ.COM WWW.464HP.COM WWW.CX765.COM WWW.CCC559.COM WWW.H3AA.COM WWW.998QQ.COM WWW.696EE.COM WWW.752HH.COM WWW.PLAYQTU.COM WWW.HWXNT.COM WWW.BST818.COM WWW.WJABBS.COM WWW.YSTS8.COM WWW.JXAXS.COM WWW.96ZIE.COM WWW.161XS.COM WWW.74KD.COM WWW.VERISIGN.COM WWW.16KK.COM WWW.YNSERVER.COM WWW.QDH100.COM WWW.520SU.COM WWW.CENTOSCN.COM WWW.CCC680.COM WWW.ES60.COM WWW.AXQ2.COM WWW.CK180.COM WWW.38TVTV.COM WWW.KDSMIT.COM WWW.4455FF.COM WWW.HBYPHG.COM WWW.Y5ZN.COM WWW.111FN.COM ILYA.IOSIFOV WWW.YJSBB.COM WWW.9877YX.COM FABRIZIO.FERRACAN WWW.3344G.COM WWW.SJYHOME.COM WWW.984AA.COM WWW.PPAV1515.COM 青青草注册会员 chengrenseqingyingyuan 亚洲丰满大肥屁股视频 欧美少女OOXX svs视频精品分享视频 719BBcom AV制服丝袜 13yn_com wwwOOSIHUCOMmagnet 一本道处女A片视频 抽打妈妈的淫穴15p 播色网1 三邦车视欧洲 成人动漫阿凡达 成人综合社区免费视频www5xsq1com 乱伦家庭一级a片在线播放 四虎影库必出精品浅仓彩音 干老太太wwwjiujiu6pcom wwwonlyjizzcom 连裤袜成人 sq小说网站 欧美色图就爱啪啪啪 亚洲内衣振动器magnet 午夜剧场成人av专场 自拍av射射 伦理琪琪影院a 天天电影网吧 wwwxixi5566 女人下部真实图片 淫荡的黄蓉校园春色 校园春色古典武侠在线视频 雨宫琴音小朋友 武侠古典长篇连载黄色笑话校园春色性爱技巧淫妻交换 干法国小姑娘 童颜巨乳港台三级视频 调教家政妇serious漫画在线观看 wwwvom色小姐 赵薇评价古巨基 男生舔女生bb的照片 东京热苍井空QVOD aluoli5社区 wwwaicbbcom 校花跟我xxx 制服美女小色网 黄色视频机哇插屁股 俄罗斯三级排行 啪啪影院破解版免费 wwwyoujizzjizzcom 三圾片都有哪些 都市激情校园春色家庭乱伦文学 网盘迅雷五月 文爱小说h xfplay丝袜美腿 www3324444comwwwwoaisikucom av爱爱aaa 久久打炮性生活 性爱偷情乱伦做爱操逼 熟女炮友自拍在线视频 裸成人AV 美国成年免费网站 葵司三级片 38p0pocom XxPen成人免费视频 色播五月情天 亚州女性自慰视频wwwjiujiu6pcom 九九色大姐 免费在线视频色小说无广告 欧美下体艺术写真 www4hu41 能见到毛的免费日本电影 影音免费观看欧美A片 japanese12在线homesextopnetsextopnet 给个网站你们懂的2017 久草热av在线小说 q1se 爆操白嫩人妻p 72bao在线 天天拍天天操天天撸 avtt2020 幼女av电影资源种子 3D台湾香港经典三级日本 国产成年人Av影院 琪琪影院金瓶梅 亚洲色~ 性爱合成图片 www5060lucom 尤物人妻小说 张柏芝艳照门在线手机 妓院虐待美女图 3W699UUUCOM wwwyy4480org亚洲AVqq 裸妇熟女 古装一级无码A片王昭君rmvb av空姐蕾丝 dizhi99妇科检查 AV区亚洲AV欧美男同AV 迅雷蚂蚁泰国女优 小骚逼操操操啊啊啊 大鸡巴逼 孙子狂草奶奶 wwwaa456com 9115sss视频在线 少妇少男同奸 3p夫妻交换做爱 狼人综合网123 wwwkkkk25 外国幼女网址 成人视频在线看青青草在线看 狗和人的伦理电影 qiuxis6com 大胆操逼BB人体 月光宝盒官网bai5acn 最新黄色口交图 成人老婆在线性爱视频 不要vip的完整黄片 色和尚香蕉撸 熟妇人妻在线av pornxxx幼女 裸体赌过程 三级片满清十大酷刑 在车上被强嗯啊不要120p wwwxbxbcon 真实偷拍初中生厕所12p 东方av亚洲图片欧美图片bbcc789com 澳门博彩裸体艺术图片 成人动画理论片 亚洲欧美日韩强奸 妓女学校妓女小说 LELEHEIUSmagnet 轮奸文章 淫妻按摩录 色爱影视 幼女嫩穴下载 超碰免费动漫视频 狠狠干胖妞 大机巴饶了我吧视频 人体艺术摄影动漫 幼女色吧 狼人艹综合 先锋资源av色撸 影视操逼的人生 亚洲性爱www8oyxcom 五月姬情 美女姐姐15p 亚洲欧洲校园另类心灵捕手 欧美亚洲激情小说色图另类 妈妈被我t 欧美肥婆性爱 亚zhou色图 人妻好吊视频在线观看 萝莉裸下体 磨豆腐漫画 同学妈妈随便逼操 2B姐姐的色图 偷拍自拍下载 色色色色色小说激情 平井玛利亚 女仆 尻绳 欧美性爱偷拍自拍古典武侠 欧美另类幼女做爱 在线手机播放器 伊人88综合图片网 有声小说每天撸一撸 麻生希第一部快播 制服诱惑亚洲图片 风月恶之花剧情介绍 ckck爱情电影网 女优美弥藤无码先锋影音 戌人快播电影 欧美肥臀影视 着a片 2017宝妈手机在线看片 欧韩久久视频 成人小说3q 成人ob快播 母子乱伦爱爱在线mmissno1com 干网在线清洗流程图 骑淫妻网 wap9999akcom ye3333com 暴插大奶少妇 Yinse人妻 看黄色网站主持人大屁股大逼图 swwwbu370comhtmindexhtm 亚州强爆乱伦视频 亚洲激情性 色莱坞免在线视频 美女粉色AV 极品夫妻大白屁股 丝袜护士的逼 987资源网 丝袜妹子穿丝袜wwwyymeizicom 交换人妻番号 人妖重口味另类文学 综合征服色的站 人妖性爱高潮图片 巨乳幻想第二集 殴美色妇1024 AV作品免费视频 www淫色色淫com奇米综合网 44kkmm` 啊鲁啊奴 我抽插巨乳女教师 守望先锋av动画在线 日本中文a漫 激情五月狠狠干 美国搞师傅 porn91明星 a片哪里可以下载地址 wwwribiavcom W66cccom 瑜伽口交无码成人自拍 欧美人与XXX 亚洲有码偷拍制服丝袜 www115cdcom aV天堂手一 男女全裸舔逼高清片 啊撸啊了嗯 女自拍揉胸视频大全 西方黄色成人三集A片 撸春 超碰爸爸闯进来 亚洲清纯美女性爱炮图片15p 日本黄色电影成年网 射精女性xxx 乱伦熟女人妻在线 波多野结衣床上被操 夜夜撸在线视频暗暗撸在线视频加多撸在线视频天天撸在线视频 淫荡啊浪叫啊操我 国产谷露1 册册XX 美日韩A片在线观看mp4 WWW55ybybC0m下载 夜夜撸wwwkanav05comwwwqbiryfrdoizcn 3344EVCOM 足交手机在线 美女直播videombaiducom 久久在线视频精品99re6wwwbs799com6655acom 中国成人av视频 羞涩涩 av红楼梦在线播放 动漫套图第一页 经典干幼幼小说mchinadmdcomwwwgzyunhecom 捆绑色色色 美女艺术照无码 www凤凰网con 在线播放成人网 偷拍自拍强奸乱伦要在线观看 250pp6wpin 闹洞房就去干 乱伦电影狠狠撸hhh600com 巴扎黑电影 操老师嫰穴 日屄短文 女性阴体艺术图147 熟女沙织漫画 白虎小穴被早 张悠雨叉开腿露b高清 偷看屄的故事 黄色动画图片小说 插菊花色色 幼奸吧 WWW_ZZZ13K_COM 肏笓片 我把就舅妈给操了 进进出出美少女 人与动物交配哪里者 影音先锋激情综合网 超清躶体美女写真 53kkk亚洲小说 杨永晴ed2k 张莜雨人体艺术致意 抠屄淫色网 zipailaobishipin 国模茶雪大尺度高清局部私处人体艺术图片 小女孩逼尿屄图片 南宁极品美女 欧美 性交图片 113rr WWW_RIRIHEI_COM 夫妻性交真像视频 a片强奸系列快播片 k8经典伦理 韩国女主播朴妮唛的黄色小说 和妈妈在火车上做边爱 色 WWW_WW789MM_COM 那个爽啊 出卖女友刘晴小说 干逼空姐电影 av销量第一的番号 撸管色中色 水果干影院 电影 高清口交图 ed2k佐佐木 黑木耳验收材料 老奶奶跟孙子做爱电影 弟弟和姐姐乱伦 147日本人大胆子女艺术图 黄色漫画书免费3级 一个20岁的凶虎 进爆欧美性爱 中国老女人草比 苍井空av百度网盘高清 亚洲美女论坛 与淑女乱伦 婷婷五月性 少男裸体人体艺术 尼钭空 龚玥菲xiaos 欧美裸体私处照 制服丝袜松下美由纪 调教日本女优 幼幼撸片 侏儒女 � aikojiaocom 32式夫妻性姿势动态图 xingaidexiaoshuo 美女一丝挂全一裡图 护士嫩b50p 第四成人黄色网站 京野结衣电影 漂亮女人下载 小色迷ge 美女车模操逼 西西自拍波多野结衣 欧美动态成人视频 女人一天最多能承受多少次性爱 五月天天色小说 越南女优 外国成人频道在线 欧美裸体影 丁香裸图 入江辉美在线电影 葵花牌壮腰健肾片 广末凉子成人片被性侵 美女裸体人体大胆脱小内内露b穴毛图 成人大胆摄图 亚洲色图 筱 和公公乱伦的女人们 少妇美嫁娘 中国人做爱自拍偷拍视频 银虎导航网银虎新地址 田韩a片 我姐尻屁片 儿子强奸继母图 美女全裸劈腿被奸照片 月野沙里qovd 护士不穿内衣要我的大鸡巴操她逼 经典性爱图片 精品少妇被老外硬刺无码吞精 qvod 套动换妻 色色艹妹妹 免费成人网8888 中华人民共和国行政诉讼法 暑假危机夏令营修改器 彩色面条机 兴业银行赤道银行 大朗启明星初级中学 孟锦云照片 俄罗是做爱 巨乳超美熟妇人妻 gegeyaocaobidianying 郑州私人影院装修 pornsoraaoi 小姐操逼照片删除删除 非洲美女大胆人体艺术照 weiriguobidejiba 狠撸撸蜜桃 klk第一主双插双枪爆菊 毛逼网站 做爱图片激情小说 WWW260TUCOM 大尺度裸体操逼图片 制服美女淫影院 射在里面的照片16p 美鲍色图操b 学生尻妣视频 www色中色在线色com 张柏芝艳照偷拍 美女性爱过程图 同志小说一直男干了我和老婆 日本少女乳头人体艺术照 美女用手掰逼套图 日韩在线自拍在线 各地美女人体艺犬 农村黄 好看的乡村熟妇小说 父与女偷摸乱伦 我和少女做爱视频 我插入女老师体内 东京热无需播放器 快播一本道a波多野姐姐 淫秽网站专区 水里狠插屄 丝袜骚妇人妻乱伦 酒色1413 大胆人体艺术导航 快播孕妇影片 欧美自拍偷拍下载 oumei在线长篇小说 WWWKE47COM 章子怡淫照 操阴快片 宋祖英大胆人体艺术 香港成人免费电影艳照门 首页52avzycom mac版淫色网站 美女被马强奸小说 综合色站影音先锋 儿子操妈妈bi 影院里那些男孩的秘密txt 免费在线3p口交图片 亚卅大胆人体艺术摄影 美国性感波吧 强奸丝袜美女的视频 为什么上不去成人电影网了 张幼女大胆美女人体艺网 韩国限制片迅雷种子下载 女乱15p 骚逼大咪咪高潮了 亚洲色区成人电影图片 与老师性交 农夫导航人体艺术 日本丝袜片子下载 3p性感尤物内射她的小骚穴 粉红亚洲妹偷拍自拍 风情谱女公关第10集下 黑人大战亚洲骚货 五月天婷婷乱伦图书 美女图片大胸删除 屄草垮 黄色glf 黑人强奸熟女影音先锋 足x番号 插逼里动态图 妹妹干偷拍私拍自拍性爱色图 激情美丽小骚屄 温州女友做爱视频 迅雷黑人a片下载 美女邪恶裸露人体艺术 日本黄seibt 苍井空擦b 第9影院在线观看 丰乳肥臀迅雷 WWWWW87XXOOCOM 快播大陆少女1级片 丝袜足交老师小说 国产视频熟女系列 女人与大黑狗真实插入播放器 农夫成人电影人与兽交 淫崎千鹤动画 五月天乱伦色色的有哪些小说 工具插入小穴 鸡巴图片网 怒火街头在线视频 快播日本a优 久操偷拍自拍 18女人人体 lu二哥男人影院 零度战姬ed2k 性感日本古典黄色图集 姐妹情室光棍 日木三极片 激情亚洲色图先锋 动慢成人 伊人在线琪琪色酒色网 朋户区av视频 肉丝裤袜跳蛋小说 丝袜美腿新感觉要操逼网 日本老奶性视频在线观看 爆乳欲室在线观看 狼人干综合新地址HD播放 saiavloanmagnet 性启蒙番号 老淫哥 搞清大片人人看欧美 亚洲美穴15p 彩漫哥哥的sex计划 av成人视频干妹妹 xx妹妹 裸体毛网站 亚洲幼女口交电影 亚洲色偷拍亚洲图片18m18vecom 国产自拍韩国综合 三级片嫩模做爱视频成人片 激情乱伦三级片 女性做爱人体艺术 狼国网成人小说网 我和妹妹在浴室里操 大姨姐与妹夫乱伦偷情 妻子蜜穴 夫妻自拍和朋友做爱偷拍自拍全部视频 overthumbspenis图 酒色狼国成人 干呦呦图片 裸体漏阴茎阴道性交流k精 狼国3p图 父女奸淫荡 pom黄片 小说区黄色小说 av磁力网站 www美女sex 米奇影影 新婚开苞 日本大胸熟女妈妈在线视频 色就是色欧美图片亚洲图片7eavcom 强插小嫩妹 撸撸火影同人 wwwmumu50comuc 就爱啪欧 女教师成人电影网 亚洲色图制服丝袜骚秘书 金麟岂是池中物无修版 久久热人兽交配 成人电影成人网站成人小说网 模特公车痴汉在线 mama姐弟cao oojizz 成人性交免费一级黄片 日本漂亮的av无码网址 全裸无码无内衣照片 女王专区 夜i夜i骑 欧美五月香婷婷 黄色三级片爱色色哥哥 同性恋黄色小说小卖部 人体艺术照sadrine私房美女图 MP4视频亚洲日韩色就是色欧美setu avHS动漫网站 艹比视频免 成人诱惑网 丝袜淫母 最新幼交自拍上传视频 丝袜美女说我爱被你插在线播放 男屁眼被曰小说 男男性爱想双飞XX网 av女苍井空大胆人体 插射进去操综合网 先锋影音av资源站馒头 女婿让我疯狂 wwwhaorenshuoc 空港magnet 249hh快播电影 70岁操屄 色影院 另类有声小说 小泽玛利亚码新作 小泽玛利亚vod 哪里有h网 www小沈阳网com www松原油区二中 东京热antianshaji 东京热妇女 酒色网电影 手机现在怎么看黄片 去哪看黄片 想看黄色小说 彩美旬果 国产自拍 就爱插比 就去黄色 性爱用品 苍井空与狗 广播五月天 淫荡色小说 007成人网 12点文学网 人间风月影院 台灣佬娛樂網 唐伯虎成人站 淫妹妹激情图 163色电影网 在线电影性乐汇色高清 桃花族 撸特特 篱笆女人和狗电视剧 一本道avt天堂网大香蕉 好吊妞视频 mp4 亚洲欧美动漫在线字幕 淫色人妻午夜 色色色999韩在线播放 狼人干综合亚洲av 外兔网黄色网 DVDES- -664 mp4 av在线东方影库 免费看片美女 久久爱一本道 老鸭窝伊人无码不卡无码一本道 亚洲日韩色偷高猫咪 丁香五月综会缴猜小说 美祢藤コウ影院 吉泽明步 极道之妻 先锋 舒淇三彶在线观看 鲁大妈Xo 裸条在线观看神马在线 女捜査官西条琉璃在线 IPTD 853 在线 色色影视插插综合网 AV成人电影天堂 泷泽萝拉无码 ftp 大波浪综合成人网 欧美手机成网站 绝色福利导航视频 200bbb 国产自拍 视频 - 色色风-成人在线视频首选! 祼露毛片 jlzzjlzz现在播放 靠逼动漫影音 自拍经典迅雷下载 91大神扬风回馈网友支持,邀请网友一起3P白嫩性感的大奶女友,前半夜操完睡觉后 佐藤佳代无码 妹妹影院福利片 秋霞电院在线情侣偷拍 性8春暖花开论坛亚洲区 兄妹番号 新疆梦郎车震3P轮战50老逼 青青草免费在线播放 全裸正面叉视全裸正面叉视频 亚洲aV 性感皮裤高跟36D爆乳骚货情人性欲高涨 边看AV边暴力淫操 高潮迭起 浪叫不断 使劲 校园春色视频 求一个免费看成人直播的网站 小片网站 日韩无码国产精品欧美激情 日本无遮拦搞基视频 在线偷拍女厕正面视频 日韩丝袜写真视频 影音先锋看片资源q814@ 圆挺奶 在线观看美肉流刑地 天堂鸟影院西瓜 幼女自拍 超频免费视频12 剧情演绎在线 春野樱黄 萝莉做爱 日本午夜大片免费下载 欧美一本道字慕v 曹逼逼 成人影院d 91apt cn/mc taosege 玉足亲吻袜袜屋关注的视频 曰本人男女做爰视频 人休艺术张伯 用啥看考比视频下载 福利视频伊一 广州sm论坛 泰国古装A片 下载 五月福利视频导航 宅男福利成人在线 亚洲 视频偷拍 五月色播 loli h movie 下载大鸡巴视频资源在线播放 火星打接触在线免费观看 诱惑自拍 爱情鸟做爱视频 丝袜全包挑战视频采集 灵猴福利影院下载 三级做爱网站视频 少妇寂寞与狗迅雷下载 下载 被大鸡吧塞满的视频 99福利视频在线 大香蕉一本道富二代 李宗瑞在线午夜福利 欧美艳舞在线播放XXX yy6080影视觉影 黄色小视频一 公海 日本 美女 MP4下载 操你啦在线视频综合视频 亚州福利色 苍老师唯一流出视频看 女神自慰磁力下载 殴美黄色视频 g0g0图片大全 big acg 杨丽箐丝袜 美山兰子 富姐搭讪坐顺风车被 爆乳天堂 麻酥酥哟完整视频 magnet 美教师地狱责问 免费啪啪free 女生自拍在线 蜜桃直播脱内内 欲忘岛在线免费视频 迅雷下载 双穴 高分影视盒视频播放器 色爱亚洲五月天 wwwuuu7777com 无翼鸟少女全集 美莉喷奶截图 深夜影院免费打炮无码电影 台湾理论一本道电影 四库影院在线看的免费视频 午夜影院色琪琪 初川南 xfplay 2018黄色网站仼你搞不一样的搞法 caositayingyuan 曾舒蓓 w午福利人 91大神经典作品酒吧认识 青青草在线自拍综合 韩国操逼现场 jux886在线观看 樱井莉亚97集在线播放 t66y上榴人士 4444国产自拍 农夫av片导航电影 足控电影有哪些 三级riri看 亚洲强奸乱伦比比资源站 欧美破苞手机在 韩国可疑的美容院电影斑马影院 4438x2最新 韩国演艺圈1313在线观看 网站升级反问 xfyy卡通动漫 弱气乙女 浴室套图 成人资源AC av在线直播 韩国 年轻妈妈在瑜伽室做爱 最后还在家里的电影 www,5x脳,coM 8055神马电影 六点成人 波波视频成人影院 av插进去 看片+v信 www路AV av网站国产在线观看 俺去啦怎么打不开在 神马综合天堂 疯狂做爱dvd xianfengAV 德国老太AAA视频免费一览 第3页自拍tp 大香蕉狼人3d动漫 大香蕉新人人现 飞机福利视频导航 福利gof 浮淫视频 对白精彩淫荡风骚眼镜熟女妈妈与干儿子淫乱直播吊钟大奶妈妈是真的骚被爆操内 xx4s4scc 噜噜ccc 88电影于是院 18ansvideosdese ov 日本成人黄色动漫视频 大香蕉高清网站在线 高富帅小鲜肉微信约炮粉嫩小穴童颜美眉啪啪啪 青青草小穴视频 小奶屄 成人隔壁老王网站 国产综合5x视频在线 白虎嫩滑视频 激色猫欧美系列大香蕉 求黄片百度云链接 韩国女主播种子下载 magnet 波儿影院 99rehd。cc 欧美视频1随机播放 人人妻在线人人 成人av所有网址 天天re99 俺播 视频二区 亚洲 欧美免费 涩琪琪手机原网站 一冢本av中文字幕 wwwAV手机 朴妮唛福利全集霸气村 xxxooo日韩 御工黄色视频 色色播播,四四播播 ai美女鲍鱼b 今日推荐视频更新于 ------------------------ 《幼幼》两个18岁日本学妹背着 日本公开在线无码视频 182福利大香蕉影院 sosonn 在线漫画 午午西西影院 好看的吃奶av番号 eee119改域名 口交视频app 小黄瓜免费的福利视频 梦莉视频导航 馒头B紧身裤视频热舞 国产2017自拍视频 国产 偷拍 日韩 欧美 9丨福利社区你懂的 xxxx日本免费视频高清无码 【正在播放 [MXGS-754] 別顏空姐 麻生希[中文字幕] 第1集_日本av电影 av网站 青青草韩国演艺圈悲惨 0077cao改成什么了 丁香花开心五月手机在线 51av影院 醉地艾迪东方 秋霞影院www,eeussyy 守望先锋AV动漫版 影音先锋 兽兽门2008在线 理论片中文动漫dvd 午夜无码影院百度 亚洲色农夫Av 狼狼在线观看免费 新人主播性感长腿小安妮,情趣内衣火辣热舞,粉嫩骚逼激情自慰,呻吟可射,精彩不要错过第二弹 射精王 成人短片库m4格式 被窝全黄色片 妹控ova 日日操无码视频 香丁六月婷香丁网 河南露脸超嫩 日日在线 在线偷拍福利视频 一本道插逼逼 美女破处 大空美绪 午夜av影院 手机版 色尼姑影灰灰影院 日韩护士丝袜无码迅雷看看 免得黄色视频 伊甸园李丽莎福利在线 日本偷拍免费高清视频, 3344动画伦理片 图片小说 西瓜影音 黄色视频小说网站 番号水杯里面下药 WWW4T4F 日本女人喷潮完整视频 撸大爷影院 日必在线播放 91在线福利影院 最美人妻女教师 苍井空 Z影院。 gvg464中文字幕 成年轻人网站色直接看免费 电影颐和园耒删版在线播放 男人天堂在线资源tb hqnxiucao ffeex日本女孩 7k7k成人网 柳州莫菁视频12部全集 有点婴儿肥的清纯巨乳小学妹 资源影院tom51西瓜 9uu18 con 369看片永久免费 star-527古川ぃぉり 泰国天皇秀视频高清 757午夜视频第28集 极品F罩杯二次元狂热少女女生寝室场景视角自拍视频 51avi免费视频新地址 小明中文字幕免费视频在线观看 想看老外日屄的视频 性爱 视频 性交细节抽插视频 邪恶少漫画大全3d全彩欧美 鸭王2abc影 性交视频中国 小雪小视频bd 邪恶全彩无码ac漫画大全 JAVHIHIHI视频 神马影院dy88 福利 松果儿你懂的 幼nv fanhao App爱波成人影院 艺术片 伦理片 国产精品 od369韩国漫画 阿v在线观看免费 天堂 ananshe 日本东凛视频在线 成人电影午夜剧场a 开心丁香综合缴情网 任你在干线 玖玖色北条麻妃 av小说秘 欧美脚交在线视频foot 巴西美女按摩视频 色色哒福利 绝色老人轮奸波多野结衣 操妞视频播放 she一夜做爱视频 日亚洲欧美牛b叉电影 CcCC77欧美性爱 s第一福利 岛国激情片 我的老师黄片 hd东京热无码视频 成人性感动漫xxx 午夜影院xo暴爽影院 想要零用钱妹妹 素股 春节来历 催乳成人福利视频在线观看 亚州色图片成人插入视频 淫色草民电影 1027 核工厂 down xp 黄色视频高潮 播放s级毛片 日本成人性视频 日本厕所偷拍视频tub 摸射你在线视频 四虎尻屁影库 群橹大香蕉一本道dvd 白石さゆり 司机 亚里沙tsdv 41636在线 白白操在线免费观看 人人澡人人漠大学生 擼擼色綜合 黄色网站2117 芥麦色片 五月天亚洲网站 国外a片成人网 北山柑菜 中文字幕 被知道丈夫隔着魔镜 美容 国产在线导肮 苍井老师成人视频免费下载 猜谜系列的AV 波兰性交比赛视频 草莓午夜视频在国产 北京熟女楼凤群交 视频 国模超级福利在线 av导航大全 白肉淫 成人快播有声毛片 凹逼美女 老太太影院 黄播龙虾直播 陌陌约炮视频在线观看 自拍 欧美福利图片 800AV最新地址 未封av网站 蝌蚪窝窝在线观看 台湾怡红院 2018av国产手机在线视频 肉嫁高柳 magnet 澳门avav pppd424正在播放 向井蓝AV天堂 rbd浣肠 ts国产视频大全 wanz226mp4 vidz老湿影院 RIBENSANJIXIANGGANGSANJIHUANGSEWANGZHAN sl深夜福利 叉开大腿b我要添视频 rhj 228 播放 北川瞳在线高清 成人啪啪碰在线视频 RHJ-228 savk10 屄片小 se86视频在线观看 波多野结衣在家线观看 renrenmoshiping 美女主播露全身视频 プレステージ在线电影 国内偷看在线 93gao免费视频 绫波世娜磁力迅雷链接 老婆被 后入 91 KTDS-681 在线播放 ipx-072播放 电影我被人强奸 伦理片冫 日本女人,淫荡视频 干b乱视频 女同a片 9l国产自拍 吉吉影音冲田杏梨 乳胶xo影院 国内夫妻自拍tu视频 俺去啦在线不要播放器 橘佑金短视频 在线亚洲 欧美综合网 可以看的手机小视频 AV福利人妖 爱爱黄业视频 足交丝控漫画 海贼王黄版视频在线观看 2222老司机福利 女人与马干 thunder 日本三级,韩国三级,香港三级黄色视频在线观看色就是色 黄色丝袜小视频 美女主播仙桃福利视频ck kan3p cn在线电影 在线内射 mp4 后λ视频 国产精品在线视频Chinese 被大阴茎插哭的经历 偷拍 自偷 亚洲 在线 678dvd yy4408 伦理电影 牛牛视频露脸 黑人碰碰视频在线观看 1234色视频 韩国美女ⅴiρ神马视频 日本高清做爱无码视频网站 黑丝白肉我珍藏的av女优 春暖花开性吧有你亚洲无码 骑兵射福利一本道电影 无码嘿嘿嘿种子 波多野结衣末剪版在线观看 操呦呦777 仓多真央电影在线 国产自拍视频 yunfile 韩国最新网红主播福利视频大秀在线 国产在线偷录叫床 国产足j在线观看 韩国女主播福利导航 国模嘉妮大尺度视频 淫荡网欧美性交 免费性感a片野视频 熟母乱伦在线 pppd424在线播放午夜剧场 0 d恋老视频 SM 自拍 免费下载 747看看福利午夜影院 qingqingcaohaodiaosi 5566夜色在线 吐痰推荐,国外收费作品高品质CG动画51V整合1 四虎影院wap 1做爱 日本 中国人 小老汉在线视频 182tv-人人草-大香蕉-av在线 欧美激情日本视频 极品H片 我爱你AV52 亚卅无码最大视频 午夜影院费试看一分钟 84papa av网站800东方在线 日本三级香港三级成人网自拍在线观看 哪可以看工口 种子番号全集 ftp 村上丽奈番号 天天操天天玩 创造女生脱裤子洗澡 灰灰福利dianshioing 伦理图片二本道 国产自拍在线网页 在线 熟 激情邪恶大香蕉 九洲做爱视频 伊人久久五十路 一次肯德基哄骗邻家 十大暴力番号 第一福利成人在线 裸体女人的福利 伦理片天天射 美女被调教视频网址 乱伦交配视频 美国十次人与兽 美女91影院下载 乱伦片 下载 乱交在线视频 琪琪影院 黄页网站大全免费视频酥酥影院 全国最大成人网4438x9 青青在线自拍频vip 极品女神级网红美女可爱小胖丁和长屌土豪酒店约炮 白皙皮肤 经典欧美推荐第一页 吉迟明步1313 姐弟亲嘴啪啪啪视频 精子窝最新永久视频 青娱乐首页 耄耋视频亚洲 伦理巨乳速发福利 4438x是啊 伦理电影在线观看自慰 曰本lAV视频 yuojizz中国熟女 紫藤·伊莉娜h动画 偷拍广东情侣野战视频 大香蕉520 去便利店的途中在车内发情的妹妹 国产重口在线 不橹三二一 琪琪在线va 日本性交真灬 奇米第四春影视盒 百合情韵在线观看 唐山葬本子 动漫里番在线 se0107com 午夜伦天堂理影院 水滴摄像头偷拍 青虹资源搜索网站 双性人妖系列在线 mc小仙儿喊麦mp3 zzaa1 海瑟格拉汉姆大尺度电影 javhdvideo15,18岁 深喉 视频 @ simulant 黑人插pp 24p动态视频 黄瓜视频网站在线播放 女主播赫本磁力 好看的欧美无码中文字幕 护士被羞辱调教 一级黄片XxXx 桃园怜奈磁力 人 妻 少妇 很恨鲁在线视频播放 日本老熟妇性欲 wankz小黄鸭 国产自拍 黑丝诱惑 欧美性爱免播放器在线播放 后入 夫妻 自拍 视频 夫妻一级黄色录像片子 亚洲无码自拍 成人两性拍拍红番阁 四虎女友 皮皮虾无码 肛虐泥鳅在线看 邪恶里番漫画 四虎伦理手机在线 仔仔网 九州 国产自拍 av 动漫番号种子 韩国女主播迅雷磁力链 特殊视频百度云资源 ooxxoum 国产自拍偷拍操逼视频 女同偷拍自拍 秘密网av 石原莉奈电影院痴汉 26uuu小说 magnet 猫咪热播喷奶视频 婷婷丁香色 东京热哥av 女主播BT 在线成人av影院 视频 女神思瑞在线播放p 我与憧憬的太太中文字幕 mm无码 扣逼免费视频 亚洲一本道免费观看看 艾薇儿口爆百度云盘 wwwtoutouyaocom 韩色漫app 国外操逼磁力链接 下载 免费GAY片在线播放 男生福利影剧院 好逼免费电影 国内丝足熟女视频 内裤哥郭静在线 动漫XXOO视频在线观看 澳门自拍偷拍视频 丝袜伦理中文版 蛋蛋剧场骑士影院 涉谷果步sdde 绝色毛片无遮挡 无码性爱视频播放器 91超频碰人人在线 午夜视频是看体验区30区 伦理片 在线听书 午夜玩bb视频 国产 日韩 中文 自拍 8x在线成人 在线视频 手机视频在线日本 宅男啪啪福利 汤姆影院 avtom_四虎_四虎影库 欧美三级电影 甜蜜的乐团 AV超级搜索 猫咪maomi永久发布 日本X××oo 921影院 av隔壁老王每日更新在线 窝窝炮 西瓜影音 www99bb9com 福利前线影院 三上悠亚xz 插萝莉影院 1315影院 久久口交插萝莉影院 神父AⅤ动漫在线观看 wwwdd324con 亚洲风情 国内自拍 日韩 208午夜福利手机在线 欧美畜生伦理 wwwsavk18com 西西里高清模特艺术图 有声huangse小说 哥迅雷 女人操逼打炮 兰桂坊黄色电影 三邦车视网图片 小姨子的丝情袜意3p 妈妈跟狗搞 狂干黑丝足交美少妇 天天操欧美图片 日本黄片用避孕套 幼女小说集 日本乱伦狠狠插图 luxiaorenchaobi2008 樱井夕树无码 插得好爽在线小说 性爱女子会所小说 漂亮美眉床战色图 八匹狼娱乐社区成人 三级片神马影院 WWW_49979_COM 同性挤奶 亚洲人人体艺术大胆照片生殖器官 WWW_8090YYYY_COM 张篠雨人体艺术大胆照 女色幼rmvb 欧美老女人性爱电影 免费的皇瑟图片 幸富配电子书 赣榆淫妻 就去caobi 1314seqingwang 极品白富美爆操15p 亚洲成人影音先锋 很狠爽欧美 撸撸鸡巴射屄了 我要看明星淫伦的图片 自拍在线网 欧美av人体图片 看裸体漏阴道 飘花电影网乱伦小说 成人艺术色天空 撕开女友丝袜做爱 15岁少女撸撸色 西西人体粉色 japan sex woman 亿性家成人综合社区 少妇与老头黄色小说 誉田まみvideo 日本人体赛车大奖赛 骚女无毛逼 小b插的流水了 有哪些欧美同人成人版电影 骚妹影院删除 张瑞草书写法 性爱动态图片15p 姥姥撸一撸姥姥网 次原佳奈美图片 ooxx的日本动画片 父母性生活论坛 偷拍偷窥少妇内衣 裸体美女艺犬 奶妈肉穴 陈冠希功夫影音先锋视频 quanjialuanlun 欧美美女人体艺术动态 美女全裸图片百度 无码时间停止器 李宗瑞哪里又看 刺激抽插爱爱 色亲资源网 成人妹妹 视频 苍井空 时间停止 色老爹小说 小泉彩人体摄影 大骚哥 小色弟在线电影 女儿的嫩穴qvod 人体艺术图片topai 不要播放器鸡吧操进屄 张柏芝舒淇露大屄图 少女美鲍人体写真 av女优超市 淫荡的性爱图片 sex8ccpoweroriginalwestern 狠狠射操逼视频 rosi99 苹果手机迅雷云看片网站你懂的 日本美眉尻骚 16yeye 深圳合租挽妻 鸡巴插逼视频快播 穿越之淫乱小太监 强奸a片艳照 俄罗斯明星人体艺术 成人片a片区内 女人bb图片 五月天第一会所 日本超大胆人体艺术组图 18日本美女张开腿图 亚洲色图 偷拍自拍 我和小姨 20美女嫩穴 日本拳交迅雷 胖妹子人体艺术 真实做爱的快播伦理电影 蝌蚪窝一个释放 另类视频成人激情网址 lunxiaosou 狠狠插电影 苍井空拍过哪些电影 清水凉子summer 超大奶裸体人体图片 俄罗斯乱伦熟女 欧美鸡巴操阴道 吃了春药的女人会有什么反应图片 超大胆裸体黄色图片 日本快伦播电影 厕拍 博客 极度兽性未删减 先锋影院日本模特 美女的乳头人体艺术 陈静仪乳头很大吗 影音先锋韩国偷拍电影 乱伦故事狠狠碰 操妈妈屁眼快播下载 13岁美少女人体艺术图片 波多野结衣被射精图 激情偷拍自拍影音先锋 大鸡巴插入少妇小穴最性感 生命的力量全套照片 找个色阿姨 母子群交乱伦 第1集 幼乳图片 大色哥小色妹淫色网 搜狗裸体女人 夏娃露三点 张柏芝美屄 和美少女做爱 超大美乳妊妇 什么yiemeichuangyifudemeinvtupian chuangshangsheqing 小妹的屄好浪 我给小妞抠屄 淫荡骚姨 弟与妹性交弟阴筋长粗妹更舒服吧 我爱人妖色色 mm五月天影视 仓井空55伦理 男女明星亲吻做爱的电影有哪些 欧美大逼片 粉木耳 两穴 很黄很色好想撸 黄色小说乱伦姐姐 qvod校园偷拍 WWW_CHESSOURGAME_COM 激情狂干风骚高老师 被男老师拍照奸的漫画 欲妇小说 www46xxxcn 绘狗大奶子人体 毛毛片性爱做爱视频 WWW_AVXQL_COM 徐静波 魔兽世界335 十八和谐最新地址 姚双喜 孩子脾气暴躁怎么办 潘益兵新浪博客 阴毛摄影 激情爱爱色成人综合网站 妈妈的逼逼就是给儿子操的 丝足美腿性爱 欧美艺术性先锋影音 腿攥 女人的阴毛都是什么样子 女儿摸爸爸jj摸乳头 WWW_PSW_COM 黑人轮奸故事小说 WWW_258SAO_COM WWW_TSOHU_COMURLJS 日本深夜成人节目下载 崛北真希无码图 0099aaaa 三十七度二极品人体艺妓 天天花逼网 mp4xxoo 给我视频舔逼 夜夜撸美女色图亚洲色图 日本幼幼照片 日本艺术照 看3d动画a片的网站 mmm摄影图片东莞纪实 超级乱伦qvod 爆操少妇内逼网 bdcda061000018b3 操小姨骚穴图 裸体黄色性交片 baihumantoubicao 日本老师av华为网盘 益ど缜? 淫虫操动漫美女 乱伦伦理成人电影在线观看 黄蓉肉棒音影先锋 亚洲少妇门 大奶熟穴 WWW_KKAAA_NET 小说大奶老婆阿云 春药强奸大肉棒插骚穴 18avady 东京热一起撸图片 人体穴位高清大图 美女的丝袜小穴 张柏芝快播图片下载 美女被鬼搞穴 久操b网新闻 京子20歳sm身体改造肛门拳交 成认小说乱伦 狼客导航 我的可爱女友黄色 中国大大奶老太婆 欧美sese老肥熟 色kanav 一丝不挂美女做爱动太 骚姨妈成人网 成人图欧 偷情操逼图 人体艺体虎穴 ed2k艳照门陈冠希 乡村m女草逼小说 操少妇的屁眼 天天干狠狠干 乡下老夫妻扫墓坟前做爱高清偷拍 avhbocom yazhouwuwuma 万全影院在线观看1一 迅雪极品图洁 操欧美少女逼 中学屄吧 岳母乱伦电影 肥佬影音怎么看黄 92jiba 48岁人妻自拍 人与动物交网 欧美美女人体偷拍 小明看看主页永久播放 蜡笔小新1 花裙人体模特写真 强奸孕妇系列先锋播放 日韩美女黄色图片 人与动物xxxx 操逼电影种子 和波多野结衣一起演过口交的 江湖yin娘txt第二部分 男女办公室激战 自拍操六十老女人屁眼 少妇的裸体照片 爸爸插错洞吉吉 人与驴bt 五月色任 我我我xex8 幼女专区 wwshe3com 把鸡巴插入女生屁眼里的动态图片 鲁大妈黄色做爱网站 90后粉嫩馒头b 阴毛留长了好吗小说 萌芭下马 WWWPLXSWCN 操我干我种子 26uuu色酷色 所属分类日韩 幼女阴体 宾馆偷拍p 无码av电影影音下载 伦理片艺术片菅野亚梨沙 小牡蛎13部ed2k 丰乳嫩穴 成人人体色色图 女人阴口是屁股眼吗 无广告的人体艺术 女同成人狠狠插 色尼姑久久草视频 WWW53AVCOM 欧美快播性爱 少女被干影片 一夲道京东热全部电影 PRoN3oo 哥哥插我大鸡吧亚洲色图 土逼成人短视频人与狗激情 在线母女性交 会动的幼幼动漫爱爱图 骚穴内射骚逼 一色百毛片 五月慢菜种植 超大胆艺术摄影 一级全黄色片 少妇添阴自拍偷拍 韩国色人体艺网 成人毛片图 ddd42色妞妞基地 肏骚屄莲莲 yyrt5yy 日本性感美女阴部性交 bbse5在线观看 曰韩美女解禁大图 日本美女1234图片 WWW378PAPACOM 爆操大奶少妇 日本十二岁少女阴部裸体艺术图片 色吧图片快播你懂的 西川结衣百度影音 欧美性脚足交视频 夜夜撸小萝莉露逼高清图 插你妹影音先锋 www1122aqcom 淫色舅妈 亚洲欧美动漫日韩国产 艳照门无码高清照片 乱伦爱情看电影吧影音先锋 亚洲色图老女人13p图片 妹妹冈 色图操bb强奸 超成人免费视频在线 鲁大妈色播网色网 欧美人体巨乳大尺度艺术 艳鬼还魂被奸图片 日逼做爱干逼摸咪咪视频 aika黄图 亚洲学生妺大战西洋枪 赤裸羔羊接吻 群交肛交老婆屁眼故事 天天啪啪久久嫂子 干的护士嗷嗷叫50p15p 中国爱城bt 女尊男子白虎 被医生舔的好爽 bt撸撸色 啊不要舔那里不要吸有声小说 freevideocum 成人天堂av2017www9966acomnv325com 阴道检查H视频 白白色白白撸 成人在线超碰资源网 亚洲欧美丝袜自拍变态 567pp男人最爱上的网 兰州美女买阴qq号是多少 乱伦高潮大叫生殖器特大 操逼在线赌博视频 自拍偷伯乱伦小说 女淫欲网 直线与圆的方程试题 qyuletv青娱乐在线 caopotn尿尿 拷问凌辱潮吹 国内自拍mmagnet 西协美智子人体 百度热javhd 丝袜脚意淫 绿色无毒的av电影网址 激情综合网激情五月肉棒 ppt播放avi黑屏 韩国美女自拍偷拍做爱图片 群撸网magnet 欧美精品有声精品 额我也去撸苍井空 淫嫂乱伦 制服盒子 乱伦小说网址导航 明星宅男 百青青草 另类女同群交小说 色色激情开心无码影音 欧美美女图片网 美女乱伦wwwtb181com 浪妈妈电影院 动漫AV中文字幕迅雷下载链接 亚洲日日干哥哥日日妹妹 老婆和小伙干小说 超碰97人妻办公室 雪白的古典武侠 农村老头做爱视频自拍 校员春色搜狗 性暴力俱乐部 亚洲成人图片偷拍图片小说 欧美seut 情人偷拍第一页 老汉推车g8 猛插淫女骚穴 肥姥姥性交 粉嫩pao 免费大香蕉狼人干伊人久草AV网址 丝袜自拍露脸套图 狼客库 小男孩与塾女乱伦系列小说 色taotu qingjunlu3最新网 亚洲成人网站做爱小视频 成人网站狠狠撸 busx2晓晓 母子乱伦竞赛 骚女孩的禁照 公公大鸡巴太大了视频 撸撸鸡巴kk569com 南国成人网 偷拍裙底玉足 好大的奶好爽妇人 北京ktv抱起小姐狠狠操 青青草wwwxxb29com 绝色美人妖魅力百度 俄罗斯情侣系列 草草飞飞爆菊 久久女同小说 长发高中妹子宿舍自拍 荡妻快乐得公用洞 结婚偷拍10p 妞干母 成人激活网 女人力三级片 最大胆的美女生殖器人体艺术摄影 美国chengrenpian视频 激情网怡春园 a片长图搜一下 avtt一字马 WWW_K_6X9X_COM 电影一苍井空一 美岛玲子 人逼被狗插 潘号 色图偷拍白富美 yese321com 家庭乱伦之人妻 ccc36最新偷偷撸影院 嫂子在厨房 115礼包码变态秦兽交 伊人在线小泽玛利亚 WWW_KKBOSE_COM 图纸上井道是怎么表示的 五月天母子乱伦网 影音先锋最多人性交 � 我要操成人电影 色科蚪 一路向西欧美伦理电影 欧美a片家族乱伦下载 强奸岳母wwwwwww85com 爸爸在隔壁9 小白黄片 熟女多汁20p色中阁 霜姐 m625成人影院 龙腾视频网 波多野结衣裸体人体艺术 wwwshafoucom 亚洲综合图自拍欧美 黑人幼女肛交 写真视频网站免费 人狗红色录像一级带大片 有这骚逼长腿女友操了她 人体室 wwe51yycom 大帝av视频娜娜操总动员 阴布图片大全 xplay在线播放 绝美少女玩内射 wwwgegeganne 夫妻乱伦性爱 皮裤美女10p 色久久色琪琪第四色www978aaacom goo电影777 色狼窝wwwqqqq64com wwwpz599cpm 色小结 纵犬潜伏下载magnet 萌妹国产在线 艳遇传说 av成人在线视频在线超碰网 找黄色激情小说 wwwsihu184com xxootv 偷拍影音先锋电影网 老婆和小姨子们在广场上及野外肏屄 高中女生美鲍 免费大鸡巴猛插美女淫穴视频 艳照门女主角 美色www色mwin4000com 春色网激情区 www535ddcom 日本自慰游戏网 分享翘臀老婆贴吧 自拍在线视频第一页 淫妻色图网站 超碰国产偷拍视频 色妹子综合 常用的黄片 熟女炮友自拍在线视频 搜索www妈妈与儿子乱伦大杂烩 操少妇1024在线视频 动画妹影院 日本无码片百度 家庭黄色一级网 插死我吧啊啊啊好爽 淫色美女图 先锋在线成人片 国外网友偷拍自拍 婷婷中文字幕高清 www110com 被窝福利合集250集 哥哥干公公的奸淫 母子乱伦3d动画 WWW19MMCOM 类似达酷的网站 正在播放露脸熟女后入式最后直接给口爆第11370集偷拍盗摄在线视频五月色 工口成人 [欧美]国产情景剧风骚美女不穿内裤路遇色魔跟踪迷昏后捆绑 资源铯站mv950点cc 美腿丝袜32p 伦理图片亚洲 色狗电影 bbee9966com 怡红院免费视频 以前的66波波网址是 哥去射天天翘 插吧插吧视频在线播放 色和尚亚洲妹 开心鬼黄色片 大爷操影院色色影院撸撸影院宅男影院下载 动漫鬼作 媚药bl 蝌蚪窝AⅤ 亚洲乳头 成人淫荡图 图霸人体艺术模特 老师喜欢玻璃瓶做爱 第四色春色在线电影 亚洲撸撸magnet 大屁股岳母 全聚色 wwwxxoo2com 台湾AV日本 wwwssss47 家庭伦理伦乱 231avav 热片网乱伦小说 wwwnntt999com 影音先锋夜色资源网 激情小说 亚洲色图 欧美 裸体姿势艺术诱惑 脱光操井 东京天堂在线 撸一撸涩涩 44bbmm下载 八戒影院褐色影院成人电影影视 狠狠撸Av图片 极品美女深喉吞精视频观看 日韩av使劲撸撸出激情 白白色大香蕉狠狠插妹妹 成人古典乱伦小说 动漫av迅雷下载 成人摄影色图 日碰碰碰超 成人电影午夜A片 洛天依色图 下载免费的AV小电影 www99aahh 944rr 66美女人体 wwwpubb94com 护士操穴色图 A片39efcom 色一点的小说 母其弥雅小说 我狠狠操风骚丝袜嫂子 无极影院美腿丝袜 韩国电影vip 幼男幼女黄色视频网站 15p熟妇 wwwddd20com 乱伦落红视频 黄网国内 九九视频在线视频观看 cdcd22 色色的妹妹 成人动画理论片 表妹做爱大全 漂亮美眉被肛交 七夕夜在ktv把爆乳女神蝌蚪窝 撸撸管长篇连载 色爱区mp4 五色网 自拍熟女另类亚洲欧美 女将av 虐阴100种 肥逼大妈 影视软件论坛 东方AV在线狠狠撸亚州无码 AV影音先锋影院 老师花核流水 校园春色sex8小说 韩国少妇AV影院 成人小说ftp 色三八点com 高清妹妹先抠逼再让我干 国外黄色视频网址 色福利加油站 操可以播放的站街老鸡视频 我是眼镜控迷奸 wwwcao664comlist42html 超碰成人在线免费高清巨乳视频 av美女天堂下载 影视操逼的人生 乱伦电影一页 人妻熟女自慰文 黄色的乱伦 勾魂欧美av高清影院 身材不错的女友家中诱惑自拍 熟女群p网s 我在厨房插了老师不详 色你妹眯眯 www sqwuyt com 川岛和津实视频 seseav 自拍学生白虎13 X666xx人与兽 淫淫淫涩 欣赏她浑圆的屁股 色色女主播magnet 91porn三级 日本骚妇丝袜视频 搞了两个90后mm 曰逼视频播放器 汇集全球熟女12p 青青草资源啦 淫荡妹妹性奴 激情乱伦校园人妻小说 夫妻在线AV 性与爱图片 欲望丝袜妹妹 啊啊啊好舒服图片 第一社区会所文学地址 色色av一本道加勒比 wwwsek0ngge2c0m 鬼片电影全集国语高清 成人激情图片,电影mmmnn7777 风流媳妇和壮公公 青青草美女自慰视频免费观看 东方Av偷 kkxkkx 黄色淫荡书 车上干骚逼 www268hhcom 我的美腿丝袜女儿 帅哥和保姆啪啪啪wwwshuaijiaocomvideo wwwjjj85 av电影www5yycom 美女久纱野水萌MP4 幼男幼女性爱演戏漫画 淫色淫香照片 美女基情四月 青青草露脸在线视频 啪啪啪全球免费社区 wuyue天婷婷 妞干网2015版www003hhhcom susu30cm 国产另类第二视频 亚洲色图狠狠撸夜夜撸 骚色综合www68ixcom 影音在线久久草 男同在线观看手机免费 天海丽白色吊带 国产视频日韩人兽 欧美性交影院自拍偷拍情人旅馆开房视频 日你色色色色色色色 超碰国产少妇在线 酒瓶门视频在线观看 三级片黄色父女乱伦 深空部落在线观看 第4涩涩 神雕侠侣伦理片 哪个网站可以观看苍井空电影 嗯啊不要嗯不要舔作者不详 四虎影视二级 黑丝袜视频床上秀 WWWSHUANGTVNET 影音先锋偷看媳妇中文 92电影看看 成人电影xox同性 看黄色三级片哦 哒哒哒哒哒嗯嗯嗯嗯嗯嗯 蕾丝边制服诱惑mp4 色无极主页影院跳转 岛国熟女撸撸色 911vv a片无限成人卡通 www892con下载 澳门美女直播间 xf0av2info 超碰吉林 亚洲欧美偷拍制服国产 西西人体美女鲍图片 swww222dzcom 在线访问升级中 黄鳝门ftp y亚洲超碰 丁香五月激情五月狠狠干 激情小说第四页 撸丝电影一区 欧美母子乱论 bbb笫bbb笫四 亚洲制服丝袜BT 冬月枫 欧美幼teenmoⅴies兽交 姐夫我要你的大鸡巴啊嗯嗯嗯嗯啊 开心狠撸五月 鸡鸡爱逼逼av淘宝视频 在线播放成人网 强奸漂亮的人妻magnet ss111亚洲 250pp6wpin 成人A节爽片视频 色俺去 和妈妈一起乱伦九城社区 同志带颜色的漫画网址 WWWASIA4 人妻 韩国av qvod 狠撸15p qingse 肥佬影音 摸乃图片 我与母亲电影无删减版 重温阿娇艳照门无码 军事网 国模菲菲大胆人体艺术 mianfeichengrenshipin 苍井空全集云播 欧洲美女黑丝 ipad去哪网站看色图 绘狗美女主播 处女中出 广濑玲什么时候开始拍av 你有b吗大片网站 长沙天气苍井空口交 婷婷炸天鲁 偷拍明星做爱视屏 cluanlun 兽兽门色图 屄水湿屄毛 嫂子和我看毛片 ryidongwuxiengjiaoshipien 为什么人体艺术模特的阴部都是黑的 欧美金发骚女情趣内衣人体 可爱美女人体艺术 张婉婉做爱白浆都操出来了 90性交视频 日本人体合成艺术 自慰屄 视频色哥哥 新一本道qovd 插妈妈逼婷婷五月天黄色网站 色黄朝 人娇黄色小说 操b 13 p 色五月图库 911sssus主站 2007日本人妖视频 素云佳柔 日本骚女舞 和大姨子日逼之续 网抱妹av 色中色成人av社区 淫荡猫女 幼女激情做爱 wohewodefengsaoxiaoyima 影音乱轮 春暧花开性吧有你 亚洲有码 臀部上放酒瓶的女人是谁 xxx美女逼毛图 义母电影一区 拳交屄屄 第一人体艺术图 好国美女主播系列之苹果 内射护士10p 黑人操逼偷拍自拍 胖女人maopian 午夜色撸撸 ww 5252se 黑白大战15p百度 eluosiqingse 宝莲寺淫僧 人妻乱伦强奸图片 柳州艳照门12部 快播欧洲重口味 嫂子浪叫 成人无码图 动1动少妇 人本艺术图片p01040100 激情小说草裙未满18禁区 偷情主妇 苍井空美女太太 男女激情做爱的高清照片 韩国丝袜美女在家和男友大胆露穴美腿口活自拍视频 强奸人的动态图 吉吉11ff xanggangxiezigongdianyingang 丰满女人求职被我给操了 成熟女人裸体正面照片 男人可以操母狗吗 残酷美吉田月 台湾av色站 大胆西西露阴艺术 26uuu女主播朴妮唛 自拍熟女自慰 日本成人乱伦网站 国产操逼片 姐姐在家做爱自拍 筱田优无码 插入16岁美少女花径 韩国第一美女 影音先锋能用的码你懂的 WWW_SE65_COM 人体牲生活片 模特强奸电影 苍井空电影gif出处 陈佳丽大但照片 韩国情欲电影大全 美女爱爱日 哈起码萝莉幼女片 hhhhhhdpornfree 毕夏漏点 溜冰骚女 faya美女性交18p 色 逼 搔 射 最年轻漂亮苗条的大学女生骗了老板钱被老板吧小穴和人给折磨了的完整版图片 姐姐的阴蒂被我舔硬了 百度影音能打开的黄网 为什么男朋友做爱时喜欢把我插哭 哥哥干动漫图片 色姐姐姐影院 五月 性美女操 最人体大胆女艺术 人体艺术huahuagongzidaohangchengrenwang 干逼520 张筱雨做爱图片 a片合集迅雷合集 马六姐人体艺术 精品少妇被老外硬刺无码吞精 qvod 日本骚女诱惑裸体 妻子推油 草裙女大胆美女迅雷 缺金的男孩名字大全 明星织发 疾病查询 军魂 3322kk 河北省教师资格证网 毒战百度影音 黄粲扒皮 理疗有副作用吗 37tp人体艺术果果6655人体艺术开心色播色尼玛 厕所针孔偷拍屄屄尿尿 女人淫乱图 性交插b淫图 诱色天使是传销吗 www555focom 顶级电影 都有那些人体艺术网站 爱人体高清大胆裸体照 色救救综合网 av内射电影 俄罗斯色图16p 快播电影小孩操大人 汤芳2007后花园 骚屁股骚逼逼 欧美人妖射精视频搜狐视频 av免费图片免费视频 WWW388AACOM 福利搬运工6080青涩 av女美国奶子 大黑鸡巴操韩国美女 欧美女星艺术图片 东北熟女骚 性爱狠撸撸小说 www韩国骚妇 WWW991ASZYCOM 新盖影院 与姐乱伦 五月天我一晚上干了个 谷门吹 怡红院 怡春院美国分院 WWWSANFUCOM 大奶大鸡鸡的美女 婷婷大色窝深爱五月 忠义乾坤之爱子情深40 国产自拍图片区国产区小说区 亚洲色国47 黄色小说激情小说成人小说网 主人性爱竹 波多野结衣av作品图蜜桃网 杜箐箐大胆人体艺体图片 撸熟女骚 插的好狠好舒服 林柏欣性交片 插黑丝骚b 亚洲色网av天堂 性感写真视频下载 女子学校返回途中乱搞6p淫乱大派对02 9iisesese 爽歪歪电影宗合 qingchunmeinvpeike 六月天婷婷 可以用大肥佬看的色网站 操屁眼小说大全 在线视频录像 男人鸡巴艹 rentiluozhao 28揷屄 liuyan裸身图 丁香网站五一婷婷 幽人谷乱伦网 中山市色色婚纱摄影 性裸体舞蹈 美女大白奶子 光棍电影影院yy俄罗斯年青母亲 贵阳哪家药店可以买到万艾可 欧美性交片视频大全 阳具冰棒 小小淫女 干爸爸大鸡吧好棒 99smav 象数疗法 学妹开苞疼哭视频观看 杉田瞳i~淫若妻妊妇 苍井空百度影音人与动物 mp3性交故事在线播放 妇人呢屄图 成人免费m看片12 wwwav189com 美女小穴19p 很多男人都操过我的骚屄 ww爱色com 逼你干网 色东东电影网 永作由美作品下载 幼幼性爱美图 天海翼人体艺术图片 美脚ol穿上黑丝连裤袜从后面插入妃悠爱大槻 凌波芹天使注射快播 姐夫和小姨子激情视频 天天打飞机色色网 我奸淫了女同事 开心色播手机图片 手机yy哥歌网 舔舔美人足 草君社 看人体大白逼成人网 影音先锋姊姊 涩色涩香 风野舞子写真视频图 开心宝贝色播网 WWW82JGCOM 三级片玉女心经 回族女人毛阴15p 白嫩美女做爱全图片 有免费的操逼视频吗 五月色播博 快射电影 大奶淫秽图片 淫水诱惑26p 那夜插进妹妹的蜜穴 撸哥哥老女人逼 avdiguocom日本骑兵 陈冠希艳昭门图 图图bt资源库 自慰国语三级欧美 五月先锋媳妇 五月天淫荡图片 黄鳝自慰在线15p 久久久久日韩xxx 成人影片人人插人人搞 金发碧眼巨乳萝莉 吉泽明步绿色x站 有没有幼女系列 仲平一家的乱伦生活 wwwhuangsecome 陈冠希艳照门先锋下载 变态儿子强奸乱伦图 xiaogeshizonghe av手机av亚洲天堂妹妹网 大叔操幼女小说 刘嘉玲人体艺术大胆写真 亚洲援交 裸体做爱激情床戏 脱衣女奴 91pron自拍福利网 荒野嗯啊 校园色农夫 尤成人版电影下载 小女孩榨干 插姐姐奶 自拍bibi 日本另类a片 美女特工强奸小说 操妹妹天天操?1?7?1?7)天撸色妹妹 色惰快乐影院48gaocom 日本厕所偷拍总集 2929tvtvcom2929tvtvcom 骚逼色综合 假阳具扩肛自慰在线视频 千乃杏美先锋 花花公子人休艺术成人导航网 女人挨操流精图片 av黄鳝自慰小说 最新巨乳淫妻magnet miaomiav怎么进网站了 米奇影影 丰满白嫩的日本女优 阿姨的性爱漫画小说 老师2016中文在线观看wwwkan99net 性爱录像片 无敌综合色 成人动漫亚洲色图意淫强奸亚洲色图意淫强奸 做爱高潮叫床视频 黑鬼片 亚洲色图av亚洲美色图 中国处女宝鉴 后入菊花 欧美咪下载 台湾成人论坛网站 苏联群交 孙子操奶奶的小说 国内偷拍自拍调教女奴 国外黄网在线免费成人电影 波霸暴露 a片黄色片wwwavtallcom 暴肏大骚屄 逍遥社区欧美日韩 白灵人体马六人体 jzbuwsyapopcn 结婚淫荡图片 欧美缴情av影视mpppp19com a4y艳舞 www867bbconm 新标签页最大黄色网站 日本aV女优天天堂网 不用播放器的性爱网站 包射网哪里去了 徐娘露脸图 操逼性交被人操了小说 肌肉女做爱英文 自拍成人视频在线播放myiwancom 欧美老逼乱伦性爱图片 亚洲日韩黄色成人电影 81xacom韩国料理 性侵人妻小说 插了一个不该插的人 老婆的妹妹 成人有色小说 春色性吧 春色都市 春色满人间 春色书目 雪肌肤解禁樱井莉亚 樱井莉亚作品列表 樱井莉亚作品美誉 樱井莉亚床戏 樱井莉亚四部合集 小泽玛利亚09年 能用快播的h网 能搜索的h网 开心五月天 深爱 东京热色人 成人色天 酒色网 欧美黄色小说 黄色小说区 黄色小说图片电影 哪有黄色小说 桥本凉 あやみ旬果 花花电影 色姐导航 大色姐导航 搞处女电影 强奸幼稚园 日B成人网 艳门照全集 日本变态图吧 寻找一夜激情 淫荡小妹电影 做爱技巧视频 高速无需播放器 欲望之城成人社区 桃色 皇兄个个狠狂野 狠狠爽 我要干 京骚戏画 涩涩爱性 江苏卫视在线直播网 猫咪av大香蕉网 超碰978 暴乳790 韩国av先锋 人人私信 怡人网av东京热 超蓬免费上传国产视频 欧美三级大胸保姆 日韩AV大香蕉 哪里能找到4438x liusiji最新 ipz041 91福利社动 大香焦久草是易视 亚洲AV外卖 市来美保教师在线观看 男人爱爱天堂av 宫地蓝视频在线观看 醉地va 91dizhcOm xoxo欧洲 mp4 皇家Lu23 90社区福利视频 ggg373 神玛影院理伦片 后入pp 极品唯美女同视频 33333男人天堂 色播屋99 易通电影院 鸭子给富婆舔逼 舔的逼水直流清晰可见 青鱼视频自拍在线视频 人狗资源福利在线 小莹姐吃奶之汁口述全过程 邪恶gif老湿影院 全裸美女直播 - 百度 小孩日大人视频 mp4 日本乳汁私密视频 在线内射大奶小穴 在线 无码 国产自拍 丝袜 中文字幕 在线拍sss 右上角ffyybb是什么番号 日本人性交视频 91小哥佩奇在线观看 wsnmm 免费 在线 云播 欢爱 在线ab 雪本芽依 大香蕉强奸 视频偷拍自拍在线 ai福利电影 微熟女在线关看 国外性交网站 老司机网址导航 正在播放julia 香椎梨亚在线视频 国产酒店床上av 威廉王子av 2018潮喷喷水av直播视频 585看片 J\香五月 神纳花作品在线播放 bree xart 在线 haoav008 水嶋あずみ白丝 taosege 野狼aⅴ导航 骚女A片式看 在线偷怕人家 1亚欧成人小视频 哪里有不用下载的AV视频 抽插视频完整版 rhj223 中国理论电影强奸视频 l 高清美女视频欧美高 耽美粗大侵犯骑木马 狠狠干在线视频 日本少妇8p 公媳止痒 福利视频伊一 噢门国际赌场小视频 全裸美女秀磁力链接 lu7700com 福利网站懂的2018 下载大鸡巴视频资源在线播放 三级鲁鲁片 DOCP030C 亚洲女优无码影音 超熟素人在线 超碰视频123zzz b里香视频在线2白色爽 美巨乳女子校生懲姦孕汁江藤つかさ 基腐动漫性爱 女主播紫薇喷水 乳视频在线播放 永利国际福利在线 意大利啪啪啪视频 WDD-002 magnet xt urn btih cbinese home made video 有关致母亲的AV无码 白嫩36C巨乳情人扭腰摇摆 青青草做爱视频网站 动画片操逼小视频 福利视频弟150集黄可 aul player 先锋影音福利在线 波波视频性多多 成人操逼视频97 午夜高清偷拍 爱爱视频教程未 漂亮女友的胸做爱自拍 xxx日本免费在线视频 家庭乱论小说第66部分阅读 卵蛋网MIDE 国产自拍磁力合计 大相蕉伊本道 剧情版经典无码 赌博视频a 素人约啪系列在线观看 口交吃奶揉奶视频 好屌操三八 1wan8不正经的一群人在线视频做爱 李保田何晴激情视频 国产自拍性爱视频在线播放 麻生希-东京热 - 百度 sm啪啪啪视频在线观看 亚洲av做爰 污亚洲 萝莉自慰跳蛋故事 av川村真矢在线影片 先锋影视AV明步 亚洲VS天堂 好屌妞精品偷拍视频 av中文字幕在线看手机 364hu 天天骑天天干 av 在线手机电影天堂 av手机日韩在线 明日花绮罗男人装 caopren在线 美女妇科全面检查 CD1,内窥镜看子宫深处,假鸡鸡量阴道到底多深,牛逼啊 香澄遥美人教师在线播放 电影港福利 美国日本A片黄色视频 1茉莉metch 裸体avav 性爱啪啪影院 去拍摄视频在线观看 凸起乳头的诱惑 在线 狂肏空姐小说 55segui 唐朝av免费观看 760pao xfyy卡通动漫 免费h视频的app 草莓tv影院在线安装试爱 小清新影院变态seqin 乱理永家,庭大片 超碰caoporn任你操 色优优资源网 法国Av 中文字幕人妻出轨av番号 旺旺影院色 传统在线视频cao12 881vz 巨乳视频天狼影院 伦理片4438 下众之爱 ftp WWW色姐姐 万全伦理k2014 亚洲天啪 草民影院偷拍自拍无码 影音先锋371无码影院 老司机综合网大全 鲁鲁狠狠在线影院 1004色导航 东方 av 在线 XXⅩhd性亚洲 成人自拍视频福利 福利美女视频 东方亚洲av 大陆 自拍 偷拍 国产 动漫骚逼视频 大香蕉青青免费视频 赤井美月伦理电影 福利影院APP 大香蕉伊在线一本线d 戴眼罩口交猜阳具 大神夜店大山极品美女带回高级寓所阳台一直 二重生活无码 福利裸体黄色片 夫妻做爱一级录像片 性姿势高清视频 有賀遊空 国产阿姨在线自拍 美女把最大的跳蛋放进菊花里视频 午夜福利在线资源站 91prorn业余 谷露另类四虎影视 日本性爱美女 好看的华人自拍隔壁老王 萝莉学生操哭 f8国货自拍 淫色天王 东方成人正确网站 猫咪av大香蕉网站 日本娇喘 rctd 045 chloe vevrier怀孕 天堂info 平平草在线 av ,np 高h 18岁 禁止 五月色伊人综合色 vr在线播放免费人成 2018国产援交 magnet 老施影院视费x看 毛片其地 毛片播放 青楼社区黄色视频免费的不用洗内容 日本三级有码视频 91国产伦理片 自拍照片磁力 肉棒插进美女阴道资源 日本v很色视频 神马影院三级片 magnet 舔丝袜国产剧情视频在线播放 rq在线视频 yy4480wwwsss 自拍 偷拍 另类 变态 fetiahkorea md487 wwwf994 日本黄片10000部大蕉 性感美女全裸体视频 国产白领,迅雷 magnet 寂寞厂妹李伟 张倩倩 wwwbbb811ang 52我爱干免费看 1177韩漫免费官网 大积焦伊人视频135在线 5566df 4438x全国成长 日b视频过程狠狠色哥网站 琪琪韩国理论宅男电影 色偷偷资源共享 爱色影激情在线002 狠狠爱狠狠天天2017 pans福利 wm62con视频 手机激情影院 藏经阁成人 www502rr,com 内射刺激视频 免费在线观看aavv 26uuu 成人网站地址 国产自拍福利亚洲 福利深夜视频在线观看 金瓶梅视频链接 qaaahhhkk 伦理在线智源 日本小学女生光乳头视频 国产剧情精品小视频 xxxr日本 caoliu情侣自拍 2017日日爽天天干日日啪 激情成人免费视频 雷炳侠洗澡门完整版视频 日本AV操比视频 les网站h片 人人肉肉大战 凤凰av在线高清 丝袜激情在线 图片小说快播色色在线 汤姆AV影院在线 好吊妞视频人妻偷拍 白木优子番号 mp4 王者色 mp4 岛国爱情动作片卵蛋 青春网综合无码av 目本一本道波多野吉衣 jizzss av色天堂。五月 笑白小曼 magnet gav免费播放成人大片 你愿意让我操你吗 大胆二嫂和闺蜜3龙2凤5P大战真担心二嫂这单薄的身子骨受 久久青青草风吟鸟唱视频 nnuu22 bt欧美兹力连接 AV火山小黄人 情人自拍偷拍在线 黑鸡吧爆操白臼嫩嫩美女 先锋影音亚洲人妻制服乱伦资源 小视频啪啪来电话女的说他免费 新娘被艹黄色视频 小夫妻福利视频导航 小明同学和我妈妈后入 小清新影院午夜网站 性插成人理论 香i巷黄色片 性交福利91视频 迅雷eev 崩坏之人璃沙 芳露福利 高清无码视频大全 黄片在线韩国女主播福利直播视频 与0101电影网类似 日逼去在线视频 岛国少妇视频 狼窝成人视频 老溟影院 在线av短片 日本妞啪啪高清 古装福利电影院 k频道新网 美祢藤コウ在线 东方影库正确地址域名 美乳少妇动态视频 人人爱人人色 北川瞳 简介 做爱自拍偷拍27P 国产精品大片182cm车模女仆装娇艳欲滴粉木 av喝尿的片哪有 老师与学生三级视频 边打电话边给我口交,我抠她骚逼到潮 免费毛片tube sex cosplay不知火舞 吸奶子头操逼视频资源 WWW,57ppp,com 啪啪影院自拍偷拍 荡女报恩亚洲视频 神马电影自拍偷拍 天天碰视频免费视频老影院 乱伦小说专区 捆绑Sm magnet 日本人六九xxx视频 avXXX日本 ab俺去射 日韩美女网 在线刺激导航 久久影院-星魔网百度 abp561c 国产成人规频在线 2018欧美在线理论重口味 538PORCOm www,333zk 长泽雅美无码在线观看 1开心影院贝贝邪恶 色导航第四色 草莓午夜免费福利小电影 波多野结衣海边群交 草莓国产午夜视频色琪琪电影 韩国学生俊男靓女酒店骑马摇摆抽插 国内自拍直播网 被侵犯的母亲优优色影院 变态另类在线直播欧美 国产玩呦 操逼逼吃奶视频 苍井空A影线费观看百度 韩国AV 下载 强奸乱伦-第8页 色综合2 杉浦友集磁力 mp4 秘密搜查官qvod 苍老师 ftp 一本道 丝袜 天海翼 色悠悠久草 做爱性交视频福利 那种漫画小说你懂的 中文字幕rct-470在线 love大桥未久爱情电影 成人在线免m免费观看 se66 亚洲自拍 色综合 协和手机在线播放 成人aⅤ影视 成人动漫在线播放 QZ75 西瓜影音 sspd强奸系列 包臀 无码 成宫琉璃视频 ftp wuxiaorui rion视频区在线 成人福利网址 你懆操 番号onsk 高潮视频西瓜影音先锋 苍井空xun迅雷下载 20我想看脱光腚了看操逼操逼的女人 午夜福利插b剧场 8x8x视频福利 高清大尺度丝袜老师 www銆倆ih8 wwwaaa,678kblz 偷情丝袜 刘瑞琪空姐门 貂蝉肉棍棒小说 少妇抠逼图片24p下一页 深夜福利无码视频在线 女神 主播自慰 在线 黄-色性交免费视频播放 小牛棚视频导航 黄色做爱小影院 海贼王黄版视频在线观看 www,87bbee,com 大桥未久在线资源 rounailujibanannv 午夜人与兽性交福利在线7O 变态搞基网站 qiuxia手机影院同性恋 时间停止器在线观看吉吉影音 快播成人妻视频 网友自拍笫3页 台湾三级片视频 久草视频16 小早川怜子伦理 湿情影院 青青在线葡京视频 小骚娃 金瓶梅电影偷性全视频 和小女生车震自拍视频 破呙福利 国产丝袜高跟鞋无码下载 萝莉 无内 小视频 毕业生里番 艹爽啪啪啪视频 不知火舞和三个男儿公园全彩 藏花阁在线直播平台 厕所偷拍在线观看 不用下载就可以马上看超碰免费视频洗澡BB 国内自拍新世界的大门巨乳列传 国产自拍第四页 操大奶丁字裤美女做爱故事 国产自拍直播 被侵犯的女子校生不知世事的大小姐 裸体搞p视频 ttllcc 大鸡巴操b视频 少女哥哥我想看那个床震作文 大香蕉在线福利观看 超碰成人内射0视频 3agirls视频 外国乱乱网站 97超碰人妻在线视频 国产真实干妈影院 国产a片直播 赶尸艳谈在线播放 邪恶丝袜美女嗯嗯啊啊 亚洲日本大鸡巴视频 天天拍干天天射 闪电奇迹裸体 华裔女神电击视频在线观看 性交视频有哪些网站 成人快播伦理欧美图片 不一样的操淫逼视频 757h 自拍 最新 另类 nb544 1huang&#039;se动漫 正在播放爱泽花梨教室 好看的高清无码 宇都宫紫苑 红秀 青青草成人快播免费视频 大鸡巴逼逼逼片 欧美性爱大片黄 午夜影院码 保拉的诱感在线视频 好色妻降临视频在线 正在播放年轻的女邻居 蔡番号 烧熟女吧 sewujiyazhouyingyuan1 a4yy万利达首播影院官网 午夜福利视频自拍偷拍 日本强奸绑架 下载 华人自拍专区 上海罗城厕所种子 日本免费AV camporn国产自拍 激情邪恶大香蕉 印度三部曲百度网盘 jiqing伍月天小说 龙在少林国语高清优酷 美女被虐中出视频 乱伦交配视频 伦理片爆乳美女写真 鲁尔山在线你慬的大片 美国十次la视频导 青青草大猫咪 骑车的女人韩国 极品美女磁力链 强插幼洞视频 极品黑丝性感女友宾馆中慢慢调情玩弄 鸡巴用力插入小穴 精彩剧情演绎 情趣黑丝高跟美骚妇装看病勾引药店医师 病床上激烈ML爆操 无套 激情视频图片小说在线播放 吉本多香美三级 青青草熟妇视频 江疏影不雅 视频地址 Sq222 壮汉番号 日本三级喷奶视频 老板润滑嗯嗯啊 琪姐在线视频 亲亲视频在线首页 露奶子的黄色小视频 婷婷大香蕉伊人线 性激情影院 日本三级456重口味 换妻书 红楼影/院 国产自拍叫床 仔仔网今天怎么打不开 4438x全国最大成人网址 富二代大屌哥和学院女神预览视频 就快播 私人玩物玩具酱在线视频 waifu哔咔官网 正在播放 成都极品女神 汤姆影视在线视频观看 风吟鸟唱摄影师嫩模 亚州视频狠狠插大香蕉 女王俱乐部免费视频 好日日中文字幕 啪啪啪视频AV 黄色网络视频在线播放 嘿嘿lovo大香蕉在线视频 朋友胸大漂亮的E奶女友勾搭了一个多月终于在朋友出差时出租屋里操了她看她害 黄片下截连接 黑田万结花无码magnet 欧美女主播 狠狠日色格格影院 小姐和顾客链接 magnet 泰国伦理院在线观看 578sao 在线丝袜影视 日本高清无码视频自拍 偷拍商场女厕所全景磁力链接 magnet 户外免费毛片 每日更新在线观看偷拍 longteng xiaishuo 丝袜av福利 96av在线草莓免费视频 30路熟女快播在线播放 日本娇喘黄片 黄色色播站 秋霞一级特黄高清无码影院播放 ibw619 老师邪恶影院a 色妇影院 www,4438x7 14438x最新网站有哪些 sesihu 1电影天堂EEUSS 年轻小夫妻性爱视频 91大神国产自拍 KEDQUXxX 巨乳家政妇无码 magnet 莫西哥性爱 里番轮奸俱乐部 成人免费视频 A片 被玩弄的50岁熟妻 歴代豊滿巨乳大人気女優 东莞21,55实拍视频 乱情影视的兄弟网站 xxxvdynom 快播色色影院 国产在线主播 91小青蛙红杏出墙3p 男主叫佐藤女主叫千里的里番 秘杜mmsscom 南京熟妇做爱视频 韩国主播梦 波 福利 耐克真黄色录像一级片 免费视频一级AV 摸I奶乳头视频 国模白鹭 色伊人好看动漫色 白丝福利露裆部 免賛福利影院 福利在线神马51 国产无码偷拍小视频 国产出租屋偷拍链接 延禧宫电视剧全集西瓜 小视频黄网 丁香五月欧洲视频播放 正在播放国产熟女 莞式按摩服务伦理 干逼网址免费在线观看 撸网在线 亚洲野狼群AV 手机五月丁人网 a阿vvt天堂2014在线 东方影视 永久在线 东方四虎av伊人 三级纶理片 肛交乳交奶推视频 恋足足交视频92 四虎 小穴 韩日AV 好吊曰妞欧美 在线高清高速影院 日性感少妇 快播巨乳少女在线播放 李湘人体忆书照 亚洲视频夜必橹 美女伦理图片大全 欧美性交私处图 若兰神马影院 农村操逼网 黄色三级小说 影音先锋熟女淫乱 女明星无优人体 金发女郎爽射无码 就去干bb 欧美人体五月天 男人日女人下面的视频 欧洲下体艺术照 色中色色中色白毛 爆操少妇在线 www003secom 人体私拍海天翼 傅贞怡艺术照 超级淫荡的嫂子勾引我 继母裸体 巨乳shufu 美女强奸视频快播 佐佐木心音影音先锋 988性爱网 台湾色老中文网 快播电影性爱女人 办公室爱爱自拍视频 欧美兽交肛交群交口交双插 美女做僾动感图片 姐也要内射图片 91热色色色 色岛撸水妃 口暴10p 六月婷婷激情网 影音先锋亚洲尻屄 干40多岁的女人 明星合成人体艺术 操弄美女 三p美少妇3p 黄榕胆大人体艺术