① 使用 insert
使用insert向数据表中添加数据
insert into users(username,password,userage) values('ddddd','123456',27);
如上插入数据成功,由于id为主键,自增,因此不需要给其添加值,添加成功后下面显示一行受影响;
②插入多行数据
可以使用多条insert语句,但是会比较繁琐
insert into users(username,password,userage)
values('ddddd','123456',27),
('eeeee','123456',28);
如图所示,values()后面添加即可,但是必须与前面的字段对应;
其中单条insert语句有多组值,每组值用一对圆括号括起来,用逗号分隔;
① 使用update更新数据
进行更新时一定主意给与条件,否则很容易就会更新所有的行;
#例如users数据表中有,id,username,password,userage
#我们需要修改id=6的用户的密码改为666666
update users
set password='666666'
where id=6;
如图修改完毕,密码修改成功;
② 使用delete删除数据
需要注意给予条件,否则可能会删除所有行
如上图中我们想删除id=10的用户
delete from users where id=10;
更快的删除,如果想删除表中所有的行,不要使用delete,可以使用truncate table语句,它完成相同的工作,但速度更快(truncate实际时删除原来的表并重新创建一个表,而不是逐行删除表中的数据)
① 创建表
例如:创建car表,有字段id,name,price三个字段
create table car(
id int(10) not null primary key,
name varchar(20),
price double
);
表创建成功,not null表示该字段不能为空,primary key表示该字段为主键,int(10)为字段类型与长度,varchar(20)为可变字符串,长度20,double为浮点类型数据
理解NULL,不要把NULL值与空串相混淆,NULL值是没有值,它不是空串,如果指定’ ',这在NOT NULL列中是允许的,空串是一个有效的值,它不是无值,NULL值用关键字NULL而不是空串指定。
② 主键
主键必须唯一,即,表中的每个行必须具有唯一的主键值,如果主键使用单个列,则它的值必须唯一,如果使用多个列,则这些列的组合值必须唯一。
使用primary key关键字,为主键约束。
主键和NULL值 主键为其唯一标识表中每个行的列,主键中只能使用不允许NULL值的列,允许NULL值的列不能作为唯一标识。
③ auto_increment关键字
被它标识的字段,表示该字段自增,当插入行时,该字段的值会加一,每个表只允许一个auto_increment列,而且它必须被索引(如,通过使它成为主键)。
覆盖auto_increment:如果一个列被指定为auto_increment,则它需要使用特殊的值吗?你可以简单地在insert语句中指定一个值,只要它是唯一的即可,该值将被用来替代自动生成的值。后续的增量将开始使用该手工插入的值。
获取最后一次插入数据的id
create table car(
id int(10) not null primary key,
name varchar(20),
price double default 100
);
假如插入值时,没有给定price列的值,则会使用默认值100填充
⑤ 更新表
使用alter table来修改表结构
小心使用alter table ,应该在进行改动前做一个完整的备份(模式和数据的备份)。数据库表的更改不能撤销,如果增加了不需要的列,可能不能删除它们,类似,如果删除了不应该删除的列,可能会丢失该列中的所有数据。
⑥ 删除表
使用 drop table 表名; 即可删除;
⑦ 重命名表
使用 rename table 原表名 to 新表名;
可以使用逗号修改多个表;
rename table 原表名 to 新表名,原表名 to 新表名;
MySQL5版本及以上支持视图
①创建和使用视图
视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
我们做个例子:
有两张表user 表与role表,user表的rid为外键,对应role表的主键id
我们需要做如下查询:
查询每个用户的角色名并显示,我们前面做过此查询,使用关联查询即可做到
select user.id,username,role.name as role_name
from user,role
where user.rid=role.id;
使用关联查询似乎很麻烦,我们再次使用视图做相同查询,创建一个名为user_role的视图,相当于创建表名为user_role的虚拟表,表的字段为id,username,role_name
#使用视图 as后面与前面的关联查询一模一样
create view user_role
as
select user.id,username,role.name as role_name
from user,role
where user.rid=role.id;
如图虚拟的表结构相当于创建了一个新的表,不过物理上它是不存在的
为什么使用视图?
性能问题:
因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一个检索。如果你用多个联结和过滤创建了复杂的视图或嵌套了视图,可能会发现性能下降得很厉害。因此,在部署使用了大量视图的应用前,应该进行测试。
② 视图的规则和限制
删除视图:drop view 视图名;
小结:视图为虚拟的表。他们包含的不是数据而是根据检索数据的查询。视图提供了一种MySQL的select语句层次的封装,可用来简化数据处理以及重新格式化基础数据或保护基础数据。