zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    faster rcnn流程
    本质矩阵E求解及运动状态恢复
    对极几何
    仿射变换与投影变换
    SVD分解及线性最小二乘问题
    常见的网络结构
    Docker swarm 获取service的container信息
    XNginx升级记录
    sparql 查询语句快速入门
    开源音乐下载神器XMusicDownloader更新,支持歌单一键下载,支持无损音乐
  • 原文地址:https://www.cnblogs.com/D-LW/p/8944618.html
Copyright © 2011-2022 走看看