张春 发表于 2024-11-20 11:54:11

[mysql]mysql的DML数据操作语言增编削,以及新特性盘算列,阿里巴巴开辟手册m

1DML数据操作语言,增加删除改数据
插入数据INSERT

插入添加数据,两种方法
方式1:VALUES添加数据

#准备工作
USE atguigudb;
CREATE TABLE IF NOT EXISTS emp1(
id INT,
`name` VARCHAR(15),
hire_data DATE,
salary DOUBLE(10,2));
SELECT * FROM emp1
https://i-blog.csdnimg.cn/direct/a5ad4359e06e4728a009f2b1f244c212.png
INSERT INTO emp1
VALUES (1,'tom','2000-12-21',3400)
https://i-blog.csdnimg.cn/direct/4c6677d275cb445e95c73dfde3d7a6ae.png
#如果没有声明字段,就必须按照表的字段的先后序次添加,不能瞎搅
这个方法好不好呢,当然是不好的,我们必须清楚知道表的字段内容.
所以我们可以再表名后面用括号声明字段
INSERT INTO emp1(id,`name`,hire_data,salary)#这里我们就可以添加一个括号声明字段
VALUES (1,'tom','2000-12-21',3400)
https://i-blog.csdnimg.cn/direct/4af7b86a437c467aa0d73be76a78b0f2.png
说明:没有举行赋值的字段的值为null,如果有约束大概就会堕落
如何插入多条记录:
INSERT INTO emp1(id,NAME ,salary)
VALUES (2,'tom2',34000),(3,'toem2',34000)#我们可以把我们要插入的数据用,隔开,这样服从比用一对INSERT服从会高不少
#方式2将查询效果插入到表中

INSERT INTO emp1(id,NAME ,salary)
SELECT employee_id,last_name,salary FROM employees WHERE department_id in (20,30)#字段一定要和表一一对应
https://i-blog.csdnimg.cn/direct/39e0ddb4e97348f28f45fcab02c26d39.png  https://i-blog.csdnimg.cn/direct/ddb6ec06424041df9a731febab601fe3.png  https://i-blog.csdnimg.cn/direct/0a2dc32b0e434c9b8992b77d8497a8d6.png
我们发现范例和我们的表的范例是不太一致,如果把小的范围放到大的范围是可以的,但是如果大的范围插入小的范围是有大概报错的.如果要用这个方法去添加这个范围和长度一定要先看一下,添加的表的数据范围一定要小于我们表的范围.是否堕落,重要是看是否出现太长的值
还有就是VALUES关键词是可以写成VALUE的不影响,但是VALUES是标准写法
更新数据(修改数据)UPDATE

UPDATE….SET …..WHERE
我们希望把id等于5的hiredate改成当前的日期.
我们一般都会有WHERE的条件,因为如果不举行条件限制,那么字段全部的值都会被调整为当前的日期,或其他值
UPDATE emp1 SET hire_date=curdate().WHERE id=1
https://i-blog.csdnimg.cn/direct/e59f303949524493ab56d649cfc1631e.png
是可以实现批量修改数据的.我们要改哪些数据呢,看WHERE就行
#同时修改一条数据的多个字段
UPDATE emp1 SET hire_data=CURDATE(),salary=5000 WHERE id=3
https://i-blog.csdnimg.cn/direct/a68deef8320243e88096d4b38754ea42.png
#同时修改一条数据的多个字段
修改名字包罗’a’的工作+100
UPDATE emp1 SET salary=salary+100 WHERE id like ‘’
https://i-blog.csdnimg.cn/direct/91aa421d10f34c14880f66cf38ed51b3.png
修改数据时大概会存在不成功的环境的,(大概由于约束的影响造成的)
好比我们约束要求部门必须存在部门表中,如果部门没有100那么就会失败.
#删除数据只能一条一条的删DELECT FROM…… WHERE
DELETE FROM emp1 WHERE ID=1
https://i-blog.csdnimg.cn/direct/8b359c65880149d1a2eb9ab1c71b5ba7.png
删除数据时也大概会存在不成功的环境的,(也大概由于约束的影响造成的)
好比我们要删除50号部门,但是我们50号部门还有员工,我们约束员工是必须在部门表里有50号部门.那么除非部门里的员工都拆了,才能瞒住我们的外键约束.
小结:DML操作默认环境喜好执行后会自动提交数据,如果希望执行之后不自动提交数据,需要使用SET autocommit=FALSE
使用频率上DML好坏常频仍的,好比我们删除购物车的数据,那么久要DELECTE添加就要INSERT,查询的就更多了
mysql8.0的新特性,盘算列

盘算列就是根据其他列盘算得来,那么就叫盘算列好比a列的值是1b列的值是2,c列为a+b,c的值就是a+b..好比我们sql查询的时候要对10万条记录的6个字段举行盘算大概毗连,每条记录都要盘算之后才能得到,因为要临时运算,所以效果就会比较复杂.那么我们如果有盘算列就可以直接查询列.
我们可以造表的时候就添加我们的盘算列.
CREATE TABLE test1(
A int,
B int,
C int GENERATED ALWAYS AS (a+b) VIRTUAL#字段c就是我们的盘算列
)#这里可以不添加GENERATED ALWAYS,C int  (a+b) VIRTUAL,也可行,virtual代表及时盘算,不物理存储在数据库中
#我们再插入一个数据
INSERT INTO test1(a,b)
VALUES(1,2)
https://i-blog.csdnimg.cn/direct/79719d18ae8b48a887e0e1cba59a3087.png
我们可以发现c自动就有值了
我们来修改一下A和B的值
UPDATE test1 SET a=5,b=6 WHERE A=1
SELECT * FROM test1
https://i-blog.csdnimg.cn/direct/b5a406d833c245dabbd76070fbfa9e7e.png
这是一个非常好的特性,大家就可以在工作环境中使用了.
阿里巴巴开辟手册内容拓展:

mysql字段定名规范

1(强制)表名和字段名必须用小写字母和数字,禁止出现数字开头,禁止两个下划线中间只出现数字,数据库中字段名的修改代价很大,不能举行预发布,所以字段名需要慎重考虑: https://i-blog.csdnimg.cn/direct/669dba96b0b84337a34a5fa760879e6a.png
2(强制)禁止使用保留字(关键词,函数名)好比desc,range,match,delayed等
3(强制)表必须有3个字段:id;gmt_create,gmt_modified,第一个是主键id,范例为BIGINT UNSIGNED,单表时自增,步长为1. gmt_create,gmt_modified,都是DATETIME范例,前者是创建时间,自动添加,后者更新时被动添加
4(保举)表的定名最好是遵循”业务名称_表的应用”,
ALIPAY_test.for
5(保举)库名与应用名只管一致..
(参考)合适的字符储存长度,不但节流数据库表空间,(这个好明白,短的空间肯定少,储存空间也小),节流索引储存,更告急的是提升检索速率.(数据页内存只能加载16k,可以存放的数量是和你储存的大小有关系的,所以要注意这一点,)
无符号值可以避免误存负数,扩大了表示范围
https://i-blog.csdnimg.cn/direct/190ba202697447319522441e755d9407.png
如何明白清空表.删除表需要谨慎:

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: [mysql]mysql的DML数据操作语言增编削,以及新特性盘算列,阿里巴巴开辟手册m