问题和知识点整理
- 1.字符型
- 2.采用枚举类型创建表格,并且插入数据,后查看插入结果?
- 3.创建集合类型的表格,插入数据,并查看结果
- 4.日期类型
- 5.用时间格式创建数据表,插入数据并查询表
- 6.有哪两种删除表的方式?两者的区别是什么?
- 7.修改表
- 8.删除表名语法
- 9.复制表
- 10.为什么要对表添加约束?
- 11.常见的约束有哪些?
- 12.添加约束的时机有哪些:
- 13.添加约束的分类
- 14.创建一个新的数据库students,并使用列级约束创建一张表,并查看表结构
- 15.创建一个表,使用表级约束
- 16.使用通用方式创建表
- 17.约束中主键约束和唯一约束有什么区别?
- 18.如何在表中定义组合唯一键
- 19.使用外键的前提和满足条件是什么?
- 20.修改表时添加约束
- 21.添加主键
- 22.添加外键约束
1.字符型
较短的文本:M最大的字符数
char
varchar
特点比较:
binary和varbinary类型用户保存较短的二进制
较长的文本:
text
blob(较大的二进制)
2.采用枚举类型创建表格,并且插入数据,后查看插入结果?
CREATE TABLE tab_char(
c1 enum('a','b','c','d')
);
insert into tab_char values('a');
insert into tab_char values('b');
insert into tab_char values('c');
select * from tab_char;
3.创建集合类型的表格,插入数据,并查看结果
CREATE TABLE tab_set(
s1 set('a','b','c','d')
);
insert into tab_set VALUES('a');
insert into tab_set VALUES('A,B');
insert into tab_set VALUES('a,C,d');
select * from tab_set
运行结果为:
a
a,b
a,c,d
4.日期类型
timestamp和实际时区有关,更能反映实际的日期,而datetime则只能反映出插入时的当地时区。
timestamp的属性受Mysql版本和SQLMode的影响很大。
5.用时间格式创建数据表,插入数据并查询表
CREATE TABLE tab_date(
t1 DATETIME,
t2 TIMESTAMP
);
insert into tab_date values(now(),now());
select * from tab_date;
6.有哪两种删除表的方式?两者的区别是什么?
方式一:使用delete
一、删除表单的记录
delete from 表名[where 筛选条件] [limit]
二、级联删除
delete 别名1,别名2 from 表1 别名
inner|left|right join 表2 别名
on 连接条件
[where 筛选条件]
方式二:使用truncate
语法:truncate table 表名
两者的区别:
1.truncate删除后,如果再插入,识别列从1开始
delete删除后,如果再插入,识别列从断点开始
2.delete可以添加筛选条件
truncate不可添加筛选条件
3.truncate效率高
4.truncate没有返回值
delete可以返回受影响的行数
5.truncate不可以回滚
delete可以回滚
7.修改表
1.添加列
alter table 表名 add column 列名 类型 [first|after 字段名];
2.修改列的类型或约束
alter table 表名 modify column 列名 新类型 [新约束];
3.修改类名
alter table 表名 change column 旧列名 新列名 类型;
4.删除列
alter table 表名 drop column 列名;
5.修改表名
alter table 表名 rename [to] 新表名;
8.删除表名语法
drop table [if exists] 表名;
9.复制表
1.复制表的结构
create table 表名 like 旧表;
2.复制表的结构+数据
create table 表名
select 查询列表 from 旧表[where 筛选]
10.为什么要对表添加约束?
为了保证表中的数据的准确和可靠性
11.常见的约束有哪些?
六大约束
1.NOT NULL:非空,用于保证该字段的值不能为空,比如姓名、学号等
2.DEFAULT:默认约束,用于保证该字段有默认值,比如性别
3.PRIMARY KEY:主键约束,用于保证字段的值具有唯一性,并且非空,比如学号、员工编号等
4.UNIQUE:唯一,用于保证该字段的具有唯一性,可以为空,比如座位号
5.CHECK:检查约束,【mysql中不支持】
6.FORIEIGN KEY:外键,用于限制两个表的关系,用于保证从表该字段的值必须来自于主表的关联列的值
12.添加约束的时机有哪些:
1.创建表时
2.修改表时
13.添加约束的分类
1.列级约束:六大约束语法上都支持,但是外键约束没有效果
2.表级约束:除了非空、默认,其他的都支持
14.创建一个新的数据库students,并使用列级约束创建一张表,并查看表结构
create database students;
use students;
CREATE table stuinfo(
id int PRIMARY key,
stuName VARCHAR(20) not null,
gender char(1),#无效check(gender='男' or gender='女')
seat int UNIQUE,
age int DEFAULT 18,
majorId int
);
desc stuinfo;
show index from stuinfo;
15.创建一个表,使用表级约束
use students;
drop table if exists stuinfo;
create table major(
id int PRIMARY key,
majorName VARCHAR(20)
)
create table stuinfo(
id int,
stuname varchar(20),
gender char(1),
seat int,
age int,
majorid int,
constraint pk PRIMARY key(id),
constraint uq UNIQUE(seat),
#constraint ck CHECK(gender='男' or gender='女'),
CONSTRAINT fk_stuinfo_major foreign key(majorid) REFERENCES major(id)
);
show index from stuinfo;
查看结果如下:
说明:表级约束
在创建表的最下面写上如下字段:
[constraint 约束名] 约束类型(字段名)
16.使用通用方式创建表
create table stuinfo(
id int primary key,
stuname varchar(20) not null,
sex char(1),
age int default 18,
seat int unique,
majorid int,
constraint fk_stuinfo_major FOREIGN key(majorid) REFERENCES major(id)
)
desc stuinfo;
17.约束中主键约束和唯一约束有什么区别?
主键约束:保证唯一性,不允许为空,一个表中可以至多只能有一个主键约束,可以多个字段组合使用,但不推荐
唯一约束:允许唯一为空,一个表中可以有多个唯一约束,可以多个字段组合使用,但不推荐
18.如何在表中定义组合唯一键
constraint pk primary key(id,stuname)
19.使用外键的前提和满足条件是什么?
1.要求在从表设置外键关系
2.从表的外键列的类型和主表的关联列的类型要求一致兼容,名称无所谓
3.主表的关联列必须是一个key(一般是主键或唯一约束)
4.插入数据时,先插入主表,再插入从表
删除数据时,先删除从表,再删除主表
20.修改表时添加约束
ALTER table stuinfo MODIFY COLUMN stuname VARCHAR(20) not null;
21.添加主键
ALTER TABLE stuinfo modify column id int PRIMARY key;
Alter table stuinfo add PRIMARY key(id);
22.添加外键约束
ALTER table stuinfo add CONSTRAINT fk_stuifo_major foreign key(majorid) REFERENCES major(id);