插入数据
insert语句插入数据
语法格式:
insert into 表名(字段名1,字段名2,字段名3,…) values(值1,值2,值3,…)
要求:
字段的数量和值的数量相同,并且数据类型要对应相同。
示例1:
insert into t_student(no,name,sex,classno,birth) values(1,'zhangsan','1','gaosan1ban', '1950-10-12');
示例2:
字段的顺序可以调整
insert into t_student(name,sex,classno,birth,no) values('lisi','1','gaosan1ban', '1950-10-12',2);
示例3:
向表中insert插入数据时,可以只向其中的部分字段插入。
insert into t_student(name) values('wangwu'); // 除name字段之外,剩下的所有字段自动插入NULL。
这种情况下没有写出的那些字段会自动插入空值(null)。
如果没有写出的那些字段在建表时使用default指定了默认值,则自动插入默认值。
关于“使用default指定默认值”,可参考:【……】
示例4:
字段可以省略不写,但是后面的value对数量和顺序都有要求,必须和将要插入的表完全一致。
insert into t_student values(1,'jack','0','gaosan2ban','1986-10-23');
示例5:
可以一次插入多行数据
insert into t_student
(no,name,sex,classno,birth)
values
(3,'rose','1','gaosi2ban','1952-12-14'),
(4,'laotie','1','gaosi2ban','1955-12-14');
示例6:
可以将select查询结果插入到一张表中
insert into dept1 select * from dept;
注意1:
当一条insert语句执行成功之后,表格当中必然会多一行记录。
即使多的这一行记录当中某些字段是NULL,后期也没有办法在执行insert语句插入数据了,只能使用update进行更新。
注意2:
如果是通过DOS命令窗口来操作MySQL数据库的话,通过insert插入数据时不要写中文,否则会出现乱码!
这是因为:
MySQL数据库采用的是“UTF-8”,但是DOS命令窗口采用的是“ANSI/OEM-简体中文GBK”。字符集不统一,会导致出现乱码。
复习之前学习的:
关于编码格式(字符集)
修改数据
语法格式:
update 表名 set 字段名1=值1,字段名2=值2… where 条件;
注意:
没有加条件的话,整张表的数据全部更新。
示例1:
将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU
update dept1 set loc = 'SHANGHAI', dname = 'RENSHIBU' where deptno = 10;
示例2:
更新所有记录
update dept1 set loc = 'x', dname = 'y';
注意:
更新数据时,不同的字段之间是用逗号连接,而不是用and连接。
删除数据
delete与truncate
语法格式:
delete from 表名 where 条件;
注意:
如果没有加条件的话,整张表的数据全部删除。
示例1:
删除10部门数据
delete from dept1 where deptno = 10;
示例2:
删除所有记录
delete from dept1;
怎么删除大表?
如果表特别大,数据特别多的话,用delete删除就会很慢。用掉几分钟甚至几小时都是可能的。
delete语句的执行效率是很低的,效率高的是truncate语句(截断)。
语法:
truncate table 表名;
两者的区别:
delete:表中的数据在删除之后还可以回滚。
truncate:表被截断,不可回滚。永久丢失。
delete语句执行慢的原因:
它没有释放数据真实的物理存储空间。
CRUD
增删改查有一个术语:CRUD操作
Create(增) Retrieve(检索) Update(修改) Delete(删除)