MySQL之day3
-
数据的插入
- 插入一行(可以 省略 列名) 且要求 行列数 严格一致
插入格式: insert into <表名> (列,...) values (值,...)
- View Code
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 Waings: 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 DML1commit / rollback ;
-
-
作者:找工作好爽啊哈哈哈呜
来源链接:https://www.cnblogs.com/liuyuanq/p/11141729.html
版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。
2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。