MySQL学习笔记17-19

十七、插入数据

1、 数据插入

关键词:INSERT

插入可以用以下几种方法使用:

  • 插入完整的行
  • 插入行的一部分
  • 插入多行;
  • 插入某些查询的结果

2、 插入完整行

要求指定表名和被插入到新行中的值

例如:INSERT INTO customers

      VALUES(NULL,

‘Pep E. LaPew’,

‘100 Main Street’,

‘Los Angeles’,

‘CA’,

‘90046’,

‘USA’,

NULL,

NULL);

       此例子插入一个新客户到表customers中。对每个列必须提供一个值,某列没有值则要用NULL代替。这种语法很简单但不安全因为它高度依赖表中列的定义顺序,还依赖于其次序容易获得的信息。

       编写INSERT语句的更安全的方法如下:

           INSERT INTO customers(cust_name,

                   cust_address,

                   cust_city,

                   cust_state,

                   cust_zip,

                   cust_country,

                   cust_contact,

                   cust_eamil)

                VALUES(‘Pep E. LaPew’,

‘100 Main Street’,

‘Los Angeles’,

‘CA’,

‘90046’,

‘USA’,

NULL,

NULL);

          VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序

3、 插入多个行

可以使用多条INSERT语句,甚至一次提交它们,每条语句用一个分号结束

例如:INSERT INTO customers(cust_name,

cust_address,

cust_city,

cust_state,

cust_zip,

cust_country)

                        VALUES(‘Pep E. LaPew’,

‘100 Main Street’,

‘Los Angeles’,

‘CA’,

‘90046’,

‘USA’);

                    INSERT INTO customers(cust_name,

cust_address,

cust_city,

cust_state,

cust_zip,

cust_country)

                         VALUES(‘M. Martian’,

’42 Galaxy Way’,

‘New York’,

‘NY’,

‘11213’,

‘USA’);

或者,只要每条INSERT语句中的列名(和次序)相同,可以如下组合各语句:

           INSERT INTO customers(cust_name,

cust_address,

cust_city,

cust_state,

cust_zip,

cust_country)

                 VLAUES(

‘Pep E. LaPew’,

‘100 Main Street’,

‘Los Angeles’,

‘CA’,

‘90046’,

‘USA’),

(

‘M. Martian’,

’42 Galaxy Way’,

‘New York’,

‘NY’,

‘11213’,

‘USA’);

4、 插入检索出的数据

利用INSERT将一条SELECT语句的结果插入表中。这就是INSERT SELECT语句

例如:INSERT INTO customers(cust_id,

cust_contact,

cust_email,

cust_name,

cust_address,

cust_city,

cust_state,

cust_zip,

cust_country)

                   SELECT cust_id,

                       cust_contact,

                       cust_email,

                       cust_name,

                       cust_address,

                       cust_city,

                       cust_state,

                       cust_zip,

                       cust_country

                    FROM custnew;

INSERT SELECT 中SELECT语句可包含WHERE子句以过滤插入的数据。

十八、更新和删除数据

1、 更新数据

关键字:UPDATE

有两种方式使用UODATE:

  • 更新表中特定行;
  • 更新表中所有行。

基本的UODATE语句由三部分组成:

  • 要更新的表
  • 列名和他们的新值;
  • 确定要更新行的过滤条件

例如:更新客户10005的电子邮件地址

UPDATE customers

SET cust_email=’elmer@fudd.com’

WHERE cust_id = 10005;

UPDATE语句总是以要更新的表的名字开始。SET命令用来将新值赋给被更新的列。UPDATE语句以WHERE子句结束,它告诉MySQL更新哪一行。

更新多个列时只需要单个SET命令,每个“列=值”对之间用逗号隔开(最后一列之后不用逗号)

例如:更新客户10005的电子邮件和姓名

UPDATE customers

SET cust_email = ‘elmer@fuss.com’,

Cust_name = ‘The Fudds’

       WHERE cust_id = 10005;

2、 删除数据

关键字:DELETE

用两种方式使用DELETE:

  • 从表中删除特定的行;
  • 从表中删除所有行

例如:从customers表中删除一行:

   DELETE FROM customers

   WHERE cust_id = 10006;

如果省略WHERE子句,它将删除表中每个客户

3、 更新和删除的指导原则

-除非确实打算更新和删除每一行,否则绝对不要使用不带WHERE子句的UPDATE和DELETE语句

-保证每个表都有主键,尽可能像WHERE子句那样使用它

-在对UPDATE或DELETE语句使用WHERE子句前,应该先用SELECT进行测试,保证它过滤的是正确的记录,以防编写的WHERE子句不正确

-使用强制实施引用完整性的数据库

十九、创建和操纵表

1、 创建表

一般有两种创建表的方式:

  • 使用具有交互式创建和管理表的工具
  • 表也可以直接用MySQL语句操纵

关键词:CREATE TABLE

为利用CREATE TABLE创建表,必须给出下列信息:

  • 新表的名字,在关键字CREATE TABLE之后给出。
  • 表列的名字和定义,用逗号隔开

例如:创建customers表:

 CREATE TABLE customers

(

cust_id        int  NOT NULL AUTO_INCREMENT,

cust_name     char(50)  NOT NULL,

cust_address   char(50)  NULL,

cust_city       char(50)  NULL,

cust_state      char(5)   NULL,

cust_zip        char(10)  NULL,

cust_country    char(50)  NULL,

cust_contact    char(50)  NULL,

cust_email      char(255) NULL,

PRIMARY_KEY (cust_id)

) ENGINE=InnoDB;

NULL值就是没有值或缺值。允许NULL值的列也允许在插入行时不给出该列的值。不允许NULL值的列不接受该列没有值的行。

主键必须是唯一的。如果使用多个列作为主键,应以逗号分隔的列表给出各列名:

PRIMARY_KEY(order_num, order_item);

AUTO_INCREMENT的作用:AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。每次执行一个INSERT操作时,MySQL自动对该列增量,给该列赋予下一个可用的值。每个表只允许一个AUTO_INCREMENT列,而且它必须被索引。

如果在插入行时没有给出值,MySQL允许指定此时使用的默认值。默认值用CREATE TABLE语句的列定义中的DEFAULT关键字指定:

quantity int NOT NULL DEFAULT 1,

2、 更新表

关键字:ALTER TABLE

使用方法:

-在ALTER TABLE之后给出要更改的表名

-所做更改的列表。

例如:给表添加一个列

 ALTER TABLE vendors

ADD vend_phone CHAR(20);

删除刚刚添加的列,可以这样做:

ALTER  TABLE vendors

DROP COLUMN vend_phone;

3、 删除表

删除表(删除整个表而不是其内容)非常简单,使用DROP TABLE语句即可

例如: DROP TABLE customers;

4、 重命名表

关键字:RENAME TABLE

例如:RENAME TABLE backup_customers TO customers,

                    backup_vendors TO vendors,

                    backup_products TO products;

原文地址:https://www.cnblogs.com/D-LW/p/8944618.html