5.《MySQL必知必会》插入,更新,删除与创建

注:博客中总结《MySQL必知必会》中的知识点,第19,20,21章的核心内容;

涉及到的操作符:INSERT INTO,UPDATE, DELETE,CREATE;

书中用到的表的介绍及其脚本文件:《Mysql必知必会》中表的介绍

插入数据

1.插入完整的行

也可以省略某些列行,但是需要满足这些列定义为允许NULL值,或者表定义给出默认值;

-- 这种语法简单,但是不安全,因为高度依赖表中列的定义次序;
INSERT INTO customers
VALUES(NULL,
'Pep E. LaPew',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA',
NULL,
NULL)

-- 下面更安全,但是相对繁琐;
INSERT INTO customers(cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
VALUES('Pep E. LaPew',
'100 Main Street',
'Los Angeles',
'CA',
'90046',
'USA',
NULL,
NULL)
2.插入多个列
INSERT INTO customer
(
  cust_name,
  cust_address,
  cust_city,
  cust_state,
  cust_zip,
  cust_country
)
VALUES
(
  'Pep E. LaPew',
  '100 Main Street',
  'Los Angeles',
  'CA',
  '90046',
  'USA'
),
(
  'M. Martian',
  '42 Galaxy Way',
  'New York',
  'NY',
  '11213',
  'USA'
)
3.插入检索出的数据
INSERT INTO customer
(
  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;

更新和删除数据

1.更新数据

UPDATE和DELETE的使用要尽可能的小心,要遵循一些知道原则;

-- 不要省略WHERE,否则会改整列;
UPDATE customers
SET cust_email = 'elmer@fudd.com'
WHERE cust_id = 10005;
2.删除数据
-- 不要省略WHERE,否则会改整列;
DELETE FROM customers
WHERE cust_id = 10006;
3.删除表中所有行
-- DELETE是删除表中的行,甚至是表中所有行,而不是删除表本身;
DELETE FROM customers;

-- TRUNCATE TABLE 删除所有行,实际上删除原来的表并重新创建一个表,速度更快;
TRUNCATE TABLE customers;

创建和操纵表

1.表创建基础
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;
2.使用NULL值
-- 允许NULL值的列允许在插入行时不给出该列的值;
-- 不允许NULL值的列不接受该列没有值的行。
CREATE TABLE vendors
(
  vend_id      int      NOT NULL AUTO_INCREMENT,
  vend_name    char(50) NOT NULL ,  -- 不允许NULL
  vend_address char(50) NULL ,      -- 允许NULL
  vend_city    char(50) NULL ,
  vend_state   char(5)  NULL ,
  vend_zip     char(10) NULL ,
  vend_country char(50) NULL ,
  PRIMARY KEY (vend_id)
) ENGINE=InnoDB;
3.主键在介绍
-- 主键值必须唯一,主键可以是单列,也可以是多个列;
-- 在定义表时通过 PRIMARY KEY () 指定列;
例如:
CREATE TABLE orderitems
(
  order_num  int          NOT NULL ,
  order_item int          NOT NULL ,
  prod_id    char(10)     NOT NULL ,
  quantity   int          NOT NULL ,
  item_price decimal(8,2) NOT NULL ,
  PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB;
4.使用AUTO_INCREMENT
  cust_id       int     NOT NULL AUTO_INCREMENT,

-- AUTO_INCREMENT告诉MySQL,本列每当增加一行时自动增量。
-- 并且每行分配唯一的cust_id,从而可以作为主键;
5.指定默认值

使用DEFAULT指定;

CREATE TABLE orderitems
(
  order_num  int          NOT NULL ,
  order_item int          NOT NULL ,
  prod_id    char(10)     NOT NULL ,
  quantity   int          NOT NULL DEFAULT 1,
  item_price decimal(8,2) NOT NULL ,
  PRIMARY KEY (order_num, order_item)
) ENGINE=InnoDB;
-- MySQL不允许使用函数作为默认值,它支持常量;
6.更新表
-- 添加新的列
ALTER TABLE vendors
ADD vend_phone CHAR(20);

-- 删除刚刚添加的列
ALTER TABLE vendors
DROP COLUMN vend_phone;
7.删除表
-- 删除整个表,而不是删除其中的行;
DROP TABLE customers2
8.重命名表
RENAME TABLE customers2 TO customers;

-- 对多个表重命名
RENAME TABLE back_customers TO customers,
             back_vendors TO vendors,
             back_products TO products;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值