MySQL学习记录(插入+删除+演示分析)四 DML

#首先创建两个表

CREATE TABLE tb_dept(

id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(18) UNIQUE,
loc VARCHAR(18),
description VARCHAR(200)
)


CREATE TABLE tb_emp(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(18) NOT NULL,
sex VARCHAR(2) DEFAULT '男' CHECK(sex='男' OR sex='女'),
age INT CHECK (age > 18 AND age < 60),
address VARCHAR(200),
email VARCHAR(100) UNIQUE,
dept_id INT,
CONSTRAINT FOREIGN KEY tb_emp_fk (dept_id) REFERENCES tb_dept(id)

)



#查询数据必须先插入tb_dept数据,因为tb_emp有外键约束
#1.指明字段进行插入,注意字段和值数量和类型都需要匹配

#语法:INSERT INTO 表名(tb_dept) 字段名(name,loc,description) 值(VALUES) ('对应类型');
INSERT INTO tb_dept (NAME,loc,description) VALUES('开发部','广州','负责软件开发工作');


#2.如果插入的VALUES是所有字段,可以不用显式写插入的字段名,强烈不推荐,把ID指定为2时,不会影响自动增长
INSERT INTO tb_dept VALUES(2,'财务部','广州','负责财务工作');


#在插入新的数据
INSERT INTO tb_dept (NAME,loc,description) VALUES('运维部','广州','负责运维工作');




#测试AUTO_INCREMENT 
/*把"财务部"和"运维部前两个数据删掉,然后再创建一个新的数据。AUTO_INCREMENT会自动增长到4"
*/
#注意:AUTO_INCREMENT会记住曾经生成的值。





#3.一次插入多条记录 MySql特有
INSERT INTO tb_dept (NAME,loc,description)
VALUES('财务部','广州','负责财务工作'),
      ('市场部','广州','负责市场工作'),
      ('采购部','广州','负责采购工作');




#4.可以从一张表中插入数据
#创建一张表和tb_dept表的结构一样,这种方式建表,只是复制表结构,不复制约束

CREATE TABLE tb_dept2
SELECT * FROM tb_dept WHERE id = 99     #(WHERE id) 指定被复制的位置数据



#把tb_dept的数据插入(复制)到tb_dept2数据里
INSERT INTO tb_dept2(id,NAME,loc,description)
SELECT id,NAME,loc,description FROM tb_dept




#接下来插入tb_emp表
INSERT INTO tb_emp(NAME,age,address,email,dept_id)
VALUES('Tom','26','gz','tom@163.com','1'),
      ('Mary','26','gz','mary@163.com','1');
      


#更新 UPDATE
#WHERE 的时候建议使用主键或者UNIQUE,主键最好,因为和业务无关

UPDATE tb_emp SET age=26 WHERE id = 2;
#更新多项
UPDATE tb_emp SET age=26,sex='女' WHERE id = 2;




#删除 DELETE
#删除不用指明列,因为是删除一行数据

DELETE FROM tb_emp; #删除表所有数据
DELETE FROM tb_emp WHERE id = 3;   #删除指定数据
 




#截断表,DDL语言,删除所有表数据
TRUNCATE TABLE tb_emp;




#数据库机制,auto_commit,值是ture和false
#查询Mysql自动提交设置 (1自动提交,0手动提交);

SELECT @@autocommit;


#修改提交方式
SET autocommit = 1;


/*
  delete 删除数据,保留表结构,可以回滚,如果数据量大,很慢,
         回滚是因为备份了删除的数据(删除数据时有两个动作,1,删除,2.备份)
         
TRUNCATE 删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,速度相对较快
         (删除数据时有一个动作,1,删除)


    DROP 删除数据和表结构,删除速度最快(直接从内存抹去这一块数据)
*/





www.java1234.com

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值