zoukankan      html  css  js  c++  java
  • MySQL数据操作

    联结表

    外键,为某个表的一列,包含另一个表的主键值。
    使用联结可以用多个表查询信息。

    使用完全限定列名,防止出现二义性。

    SELECT vend_name, prod_name, prod_price 
    FROM vendors, products
    WHERE vendors.venid = products.venid
    ORDER BY vend_name, prod_name;
    
    SELECT vend_name, prod_name, prod_price 
    FROM vendors INNER JOIN products
    ON vendors.venid = products.venid
    ORDER BY vend_name, prod_name;
    //两个查询语句效果一样
    
    使用表别名

    作用:缩短SQL语句,允许在单条SELECT语句中多次使用相同的表。

    SELECT cust_name, cust_contact
    FROM customers AS c, oders AS o, orderitems AS oi
    WHERE c.cust_id = o.cust_id
      AND oi.order_num = o.order_num
      AND prod_id = 'TNT2';
    
    不同类型联结

    自联结,自然联结,外部联结

    联结包含了那些在相关表中没有关联行的行,这种联结称为外部联结。

    SELECT customers.cust_id, orders.order_num
    FROM customers LEFT OUTER JOIN orders
    ON customers.cust_id = orders.cust_id;
    

    组合查询

    有两种基本情况,需要使用组合查询:

    • 在单个查询中从不同的表返回类似结构的数据
    • 对单个表执行多个查询,按单个查询返回数据
    SELECT vend_id, prod_id, prod_price
    FROM products
    WHERE prod_price <= 5
    UNION
    SELECT vend_id,prod_id, prod_price
    FROM products
    WHERE vend_id IN (1001,1002);
    
    SELECT vend_id, prod_id, prod_price
    FROM products
    WHERE prod_price <= 5
       OR vend_id IN (1001,1002);
    

    全文本搜索

    MyISAM数据引擎支持全文本搜索,InnoDB不支持全文本搜索

    使用两个函数Match()和Against()执行全文本搜索,Match()指定被搜索的列,Against()指定要使用的搜索表达式。

    SELECT note_text
    FROM productnotes
    WHERE Match(note_text) Against('rabbit')
    //会把note_text列匹配rabbit的文本打出来
    

    插入数据

    INSERT INTO table1(,,,) VALUES(,,,);
    

    没有值用NULL。

    插入多条,一个()一条

    INSERT INTO table1 VALUES(,,,),(,,,);
    

    将SELECT语句的结果插入表中,由一条INSERT语句和一条SELECT语句组成。

    INSERT INTO customers(cust_id, cust_contact,···) 
    SELECT cust_id,cust_contact,··· 
    FROM custnew;
    

    更新和删除数据

    UPDATE,更新表中特定行或表中所有行

    UPDATE customers
    SET cust_email = 'elmer@fudd.com'
    WHERE cust_id = 10005;
    

    如果UPDATE更新多行,有一行出现错误,则整个UPDATE操作被取消。

    DELETE,删除表中特定行或表中所有行

    TRUNCATE TABLE删除所有行,速度更快

    创建表

    CREATE TABLE创建表,PRIMARY KEY设置主键,ENGINE设置数据引擎。

    CREATE TABLE customers
    (
        cust_id int NOT NULL AUTO_INCREMENT,
        cust_name char(50) NOT NULL,
        PRIMARY KEY (cust_id)
    )ENGINE=InnoDB;
    

    可以创建多个列组成的主键,以逗号分隔 PRIMARY KEY(cust_id, cust_name)

    AUTO_INCREMENT,自动增量

    DEFAULT,设置默认值

    InnoDB是一个可靠的事务处理引擎,不支持全文本搜索;MEMORY功能等同于MyISAM,数据存储在内存,速度快,适合临时表;MyISAM是一个性能极高的引擎,支持全文本搜索,不支持事务处理。

    ALTER TABLE更新表

    ALTER TABLE vendors
    ADD vend_phone char(20);
    
    ALTER TABLE vendors
    DROP COLUMN vend_phone;
    

    最常用是用来定义外键

    ALTER TABLE orderitems
    ADD CONSTRANT fk_orderitems_orders
    FOREIGH KEY (order_num) REFERENCES order (order_num);
    

    删除表,DROP TABLE;

    重命名,RENAME TABLE;

  • 相关阅读:
    Python爬虫入门教程 24-100 微医挂号网医生数据抓取
    Python爬虫入门教程 23-100 石家庄链家租房数据抓取
    Python爬虫入门教程 22-100 CSDN学院课程数据抓取
    Python爬虫入门教程 21-100 网易云课堂课程数据抓取
    MySQL MGR--MGR部署
    MySQL DDL--MySQL 5.7版本Online DDL操作
    MySQL Percona Toolkit--pt-osc与online DDL选择
    MySQL Percona Toolkit--pt-osc重点参数
    MySQL Percona Toolkit--pt-osc执行SQL命令
    MySQL Percona Toolkit--pt-osc学习
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12405547.html
Copyright © 2011-2022 走看看