-
数据的插入
- 插入一行(可以 省略 列名) 且要求 行列数 严格一致
插入格式: insert into <表名> (列,...) values (值,...)
-
mysql> insert into product values ('0009','电视机','家具',4000,3000,'2019-07-04',NULL); Query OK, 1 row affected (1.82 sec) mysql> select * from product ; +------------+--------------+--------------+------------+----------------+-------------+------+ | product_id | product_name | product_type | sale_price | purchase_price | regist_date | co | +------------+--------------+--------------+------------+----------------+-------------+------+ | 0001 | T恤 | 衣服 | 1000 | 500 | 2009-09-20 | NULL | | 0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 | NULL | | 0003 | 运行T恤 | 衣服 | 4000 | 2800 | NULL | NULL | | 0004 | 菜刀 | 厨房用品 | 3000 | 2800 | 2009-09-20 | NULL | | 0005 | 高压锅 | 厨房用品 | 6800 | 5000 | 2009-01-15 | NULL | | 0006 | 叉子 | 厨房用品 | 500 | NULL | 2009-09-20 | NULL | | 0007 | 砧板 | 厨房用品 | 880 | 790 | 2008-04-28 | NULL | | 0008 | 圆珠笔 | 办公用品 | 100 | NULL | 2009-11-11 | NULL | | 0009 | 电视机 | 家具 | 4000 | 3000 | 2019-07-04 | NULL | +------------+--------------+--------------+------------+----------------+-------------+------+ 9 rows in set (0.00 sec)
- 插入 null 要不能有 not null 数据类型格式 限制
- 插入 主键相同时 报错
mysql> insert into product values ('0009','电视机','家具',4000,3000,'2019-07-08',NULL); ERROR 1062 (23000): Duplicate entry '0009' for key 'PRIMARY'
- 省略 列名 时 会自动设定为该列的默认值 (默认值 会在 创建table 时 设置 ), 没有默认值设为 null , 且要 行列 数 严格一致
1 mysql> insert into product (product_id , product_name , product_type , sale_price , regist_date,co) values ('0010','电视机2','家具',40000,'2019-07-05',NULL); 2 Query OK, 1 row affected (0.11 sec)
1 mysql> insert into product (product_id , product_name , product_type , sale_price , regist_date,co) values ('0011','电视机2','家具',40000,444,'2019-07-05',NULL); 2 ERROR 1136 (21S01): Column count doesn't match value count at row 1 -- 行列数不一致
1 mysql> insert into product (product_id,product_type , sale_price , regist_date,co) values ('0020','电视机2',40000,'2019-07-05',NULL); 2 ERROR 1364 (HY000): Field 'product_name' doesn't have a default value 3 mysql> select * from product; 4 +------------+--------------+--------------+------------+----------------+-------------+------+ 5 | product_id | product_name | product_type | sale_price | purchase_price | regist_date | co | 6 +------------+--------------+--------------+------------+----------------+-------------+------+ 7 | 0001 | T恤 | 衣服 | 1000 | 500 | 2009-09-20 | NULL | 8 | 0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 | NULL | 9 | 0003 | 运行T恤 | 衣服 | 4000 | 2800 | NULL | NULL | 10 | 0004 | 菜刀 | 厨房用品 | 3000 | 2800 | 2009-09-20 | NULL | 11 | 0005 | 高压锅 | 厨房用品 | 6800 | 5000 | 2009-01-15 | NULL | 12 | 0006 | 叉子 | 厨房用品 | 500 | NULL | 2009-09-20 | NULL | 13 | 0007 | 砧板 | 厨房用品 | 880 | 790 | 2008-04-28 | NULL | 14 | 0008 | 圆珠笔 | 办公用品 | 100 | NULL | 2009-11-11 | NULL | 15 | 0009 | 电视机 | 家具 | 4000 | 3000 | 2019-07-04 | NULL | 16 | 0010 | 电视机2 | 家具 | 40000 | NULL | 2019-07-05 | NULL | 17 +------------+--------------+--------------+------------+----------------+-------------+------+ 18 10 rows in set (0.00 sec) 19 20 mysql>
我想 更新 列定义 ,发现不行, 所以要在最开始就要 定义好数据类型, 默认值.
mysql> alter table product add column sale_price integer default 0; ERROR 1060 (42S21): Duplicate column name 'sale_price' --重复定义列
- 从其他表中复制数据 利用 select 语句 嵌入 insert 语句 , 还可以 使用 聚合函数在select中
insert into productCOPY_name (列名 ,...) select <列名>, ... from <源table>
- 插入一行(可以 省略 列名) 且要求 行列数 严格一致
-
数据的删除 ----删除操作最好先备份
- drop table <table_name> 语句 --会将表格完全删除即丢弃
- delete from <table_name> 语句 --会留下表 ,即容器, 只删除全部数据
- 可以 使用 where <条件> 筛选 只删除部分
-
数据的更新
- update <表名>
set <列名> = <条件>;
where <条件>; ---更新部分数据行 的搜索型 update
2. 清空为 null 只限制于 未设置 not null 的列
3. 可以在 set 中使用 算术运算符
1 mysql> update product 2 -> set sale_price = sale_price*10, purchase_price = purchase_price/2 --MySQL 只可以使用这种格式 3 -> where product_type='厨房用品'; 4 Query OK, 4 rows affected (0.14 sec) 5 Rows matched: 4 Changed: 4 Warnings: 0 6 7 mysql> select * from product; 8 +------------+--------------+--------------+------------+----------------+-------------+------+ 9 | product_id | product_name | product_type | sale_price | purchase_price | regist_date | co | 10 +------------+--------------+--------------+------------+----------------+-------------+------+ 11 | 0001 | T恤 | 衣服 | 1000 | 500 | 2009-09-20 | NULL | 12 | 0002 | 打孔器 | 办公用品 | 500 | 320 | 2009-09-11 | NULL | 13 | 0003 | 运行T恤 | 衣服 | 4000 | 2800 | NULL | NULL | 14 | 0004 | 菜刀 | 厨房用品 | 30000 | 1400 | 2009-09-20 | NULL | 15 | 0005 | 高压锅 | 厨房用品 | 68000 | 2500 | 2009-01-15 | NULL | 16 | 0006 | 叉子 | 厨房用品 | 5000 | NULL | 2009-09-20 | NULL | 17 | 0007 | 砧板 | 厨房用品 | 8800 | 395 | 2008-04-28 | NULL | 18 | 0008 | 圆珠笔 | 办公用品 | 100 | NULL | 2009-11-11 | NULL | 19 | 0009 | 电视机 | 家具 | 4000 | 3000 | 2019-07-04 | NULL | 20 | 0010 | 电视机2 | 家具 | 40000 | NULL | 2019-07-05 | NULL | 21 | 0020 | 电视机4 | 家具 | NULL | 40001 | 2019-07-05 | NULL | 22 +------------+--------------+--------------+------------+----------------+-------------+------+ 23 11 rows in set (0.00 sec)
-
事务
-
commit 提交处理
- rollback 取消处理
start transaction ; DML DML1 commit / rollback ;
-
-