文章目录
- 一. 插入表记录
- 1. 向表中插入部分字段
- 2. 向表中插入所有字段,字段的顺序为创建表时的顺序
- 3. 一次添加多条数据信息
- 二. 更新表记录
- 1. 更新所有记录的指定字段
- 2. 更新符号条件记录的指定字段
- 三. 删除表记录
- 1. 按条件删除记录
- 2. 清空记录
- 四. SQL约束
- 1. 主键约束
- ① 添加主键约束
- Ⅰ. 创建表时,在字段描述处,声明指定字段为主键
- Ⅱ. 创建表后,指定字段为主键
- ② 删除主键约束
- 2. 自动增长
- 3. 非空约束
- 4. 唯一约束
- 5. 默认值约束
- 6. 外键约束
数据操作语言:简称DML(Data Manipulation Language)
一. 插入表记录
1. 向表中插入部分字段
格式:insert into 表 (字段1,字段2,字段3…) values(值1,值2,值3…);
insert into category2(cid, cname) values('c001','电器');
2. 向表中插入所有字段,字段的顺序为创建表时的顺序
格式:insert into 表 values(值1,值2,值3…);
insert into category2 values('c002','服饰',2);
3. 一次添加多条数据信息
格式:insert into 表 (字段1,字段2,字段3…) values(值1,值2,值3…),(值1,值2,值3…)…;
insert into category2 (cid, cname) values('03','化妆品'),('04','书籍'),('05',null);
格式:insert into 表 values(值1,值2,值3…),(值1,值2,值3…),…;
insert into category2 values('06','玩具',4),('07','蔬菜',5);
二. 更新表记录
1. 更新所有记录的指定字段
将所有行的cname改为’家电’
update category2 set cname = '家电';
更新符号条件记录的指定字段
格式:update 表名 set 字段名=值,字段名=值,… where 条件;
将cid为c001的cname修改为水果
update category2 set cname = '水果' where cid = 'c001';
注意:
1、列名的类型与修改的值要一致.
2、修改值得时候不能超过最大长度.
3、除了数值类型外,其它的字段类型的值必须使用引号引起
2. 更新符号条件记录的指定字段
三. 删除表记录
1. 按条件删除记录
格式:delete from 表名 [where 条件];
删除cid为005的纪录
delete from category where cid = '005‘;
2. 清空记录
格式:delete from 表名;
格式:truncate table 表名;
清空表数据
delete from category;
truncate category;
注意:
清空表记录和删除表记录的区别:
使用delete删除表记录时,主键自增序列不清零。
使用truncate删除表记录时,主键自增序列清零。
四. SQL约束
① 主键约束primary key,主键用于唯一地标识表中的每一条记录,所以主键不允许出现重复,也不允许出现空值。
② 默认值约束default, 默认值约束用来指定某列的默认值。
③ 非空约束not null,指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。
④ 唯一约束unique key,是指所有记录中字段的值不能重复出现,可以为null。
⑤ 自动增长auto_increment,数据库自动生成字段的值,自动增长列类型必须是整型,自动增长列必须为键(一般是主键)。
⑥ 外键约束foreign key,用来在两个表的数据之间建立链接,它可以是一列或者多列。
primary key主键,主键用于唯一地标识表中的每一条记录,所以主键不允许出现重复,也不允许出现空值,绝对唯一能够区分数据的东西在数据库中称之为主键,一个表里只能有一个主键,但是这个主键可以由多个共同的字段组成。比如,人的身份证号,身份证号不能重复也不能为空,可以区别14亿人,如果用名字或者年龄区分一个人大概率都会重复,所以报身份证号作为主键,快捷方便。
default默认值,默认值在创建数据表时 , 给指定字段添加default默认约束并设置默认值 , 在添加记录时如果该列未指定值 , 就会按照默认值填充,比如,建立一个消防队报名表,用于记录报名的消防队员,在表中设立一个性别字段,默认值设置为”男“,因为通常来说消防救援活动对体力和爆发力要求较高,男性较为合适,所以在预设默认字段值的时候,设置为男性。
not null非空约束,对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统就会报错。还是建立一个消防队报名表,在表中设立一个年龄字段,此字段必须填写,否则此条数据无法录入。
unique key唯一性约束,是指所有记录中字段的值不能重复出现,但可以为null。比如,建立某个班级学员座位表,其中包含学员学号、座位号、姓名等字段,学员的学号在一所学校是唯一的,所以学号作为主键,座位号也是唯一的,但是座位号并不能标识一名学生,因为学生可以换座位,所以每个学生的座位号可以设置为unique key,也就是此键的值要唯一,但是不作为主键标识一整条数据。
foreign key外键约束,如下表所示,员工表的外键dep_id关联dep的id,通过此种方式可以通过dep表关联emp,即通过emp表的dep_id查询到其所属部门。
create table dep(id int primary key auto_increment,dep_name char(10),dep_comment char(60)
);create table emp(id int primary key auto_increment,name char(16),gender enum('male','female') not null default 'male',dep_id int,foreign key(dep_id) references dep(id)on update cascadeon delete cascade
);
1. 主键约束
1、PRIMARY KEY 约束唯一标识数据库表中的每条记录。
2、主键必须包含唯一的值。
3、主键列不能包含 NULL 值。
4、每个表都应该有一个主键,并且每个表只能有一个主键。
遵循原则:
1)主键应当是对用户没有意义的
2)永远也不要更新主键。
3)主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
4) 主键应当由计算机自动生成。
① 添加主键约束
Ⅰ. 创建表时,在字段描述处,声明指定字段为主键
创建表时,在字段描述处,声明指定字段为主键:
Ⅱ. 创建表后,指定字段为主键
alter table person1 add primary key(id);
② 删除主键约束
如需撤销 PRIMARY KEY 约束,请使用下面的 SQL
alter table persons1 drop primary key ;
2. 自动增长
我们通常希望在每次插入新记录时,数据库自动生成字段的值。
我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整型,自动增长列必须为键(一般是主键)。
下列 SQL 语句把 “persons2” 表中的 “id” 列定义为 auto_increment 主键
向persons添加数据时,可以不为Id字段设置值,也可以设置成null,数据库将自动维护主键值:
insert into persons2(first_name,last_name) values('Bill','Gates');insert into persons2(id,first_name,last_name) values(null,'Bill','Gates’);
3. 非空约束
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 语句强制 “id” 列和 “last_name” 列不接受 NULL 值:
4. 唯一约束
UNIQUE 约束唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意:
每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
主键primary key约束和唯一性unique key约束区别,相同点是字段的值都不允许重复,不同点为主键不可以为空,唯一性约束可以为空,从作用上来说,主键可以唯一性的标识一条数据,而唯一性约束通常不用来唯一性标识一条数据。
5. 默认值约束
默认 DEFAULT: 当不填写字段对应的值会使用默认值,如果填写时以填写为准
6. 外键约束
详见MySQL-DQL之数据多表操作