Mysql极简笔记(3)---数据增删改操作

一、增操作

1. 增加数据库及表

CREATE DATABASE IF NOT EXISTS crashcourse;					-- 创建数据库,若存在则不创建

USE crashcourse;											-- 使用数据库crashcourse
customers
CREATE TABLE IF NOT EXISTS customers 						-- 在crashcourse数据库中创建表,并定义列属性
 (
 	cust_id			int			NOT NULL	AUTO_INCREMENT,	-- SELECT last_insert_id()返回
 															-- 最后那个auto_increment的值
 	cust_name		char(50)	NOT NULL,					-- 见范例简述
 	cust_address	char(50)	NOT NULL	DEFAULT ‘china’,-- 见范例简述(含默认值,且只可为常量,字符串要有引号)
 	PRIMARY KEY 	(cust_id)								-- 定义主键,后面没逗号
 ) ENGINE=InnoDB;											-- 引擎指定

注意:

  1. NULL是空,不是0,不是空格,是未填
  2. 此处涉及到数据类型,参见菜鸟教程
  3. 存在组合主键PRIMARY KEY (order_num,order_item),只要其组合唯一,就可以作为主键
  4. 引擎:不同的引擎有不同的优势;类别: 事物处理引擎InnoDB; 临时表引擎:MEMORY;  全文本搜索引擎:MYISAM

2. 增加列、行

ALTER TABLE customers 									-- 新增cust_phone列,尽量不要用,创建表时规划好
ADD cust_phone char(11) AFTER cust_name;				-- 可由FIRST或者不写(默认追加在尾部)替换,表示列位置
				 
INSERT INTO customers (cust_name,cust_address)			-- 插入多行数据,手动填充表数据,未填数据采用默认值
VALUES													-- 列可不按顺序,但列出的列名,必须配值
('chuck','东北')('peter','西方'),('lily','南方');			-- 注意整条语句的逗号和字符串的分号

注意:

  1. 用语句SELECT * FROM customers;查看结果,*为通配符
  2. 日期的增加:若数据类型为DATE时,则values(‘2020-03-04’),(‘2020.03.04’)都可以

3. 增加外键

属性:外键需选取本表(子表)一列,如同一个快捷方式连接到另一个表(父表)上的一列,系统会从子表拿出数据跟父表那一列做比对,若父表中不存在,则根据约束做相应动作,子表的那一列就是外键
原则:父表对应的那一列需满足取值唯一,二者数据类型要一致

方法1:适用于在创建表时就添加外键约束
CREATE TABLE IF NOT EXISTS orders
 (
 	order_num		INT			NOT NULL	AUTO_INCREMENT,	
 	cust_id			INT			NOT NULL,				
 	order_date		DATE		NOT NULL,				-- 日期参见前一节
 	PRIMARY KEY(order_num),
 	FOREIGN KEY(cust_id) REFERENCES customers(cust_id)	-- 此句为定义外键			
 ) ENGINE=InnoDB;			

方法2:适用于后添加外键约束
ALTER TABLE orders
ADD CONSTRAINT fk_orders_customers					-- 添加insert约束,约束名fk_orders_customers
FOREIGN KEY(cust_id) REFERENCES customers(cust_id);	-- 本表(子表)cust_id列------->customers表(父表)cust_id列

注意:

  1. fk_orders_customers为用户命名,此处“fk_子表_父表”,在可视化MySQL客户端里会显示成fk_orders_customers :orders(cust_id)–customers(cust_id),此约束constraint表示在子表orders(cust_id)插入数据时,若父表customers(cust_id)没有,则插入失败(还有其他约束类型)
  2. 增加后,DESC customers;显示KEY栏有MUL标识,外键仅在InnoDB引擎有效

二、 删操作

DROP DATABASE crashcourse;							-- 删除数据库
DROP TABLE customers;								-- 删除表	
ALTER TABLE customers DROP cust_phone;				-- 删除列
DELETE FROM table_name [where语句];					-- 删除行,若无where语句,则删除全部行
ALTER TABLE orderitems DROP FOREIGN KEY prod_id;	-- 删除外键约束

注意:

  1. 用语句SELECT * FROM customers;查看结果,*为通配符

三、 改操作

RENAME TABLE customers TO new_customers;					  		  -- 表重命名

ALTER TABLE customers MODIFY cust_phone INT NOT NULL DEFAULT 100;	  -- 修改列类型、是否可为空和默认值

UPDATE customers SET cust_name=‘Lucy’, cust_address='USA' [where语句]; -- 修改指定行数据,where筛选定位行(必填)

注意:

  1. where语句筛选必须慎重,否则就全表更新了
  2. 用语句SELECT * FROM customers;查看结果,*为通配符
  3. 数据库重命名:新建空数据库,备份老数据库表,还原在新数据库内(巨麻烦,起名需谨慎)

上一篇:Mysql极简笔记(2)—范例简述
下一篇:Mysql极简笔记(4)—数据查询操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值