万兴脑图导图社区 数据操纵语言
UPDATE 表名 SET 列名1=值1, 列名2=值2:表格Student中所有行的列Email的值都会被改为“Jack@234.com”。
编辑于2021-12-22 23:03:46数据【操纵】语言 DML Data Manipulation Language
负责对数据库对象运行数据访问工作的指令集
增、删、改
SELECT * FROM 表名;
Empty set (0.00 sec)
CREATE TABLE User(
-> Id int PRIMARY KEY NOT NULL AUTO_INCREMENT,
-> User_name varchar(20) NOT NULL,
-> password char(32) NOT NULL,
-> Email varchar(50) NOT NULL,
-> Mobile BIGINT(11) NOT NULL,
-> Fee DECIMAL(10,2) default 0.00 NOT NULL,
-> Age tinyint unsigned not null
-> );
Unsigned 无符号的 使用方法,放在iId 和Fee 这里不咋好使
INSERT INTO
语法
单行
INSERT INTO 表名 (column1, column2, column3,...) VALUES (value1, value2, value3, ...);
输入的数据类型和值要一一对应
没写Id
其它6个列全有
INSERT INTO User(user_name,Password,Email,Mobile,Fee,Age) VALUES('Jack','123456','Jack@234.com',18612252687,121.22,23);
可以只輸入几个特定的列名
没成功
INSERT INTO User(Id,User_name,Email,Password) VALUES(3,'Xiaoming','Xiaoming@123.com','235678');
报把后面的补全
Field 'Mobile' doesn't have a default value
少一字段(数据类型可以为NULL)可以插进去
INSERT INTO Student2 (Id,User_name,Password,Email,Mobile,Fee,Payment) VALUES(16,'SHIBO','1335','shibo@126.com','13909888990',0.1,0.2);
数据类型和数值不加'',字符串加''
INSERT INTO 表名 VALUES (value1, value2, value3...);
不输入”数据类型“,默认每行数值都必需要按照表的栏位依序輸入
多行
INSERT INTO 表名 VALUES (value1_1, value2_2, value3_3,···), (value2_1, value2_2, value2_3,···), (value3_1, value3_2, value3_3,···);
"字串值" 需要用單引號 '' 包住,否則會出現錯誤
從其它的表中(同一个database)取得資料來作一次多笔新增
INSERT INTO table_name (column1, column2, column3,...) SELECT 对应的其它列1, 对应的其它列2, 对应的其它列3,... FROM 其它表名;
报错ERROR 1241 (21000): Operand should contain 1 column(s)
多是因为将select 的结果集用()包住了
例子
INSERT INTO 表名1 (Id,User_name,Password,Email,Mobile,Fee,Age) SELECT Id,User_name,Password,Email,Mobile,Fee,Age FROM 表名2;
蠕虫复制
第一步
创建相同的表结构(不包括资料)
CREATE TABLE 表名2 LIKE 表名1
第二步
插入内容
INSERT INTO 表名2 SELECT* FROM 表名1
例子
CREATE TABLE 表名2 LIKE 表名1;
INSERT INTO 表名2 SELECT * FROM 表名1;
再已有数据之上,做一个增量复制。可以不断复制往上加。
ERROR 1062 (23000): Duplicate entry '1' for key 'student2.PRIMARY'
多是因为插入的表2里,设置了主键(PK)不能重复
“去掉主键”操作
ALTER TABLE 表 DROP PRIMARY KEY
报错 ERROR 1075 (42000): Incorrect table definition; there can be only one auto column and it must be defined as a key(还得把 设置了 AUTO_INCREMENT数据类型删了
RIMARY KEY 有點類似UNIQUE 加上 NOT NULL
不同的database 怎么备份呢
DELETE FROM
不带条件删除
一次性删除表中所有数据
DELETE * FROM 表名 / DELETE FROM 表名
带条件删除
DELETE FROM 表名 WHERE 列名=‘文本’
DELETE FROM customers WHERE Name='王二';
UPDATE SET
不带条件更新
UPDATE 表名 SET 列名1=值1, 列名2=值2
UPDATE Student SET Email='Jack@234.com'
表格Student中所有行的列Email的值都会被改为“Jack@234.com”
带条件更新
UPDATE 表名 SET 列名1=值1 ,列名2=值2 WHERE 列名3= 值3;
先竖列后横列
UPDATE table_name SET column1=value1, column2=value2, column3=value3··· WHERE some_column=some_value;
Student 表格 +----+-----------+-----------+----------------+-------------+-------------+-----+ | Id | User_name | Password | Email | Mobile | Fee | Age | +----+-----------+-----------+----------------+-------------+-------------+-----+ | 1 | Jack | 123456 | xiugai@126.com | 18612252687 | 121.22 | 23 | | 3 | Xiaoming | 101010 | xiugai@126.com | 19289179 | 2002.10 | 27 | | 5 | Kitty | 123456776 | xiugai@126.com | 16600095289 | 9837.21 | 35 | | 7 | Jack1 | 123456 | xiugai@126.com | 18612252687 | 121.22 | 21 | | 9 | Xiaoming | 00000000 | xiugai@126.com | 19289179989 | 2002.10 | 20 | | 11 | Kitty | 123456776 | xiugai@126.com | 16600095289 | 9837.20 | 35 | | 12 | 刘刘 | 12397799 | xiugai@126.com | 187666699 | 18768783.33 | 23 | +----+-----------+-----------+----------------+-------------+-------------+-----+
主键的Id 好像不能修改