Sql запрос insert into
Содержание:
- Практическое упражнение № 2:
 - SQL INSERT INTO SELECT Examples
 - Insert Into Table
 - Introduction to the MySQL INSERT statement
 - SQL References
 - SQL References
 - INSERT INTO Example
 - Insert Data SQL Server with OUTPUT INSERTED
 - INSERT INTO SELECT
 - Добавление данных. Команда Insert
 - MySQL INSERT examples
 - SQL INSERT statement – insert one row into a table
 - SQL References
 
Практическое упражнение № 2:
На основании таблицы contacts и customers, вставить в таблицу contacts всех customers, которые проживают в штате Nevada.
Oracle PL/SQL
—создаем contacts
CREATE TABLE contacts
( contact_id number(10) not null,
  last_name varchar2(50) not null,
  first_name varchar2(50) not null,
  address varchar2(50),
  city varchar2(50),
  state varchar2(20),
  zip_code varchar2(10),
  CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);
—создаем customers
CREATE TABLE customers
( customer_id number(10) not null,
  last_name varchar2(50) not null,
  first_name varchar2(50) not null,
  address varchar2(50),
  city varchar2(50),
  state varchar2(20),
  zip_code varchar2(10),
  CONSTRAINT customers_pk PRIMARY KEY (customer_id)
);
| 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  | 
 —создаем contacts CREATETABLEcontacts last_namevarchar2(50)notnull, first_namevarchar2(50)notnull, addressvarchar2(50), cityvarchar2(50), statevarchar2(20), zip_codevarchar2(10), CONSTRAINTcontacts_pkPRIMARYKEY(contact_id) CREATETABLEcustomers last_namevarchar2(50)notnull, first_namevarchar2(50)notnull, addressvarchar2(50), cityvarchar2(50), statevarchar2(20), zip_codevarchar2(10), CONSTRAINTcustomers_pkPRIMARYKEY(customer_id)  | 
Решение для практического упражнения № 2:
Следующий оператор Oracle INSERT вставит запись в таблицу customers:
Oracle PL/SQL
INSERT INTO contacts
(contact_id, last_name, first_name, address, city, state, zip_code)
SELECT customer_id,
       last_name,
       first_name,
       address,
       city,
       state,
       zip_code
  FROM customers
 WHERE state = ‘Nevada’;
| 
1 2 3 4 5 6 7 8 9 10 11  | 
 INSERTINTOcontacts SELECTcustomer_id, last_name, first_name, address, city, state, zip_code FROMcustomers WHEREstate=’Nevada’;  | 
Так как количество полей в таблицах contacts и customers одинаковы и поля перечислены в том же порядке, то вы могли бы записать решение следующим образом (хотя это, как правило, лучшая практика, перечислить весь список имен столбцов в случае изменения определения таблицы):
Oracle PL/SQL
INSERT INTO contacts
SELECT *
  FROM customers
 WHERE state = ‘Nevada’;
| 
1 2 3 4  | 
 INSERTINTOcontacts SELECT* FROMcustomers WHEREstate=’Nevada’;  | 
SQL INSERT INTO SELECT Examples
The following SQL statement copies «Suppliers» into «Customers» (the columns
that are not filled with data, will contain NULL):
Example
 INSERT INTO Customers (CustomerName,
  City, Country)
 SELECT SupplierName, City, Country FROM Suppliers;
The following SQL statement copies «Suppliers» into «Customers» (fill all
columns):
Example
  INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode,
  Country)SELECT SupplierName, ContactName, Address, City, PostalCode,
  Country FROM Suppliers;
The following SQL statement copies only the German suppliers into «Customers»:
Example
 INSERT INTO Customers (CustomerName,
  City, Country)
 SELECT SupplierName, City, Country FROM SuppliersWHERE Country=’Germany’;
Insert Into Table
To fill a table in MySQL, use the «INSERT INTO» statement.
Example
Insert a record in the «customers» table:
  var mysql = require(‘mysql’);var con = mysql.createConnection({ 
  host: «localhost»,  user: «yourusername»,  password: «yourpassword»,
    database: «mydb»
  });con.connect(function(err) {  if (err) throw err;  console.log(«Connected!»);  var sql = «INSERT INTO customers (name, address)
  VALUES (‘Company Inc’, ‘Highway 37’)»; 
  con.query(sql, function (err, result) {    if (err) throw err;    console.log(«1 record inserted»);  });});
Save the code above in a file called «demo_db_insert.js», and run the file:
Run «demo_db_insert.js»
C:\Users\Your Name>node demo_db_insert.js
Which will give you this result:
Connected!1 record inserted
Introduction to the MySQL INSERT statement
The statement allows you to insert one or more rows into a table. The following illustrates the syntax of the statement:
In this syntax,
- First, specify the table name and a list of comma-separated columns inside parentheses after the clause.
 - Then, put a comma-separated list of values of the corresponding columns inside the parentheses following the keyword.
 
The number of columns and values must be the same. In addition, the positions of columns must be corresponding with the positions of their values.
To insert multiple rows into a table using a single statement, you use the following syntax:
In this syntax, rows are separated by commas in the clause.
SQL References
SQL Keywords
  ADD
  ADD CONSTRAINT
  ALTER
  ALTER COLUMN
  ALTER TABLE
  ALL
  AND
  ANY
  AS
  ASC
  BACKUP DATABASE
  BETWEEN
  CASE
  CHECK
  COLUMN
  CONSTRAINT
  CREATE
  CREATE DATABASE
  CREATE INDEX
  CREATE OR REPLACE VIEW
  CREATE TABLE
  CREATE PROCEDURE
  CREATE UNIQUE INDEX
  CREATE VIEW
  DATABASE
  DEFAULT
  DELETE
  DESC
  DISTINCT
  DROP
  DROP COLUMN
  DROP CONSTRAINT
  DROP DATABASE
  DROP DEFAULT
  DROP INDEX
  DROP TABLE
  DROP VIEW
  EXEC
  EXISTS
  FOREIGN KEY
  FROM
  FULL OUTER JOIN
  GROUP BY
  HAVING
  IN
  INDEX
  INNER JOIN
  INSERT INTO
  INSERT INTO SELECT
  IS NULL
  IS NOT NULL
  JOIN
  LEFT JOIN
  LIKE
  LIMIT
  NOT
  NOT NULL
  OR
  ORDER BY
  OUTER JOIN
  PRIMARY KEY
  PROCEDURE
  RIGHT JOIN
  ROWNUM
  SELECT
  SELECT DISTINCT
  SELECT INTO
  SELECT TOP
  SET
  TABLE
  TOP
  TRUNCATE TABLE
  UNION
  UNION ALL
  UNIQUE
  UPDATE
  VALUES
  VIEW
  WHERE
MySQL Functions
  String Functions
  ASCII
  CHAR_LENGTH
  CHARACTER_LENGTH
  CONCAT
  CONCAT_WS
  FIELD
  FIND_IN_SET
  FORMAT
  INSERT
  INSTR
  LCASE
  LEFT
  LENGTH
  LOCATE
  LOWER
  LPAD
  LTRIM
  MID
  POSITION
  REPEAT
  REPLACE
  REVERSE
  RIGHT
  RPAD
  RTRIM
  SPACE
  STRCMP
  SUBSTR
  SUBSTRING
  SUBSTRING_INDEX
  TRIM
  UCASE
  UPPER
Numeric Functions
  ABS
  ACOS
  ASIN
  ATAN
  ATAN2
  AVG
  CEIL
  CEILING
  COS
  COT
  COUNT
  DEGREES
  DIV
  EXP
  FLOOR
  GREATEST
  LEAST
  LN
  LOG
  LOG10
  LOG2
  MAX
  MIN
  MOD
  PI
  POW
  POWER
  RADIANS
  RAND
  ROUND
  SIGN
  SIN
  SQRT
  SUM
  TAN
  TRUNCATE
Date Functions
  ADDDATE
  ADDTIME
  CURDATE
  CURRENT_DATE
  CURRENT_TIME
  CURRENT_TIMESTAMP
  CURTIME
  DATE
  DATEDIFF
  DATE_ADD
  DATE_FORMAT
  DATE_SUB
  DAY
  DAYNAME
  DAYOFMONTH
  DAYOFWEEK
  DAYOFYEAR
  EXTRACT
  FROM_DAYS
  HOUR
  LAST_DAY
  LOCALTIME
  LOCALTIMESTAMP
  MAKEDATE
  MAKETIME
  MICROSECOND
  MINUTE
  MONTH
  MONTHNAME
  NOW
  PERIOD_ADD
  PERIOD_DIFF
  QUARTER
  SECOND
  SEC_TO_TIME
  STR_TO_DATE
  SUBDATE
  SUBTIME
  SYSDATE
  TIME
  TIME_FORMAT
  TIME_TO_SEC
  TIMEDIFF
  TIMESTAMP
  TO_DAYS
  WEEK
  WEEKDAY
  WEEKOFYEAR
  YEAR
  YEARWEEK
Advanced Functions
  BIN
  BINARY
  CASE
  CAST
  COALESCE
  CONNECTION_ID
  CONV
  CONVERT
  CURRENT_USER
  DATABASE
  IF
  IFNULL
  ISNULL
  LAST_INSERT_ID
  NULLIF
  SESSION_USER
  SYSTEM_USER
  USER
  VERSION
SQL Server Functions
  String Functions
  ASCII
  CHAR
  CHARINDEX
  CONCAT
  Concat with +
  CONCAT_WS
  DATALENGTH
  DIFFERENCE
  FORMAT
  LEFT
  LEN
  LOWER
  LTRIM
  NCHAR
  PATINDEX
  QUOTENAME
  REPLACE
  REPLICATE
  REVERSE
  RIGHT
  RTRIM
  SOUNDEX
  SPACE
  STR
  STUFF
  SUBSTRING
  TRANSLATE
  TRIM
  UNICODE
  UPPER
Numeric Functions
  ABS
  ACOS
  ASIN
  ATAN
  ATN2
  AVG
  CEILING
  COUNT
  COS
  COT
  DEGREES
  EXP
  FLOOR
  LOG
  LOG10
  MAX
  MIN
  PI
  POWER
  RADIANS
  RAND
  ROUND
  SIGN
  SIN
  SQRT
  SQUARE
  SUM
  TAN
Date Functions
  CURRENT_TIMESTAMP
  DATEADD
  DATEDIFF
  DATEFROMPARTS
  DATENAME
  DATEPART
  DAY
  GETDATE
  GETUTCDATE
  ISDATE
  MONTH
  SYSDATETIME
  YEAR
Advanced Functions
  CAST
  COALESCE
  CONVERT
  CURRENT_USER
  IIF
  ISNULL
  ISNUMERIC
  NULLIF
  SESSION_USER
  SESSIONPROPERTY
  SYSTEM_USER
  USER_NAME
MS Access Functions
  String Functions
  Asc
  Chr
  Concat with &
  CurDir
  Format
  InStr
  InstrRev
  LCase
  Left
  Len
  LTrim
  Mid
  Replace
  Right
  RTrim
  Space
  Split
  Str
  StrComp
  StrConv
  StrReverse
  Trim
  UCase
Numeric Functions
  Abs
  Atn
  Avg
  Cos
  Count
  Exp
  Fix
  Format
  Int
  Max
  Min
  Randomize
  Rnd
  Round
  Sgn
  Sqr
  Sum
  Val
Date Functions
  Date
  DateAdd
  DateDiff
  DatePart
  DateSerial
  DateValue
  Day
  Format
  Hour
  Minute
  Month
  MonthName
  Now
  Second
  Time
  TimeSerial
  TimeValue
  Weekday
  WeekdayName
  Year
Other Functions
  CurrentUser
  Environ
  IsDate
  IsNull
  IsNumeric
SQL OperatorsSQL Data TypesSQL Quick Ref
SQL References
SQL Keywords
  ADD
  ADD CONSTRAINT
  ALTER
  ALTER COLUMN
  ALTER TABLE
  ALL
  AND
  ANY
  AS
  ASC
  BACKUP DATABASE
  BETWEEN
  CASE
  CHECK
  COLUMN
  CONSTRAINT
  CREATE
  CREATE DATABASE
  CREATE INDEX
  CREATE OR REPLACE VIEW
  CREATE TABLE
  CREATE PROCEDURE
  CREATE UNIQUE INDEX
  CREATE VIEW
  DATABASE
  DEFAULT
  DELETE
  DESC
  DISTINCT
  DROP
  DROP COLUMN
  DROP CONSTRAINT
  DROP DATABASE
  DROP DEFAULT
  DROP INDEX
  DROP TABLE
  DROP VIEW
  EXEC
  EXISTS
  FOREIGN KEY
  FROM
  FULL OUTER JOIN
  GROUP BY
  HAVING
  IN
  INDEX
  INNER JOIN
  INSERT INTO
  INSERT INTO SELECT
  IS NULL
  IS NOT NULL
  JOIN
  LEFT JOIN
  LIKE
  LIMIT
  NOT
  NOT NULL
  OR
  ORDER BY
  OUTER JOIN
  PRIMARY KEY
  PROCEDURE
  RIGHT JOIN
  ROWNUM
  SELECT
  SELECT DISTINCT
  SELECT INTO
  SELECT TOP
  SET
  TABLE
  TOP
  TRUNCATE TABLE
  UNION
  UNION ALL
  UNIQUE
  UPDATE
  VALUES
  VIEW
  WHERE
MySQL Functions
  String Functions
  ASCII
  CHAR_LENGTH
  CHARACTER_LENGTH
  CONCAT
  CONCAT_WS
  FIELD
  FIND_IN_SET
  FORMAT
  INSERT
  INSTR
  LCASE
  LEFT
  LENGTH
  LOCATE
  LOWER
  LPAD
  LTRIM
  MID
  POSITION
  REPEAT
  REPLACE
  REVERSE
  RIGHT
  RPAD
  RTRIM
  SPACE
  STRCMP
  SUBSTR
  SUBSTRING
  SUBSTRING_INDEX
  TRIM
  UCASE
  UPPER
Numeric Functions
  ABS
  ACOS
  ASIN
  ATAN
  ATAN2
  AVG
  CEIL
  CEILING
  COS
  COT
  COUNT
  DEGREES
  DIV
  EXP
  FLOOR
  GREATEST
  LEAST
  LN
  LOG
  LOG10
  LOG2
  MAX
  MIN
  MOD
  PI
  POW
  POWER
  RADIANS
  RAND
  ROUND
  SIGN
  SIN
  SQRT
  SUM
  TAN
  TRUNCATE
Date Functions
  ADDDATE
  ADDTIME
  CURDATE
  CURRENT_DATE
  CURRENT_TIME
  CURRENT_TIMESTAMP
  CURTIME
  DATE
  DATEDIFF
  DATE_ADD
  DATE_FORMAT
  DATE_SUB
  DAY
  DAYNAME
  DAYOFMONTH
  DAYOFWEEK
  DAYOFYEAR
  EXTRACT
  FROM_DAYS
  HOUR
  LAST_DAY
  LOCALTIME
  LOCALTIMESTAMP
  MAKEDATE
  MAKETIME
  MICROSECOND
  MINUTE
  MONTH
  MONTHNAME
  NOW
  PERIOD_ADD
  PERIOD_DIFF
  QUARTER
  SECOND
  SEC_TO_TIME
  STR_TO_DATE
  SUBDATE
  SUBTIME
  SYSDATE
  TIME
  TIME_FORMAT
  TIME_TO_SEC
  TIMEDIFF
  TIMESTAMP
  TO_DAYS
  WEEK
  WEEKDAY
  WEEKOFYEAR
  YEAR
  YEARWEEK
Advanced Functions
  BIN
  BINARY
  CASE
  CAST
  COALESCE
  CONNECTION_ID
  CONV
  CONVERT
  CURRENT_USER
  DATABASE
  IF
  IFNULL
  ISNULL
  LAST_INSERT_ID
  NULLIF
  SESSION_USER
  SYSTEM_USER
  USER
  VERSION
SQL Server Functions
  String Functions
  ASCII
  CHAR
  CHARINDEX
  CONCAT
  Concat with +
  CONCAT_WS
  DATALENGTH
  DIFFERENCE
  FORMAT
  LEFT
  LEN
  LOWER
  LTRIM
  NCHAR
  PATINDEX
  QUOTENAME
  REPLACE
  REPLICATE
  REVERSE
  RIGHT
  RTRIM
  SOUNDEX
  SPACE
  STR
  STUFF
  SUBSTRING
  TRANSLATE
  TRIM
  UNICODE
  UPPER
Numeric Functions
  ABS
  ACOS
  ASIN
  ATAN
  ATN2
  AVG
  CEILING
  COUNT
  COS
  COT
  DEGREES
  EXP
  FLOOR
  LOG
  LOG10
  MAX
  MIN
  PI
  POWER
  RADIANS
  RAND
  ROUND
  SIGN
  SIN
  SQRT
  SQUARE
  SUM
  TAN
Date Functions
  CURRENT_TIMESTAMP
  DATEADD
  DATEDIFF
  DATEFROMPARTS
  DATENAME
  DATEPART
  DAY
  GETDATE
  GETUTCDATE
  ISDATE
  MONTH
  SYSDATETIME
  YEAR
Advanced Functions
  CAST
  COALESCE
  CONVERT
  CURRENT_USER
  IIF
  ISNULL
  ISNUMERIC
  NULLIF
  SESSION_USER
  SESSIONPROPERTY
  SYSTEM_USER
  USER_NAME
MS Access Functions
  String Functions
  Asc
  Chr
  Concat with &
  CurDir
  Format
  InStr
  InstrRev
  LCase
  Left
  Len
  LTrim
  Mid
  Replace
  Right
  RTrim
  Space
  Split
  Str
  StrComp
  StrConv
  StrReverse
  Trim
  UCase
Numeric Functions
  Abs
  Atn
  Avg
  Cos
  Count
  Exp
  Fix
  Format
  Int
  Max
  Min
  Randomize
  Rnd
  Round
  Sgn
  Sqr
  Sum
  Val
Date Functions
  Date
  DateAdd
  DateDiff
  DatePart
  DateSerial
  DateValue
  Day
  Format
  Hour
  Minute
  Month
  MonthName
  Now
  Second
  Time
  TimeSerial
  TimeValue
  Weekday
  WeekdayName
  Year
Other Functions
  CurrentUser
  Environ
  IsDate
  IsNull
  IsNumeric
SQL Quick Ref
INSERT INTO Example
The following SQL statement inserts a new record in the «Customers» table:
Example
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES (‘Cardinal’, ‘Tom B. Erichsen’, ‘Skagen 21’, ‘Stavanger’, ‘4006’, ‘Norway’);
The selection from the «Customers» table will now look like this:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country | 
|---|---|---|---|---|---|---|
| 89 | White Clover Markets | Karl Jablonski | 305 — 14th Ave. S. Suite 3B | Seattle | 98128 | USA | 
| 90 | Wilman Kala | Matti Karttunen | Keskuskatu 45 | Helsinki | 21240 | Finland | 
| 91 | Wolski | Zbyszek | ul. Filtrowa 68 | Walla | 01-012 | Poland | 
| 92 | Cardinal | Tom B. Erichsen | Skagen 21 | Stavanger | 4006 | Norway | 
Did you notice that we did not insert any number into the CustomerID
field?The CustomerID column is
an auto-increment field and will be
generated automatically when a new record is inserted into the table.
Insert Data SQL Server with OUTPUT INSERTED
A bonus way we can generate data is via an existing statement. When we execute any write operation, we may output data from before or after the change to another table. Here is an example of how this looks:
| 
 1  | 
 CREATETABLE#account_ids (account_idINTNOTNULLPRIMARYKEYCLUSTERED); UPDATEaccount SETis_active=1 OUTPUTINSERTED.account_id INTO#account_ids FROMdbo.account WHEREaccount_type=’LIVE’; SELECT*FROM#account_ids; DROPTABLE#account_ids;  | 
The goal above is to update all accounts of type “LIVE” to be active. We also want to return the account_id for each account that was updated. Using OUTPUT INSERTED allows us to accomplish both tasks in a single set-based solution. The results show us which IDs were affected by the update statement:
INSERTED will contain all columns in the table as they appear after changes have been applied. Similarly, DELETED will contain the previous versions. We can mix and match these for maximum effect:
| 
 1  | 
 CREATETABLE#account_ids (account_idINTNOTNULLPRIMARYKEYCLUSTERED,is_active_previousBITNOTNULL,is_active_currentBITNOTNULL); UPDATEaccount SETis_active= OUTPUTINSERTED.account_id, DELETED.is_active, INSERTED.is_active INTO#account_ids FROMdbo.account WHEREaccount_type=’LIVE’; SELECT*FROM#account_ids; DROPTABLE#account_ids;  | 
The results show that we not only captured the account IDs, but also the previous and new values for the is_active flag. This is a huge convenience as we can use OUTPUT INSERTED in INSERT, DELETE, UPDATE, and MERGE statements to quickly pull before & after data for use in additional processing.
This is a far superior solution to iteration and/or using SCOPE_IDENTITY() and is the only easy way to capture data in this fashion with so little code. OUTPUT INSERTED is a great method for getting before & after data from DML statements. It is also useful for collecting a list of rows that were altered in a given TSQL statement, so we can take additional actions or report on them as needed.
INSERT INTO SELECT
The  command copies data
from one table and inserts it into another table.
The following SQL copies «Suppliers» into «Customers» (the columns
that are not filled with data, will contain NULL):
Example
 INSERT INTO Customers (CustomerName,
  City, Country)
 SELECT SupplierName, City, Country FROM Suppliers;
The following SQL copies «Suppliers» into «Customers» (fill all
columns):
Example
  INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode,
  Country)SELECT SupplierName, ContactName, Address, City, PostalCode,
  Country FROM Suppliers;
The following SQL copies only the German suppliers into «Customers»:
Example
 INSERT INTO Customers (CustomerName,
  City, Country)
 SELECT SupplierName, City, Country FROM SuppliersWHERE Country=’Germany’;
Добавление данных. Команда Insert
Последнее обновление: 13.07.2017
Для добавления данных применяется команда INSERT, которая имеет следующий формальный синтаксис:
INSERT имя_таблицы VALUES (значение1, значение2, ... значениеN)
Вначале идет выражение INSERT INTO, затем в скобках можно указать список столбцов через запятую, в которые надо добавлять данные, и
в конце после слова VALUES скобках перечисляют добавляемые для столбцов значения.
Например, пусть ранее была создана следующая база данных:
CREATE DATABASE productsdb; GO USE productsdb; CREATE TABLE Products ( Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL )
Добавим в нее одну строку с помощью команды INSERT:
INSERT Products VALUES ('iPhone 7', 'Apple', 5, 52000)
После удачного выполнения в SQL Server Management Studio в поле сообщений должно появиться сообщение «1 row(s) affected»:
Стоит учитывать, что значения для столбцов в скобках после ключевого слова VALUES передаются по порядку их объявления. Например, в выражении
CREATE TABLE выше можно увидеть, что первым столбцом идет Id. Но так как для него задан атрибут IDENTITY, то значение этого столбца автоматически генерируется, и его можно не указывать.
Второй столбец представляет ProductName, поэтому первое значение — строка «iPhone 7» будет передано именно этому столбцу.
Второе значение — строка «Apple» будет передана третьему столбцу Manufacturer и так далее. То есть значения передаются столбцам
следующим образом:
- 
ProductName: ‘iPhone 7’
 - 
Manufacturer: ‘Apple’
 - 
ProductCount: 5
 - 
Price: 52000
 
Также при вводе значений можно указать непосредственные столбцы, в которые будут добавляться значения:
INSERT INTO Products (ProductName, Price, Manufacturer) 
VALUES ('iPhone 6S', 41000, 'Apple')
Здесь значение указывается только для трех столбцов. Причем теперь значения передаются в порядке следования столбцов:
- 
ProductName: ‘iPhone 6S’
 - 
Manufacturer: ‘Apple’
 - 
Price: 41000
 
Для неуказанных столбцов (в данном случае ProductCount) будет добавляться значение по умолчанию, если задан атрибут DEFAULT, или
значение NULL. При этом неуказанные столбцы должны допускать значение NULL или иметь атрибут DEFAULT.
Также мы можем добавить сразу несколько строк:
INSERT INTO Products 
VALUES 
('iPhone 6', 'Apple', 3, 36000),
('Galaxy S8', 'Samsung', 2, 46000),
('Galaxy S8 Plus', 'Samsung', 1, 56000)
В данном случае в таблицу будут добавлены три строки.
Также при добавлении мы можем указать, чтобы для столбца использовалось значение по умолчанию с помощью ключевого слова DEFAULT или значение NULL:
INSERT INTO Products (ProductName, Manufacturer, ProductCount, Price)
VALUES ('Mi6', 'Xiaomi', DEFAULT, 28000)
В данном случае для столбца ProductCount будет использовано значение по умолчанию (если оно установлено, если его нет — то NULL).
Если все столбцы имеют атрибут DEFAULT, определяющий значение по умолчанию, или допускают значение NULL, то можно для всех столбцов вставить
значения по умолчанию:
INSERT INTO Products DEFAULT VALUES
Но если брать таблицу Products, то подобная команда завершится с ошибкой, так как несколько полей не имеют атрибута DEFAULT и при этом не допускают значение NULL.
НазадВперед
MySQL INSERT examples
Let’s create a new table named for practicing the statement.
1) MySQL – simple example
The following statement inserts a new row into the table:
MySQL returns the following message:
It means that one row has been inserted into the table successfully.
This query returns data from the table:
Here is the output:
In this example, we specified the values for only and columns. For other columns, MySQL uses the default values.
The column is an column. It means that MySQL generates a sequential integer whenever a row is inserted into the table.
The , , and columns use as the default value, therefore, MySQL uses to insert into these columns if you don’t specify their values in the statement.
2) MySQL – Inserting rows using default value example
If you want to insert a default value into a column, you have two ways:
- Ignore both the column name and value in the statement.
 - Specify the column name in the clause and use the keyword in the clause.
 
The following example demonstrates the second way:
In this example, we specified the column and the keyword.
Because the default value for the column is 3 as declared in the table definition:
MySQL uses the number 3 to insert into the column.
The following statement returns the contents of the table after the insert:
3) MySQL – Inserting dates into the table example
To insert a literal date value into a column, you use the following format:
In this format:
- represents a four-digit year e.g., 2018.
 - represents a two-digit month e.g., 01, 02, and 12.
 - represents a two-digit day e.g., 01, 02, 30.
 
The following statement inserts a new row to the table with the start and due date values:
The following picture shows the contents of the table after the insert:
It is possible to use expressions in the clause. For example, the following statement adds a new task using the current date for start date and due date columns:
In this example, we used the function as the values for the and columns. Note that the function is a date function that returns the current system date.
Here are the contents of the table after insert:
4) MySQL – Inserting multiple rows example
The following statement inserts three rows into the table:
In this example, each row data is specified as a list of values in the clause.
MySQL returns the following message:
It means that the three rows have been inserted successfully with no duplicates or warnings.
The table has the following data:
In this tutorial, you have learned how to use the MySQL statement to add one or more rows into a table.
- Was this tutorial helpful?
 
SQL INSERT statement – insert one row into a table
The following illustrates the statement that inserts a single row into an existing table.
| 
1 2  | 
 INSERTINTOtable(column1,column2,…) VALUES(value1,value2,…);  | 
To insert a row into a table, you need to specify three things:
- First, the table, which you want to insert a new row, in the clause.
 - Second, a comma-separated list of columns in the table surrounded by parentheses.
 - Third, a comma-separated list of values surrounded by parentheses in the clause.
 
The list of columns must have the same number of elements as the list of values, or the database engine will issue an error.
Let’s take a look at the following table:
| 
1 2  | 
 INSERTINTOshippers(companyname,phone) VALUES(‘Alliance Shippers’,’1-800-222-0451′);  | 
Two constants, and are specified in the clause. The database engine inserted them into the and columns respectively.
After executing the statement, the database server returns a message to indicate the number of affected rows. In this case, we get a message “1 row affected” informed that a new row has been inserted successfully.
Notice that we didn’t specify the column in the columns list because the column is an column, the database engine generates the next sequence for it automatically whenever a new row is inserted into the table.
To help you write less code, SQL provides a shorter form of the statement as follows:
| 
1 2  | 
 INSERTINTOtable VALUES(value1,value2,…)  | 
In this form, the list of values must have the same order as the list of columns in the table. If you use this form of the statement, you must supply values for all columns except the column.
It is good practice to use the column names in the statement to make the code easier to maintain.
The following statement has the same effect as the one above:
| 
1 2  | 
 INSERTINTOshippers VALUES(‘Alliance Shippers’,’1-800-222-0451′);  | 
SQL References
SQL Keywords
  ADD
  ADD CONSTRAINT
  ALTER
  ALTER COLUMN
  ALTER TABLE
  ALL
  AND
  ANY
  AS
  ASC
  BACKUP DATABASE
  BETWEEN
  CASE
  CHECK
  COLUMN
  CONSTRAINT
  CREATE
  CREATE DATABASE
  CREATE INDEX
  CREATE OR REPLACE VIEW
  CREATE TABLE
  CREATE PROCEDURE
  CREATE UNIQUE INDEX
  CREATE VIEW
  DATABASE
  DEFAULT
  DELETE
  DESC
  DISTINCT
  DROP
  DROP COLUMN
  DROP CONSTRAINT
  DROP DATABASE
  DROP DEFAULT
  DROP INDEX
  DROP TABLE
  DROP VIEW
  EXEC
  EXISTS
  FOREIGN KEY
  FROM
  FULL OUTER JOIN
  GROUP BY
  HAVING
  IN
  INDEX
  INNER JOIN
  INSERT INTO
  INSERT INTO SELECT
  IS NULL
  IS NOT NULL
  JOIN
  LEFT JOIN
  LIKE
  LIMIT
  NOT
  NOT NULL
  OR
  ORDER BY
  OUTER JOIN
  PRIMARY KEY
  PROCEDURE
  RIGHT JOIN
  ROWNUM
  SELECT
  SELECT DISTINCT
  SELECT INTO
  SELECT TOP
  SET
  TABLE
  TOP
  TRUNCATE TABLE
  UNION
  UNION ALL
  UNIQUE
  UPDATE
  VALUES
  VIEW
  WHERE
MySQL Functions
  String Functions
  ASCII
  CHAR_LENGTH
  CHARACTER_LENGTH
  CONCAT
  CONCAT_WS
  FIELD
  FIND_IN_SET
  FORMAT
  INSERT
  INSTR
  LCASE
  LEFT
  LENGTH
  LOCATE
  LOWER
  LPAD
  LTRIM
  MID
  POSITION
  REPEAT
  REPLACE
  REVERSE
  RIGHT
  RPAD
  RTRIM
  SPACE
  STRCMP
  SUBSTR
  SUBSTRING
  SUBSTRING_INDEX
  TRIM
  UCASE
  UPPER
Numeric Functions
  ABS
  ACOS
  ASIN
  ATAN
  ATAN2
  AVG
  CEIL
  CEILING
  COS
  COT
  COUNT
  DEGREES
  DIV
  EXP
  FLOOR
  GREATEST
  LEAST
  LN
  LOG
  LOG10
  LOG2
  MAX
  MIN
  MOD
  PI
  POW
  POWER
  RADIANS
  RAND
  ROUND
  SIGN
  SIN
  SQRT
  SUM
  TAN
  TRUNCATE
Date Functions
  ADDDATE
  ADDTIME
  CURDATE
  CURRENT_DATE
  CURRENT_TIME
  CURRENT_TIMESTAMP
  CURTIME
  DATE
  DATEDIFF
  DATE_ADD
  DATE_FORMAT
  DATE_SUB
  DAY
  DAYNAME
  DAYOFMONTH
  DAYOFWEEK
  DAYOFYEAR
  EXTRACT
  FROM_DAYS
  HOUR
  LAST_DAY
  LOCALTIME
  LOCALTIMESTAMP
  MAKEDATE
  MAKETIME
  MICROSECOND
  MINUTE
  MONTH
  MONTHNAME
  NOW
  PERIOD_ADD
  PERIOD_DIFF
  QUARTER
  SECOND
  SEC_TO_TIME
  STR_TO_DATE
  SUBDATE
  SUBTIME
  SYSDATE
  TIME
  TIME_FORMAT
  TIME_TO_SEC
  TIMEDIFF
  TIMESTAMP
  TO_DAYS
  WEEK
  WEEKDAY
  WEEKOFYEAR
  YEAR
  YEARWEEK
Advanced Functions
  BIN
  BINARY
  CASE
  CAST
  COALESCE
  CONNECTION_ID
  CONV
  CONVERT
  CURRENT_USER
  DATABASE
  IF
  IFNULL
  ISNULL
  LAST_INSERT_ID
  NULLIF
  SESSION_USER
  SYSTEM_USER
  USER
  VERSION
SQL Server Functions
  String Functions
  ASCII
  CHAR
  CHARINDEX
  CONCAT
  Concat with +
  CONCAT_WS
  DATALENGTH
  DIFFERENCE
  FORMAT
  LEFT
  LEN
  LOWER
  LTRIM
  NCHAR
  PATINDEX
  QUOTENAME
  REPLACE
  REPLICATE
  REVERSE
  RIGHT
  RTRIM
  SOUNDEX
  SPACE
  STR
  STUFF
  SUBSTRING
  TRANSLATE
  TRIM
  UNICODE
  UPPER
Numeric Functions
  ABS
  ACOS
  ASIN
  ATAN
  ATN2
  AVG
  CEILING
  COUNT
  COS
  COT
  DEGREES
  EXP
  FLOOR
  LOG
  LOG10
  MAX
  MIN
  PI
  POWER
  RADIANS
  RAND
  ROUND
  SIGN
  SIN
  SQRT
  SQUARE
  SUM
  TAN
Date Functions
  CURRENT_TIMESTAMP
  DATEADD
  DATEDIFF
  DATEFROMPARTS
  DATENAME
  DATEPART
  DAY
  GETDATE
  GETUTCDATE
  ISDATE
  MONTH
  SYSDATETIME
  YEAR
Advanced Functions
  CAST
  COALESCE
  CONVERT
  CURRENT_USER
  IIF
  ISNULL
  ISNUMERIC
  NULLIF
  SESSION_USER
  SESSIONPROPERTY
  SYSTEM_USER
  USER_NAME
MS Access Functions
  String Functions
  Asc
  Chr
  Concat with &
  CurDir
  Format
  InStr
  InstrRev
  LCase
  Left
  Len
  LTrim
  Mid
  Replace
  Right
  RTrim
  Space
  Split
  Str
  StrComp
  StrConv
  StrReverse
  Trim
  UCase
Numeric Functions
  Abs
  Atn
  Avg
  Cos
  Count
  Exp
  Fix
  Format
  Int
  Max
  Min
  Randomize
  Rnd
  Round
  Sgn
  Sqr
  Sum
  Val
Date Functions
  Date
  DateAdd
  DateDiff
  DatePart
  DateSerial
  DateValue
  Day
  Format
  Hour
  Minute
  Month
  MonthName
  Now
  Second
  Time
  TimeSerial
  TimeValue
  Weekday
  WeekdayName
  Year
Other Functions
  CurrentUser
  Environ
  IsDate
  IsNull
  IsNumeric
SQL OperatorsSQL Data TypesSQL Quick Ref