MySql数据库知识点复习

1. MySql数据类型

1.1 数值类型

MySql中有很多数值类型,常用的数值类型有:
int    对应Java中的int类型, 占用4个字节
double 对应Java中的double类型, 占用8个字节

1.2 字符串类型

Mysql中包含char和varchar两种字符串类型:
char(n)- 定长字符串
其中n的范围: 0~255 /个字符
name char(10)
  如果存储的数据长度小于定义的最大长度, 剩余的空间会用空格补全, 因此char类型可能会存在一定的空间浪费。
varchar(n) -- 不定长字符串
其中n的范围: 0~255 /个字符 (mysql5.0之前)
0~65535 /个字节(mysql5.0之后)
  如果存储的数据长度小于定义的最大长度, 剩余的空间可以留给别的数据使用, 因此varchar类型不会有空间的浪费。
大文本类型有:
text 0~65535 /个字节
bigtext 4GB

ps: char和varchar有什么区别?
char类型比varchar类型存储的效率略高,但是存在空间浪费。

1.3 日期类型

date 格式:年月日
time 格式:时分秒
datetime 格式: 年月日 时分秒
timestamp 时间戳(实际上存储的是从1970-1-1日到指定时间的毫秒值)
datetime的范围: 1000~9999年
timestamp的范围: 1970~2038年
timestamp类型的列可以设置自动更新为当前时间,但是datetime不能设置

2.表记录的操作

2.1 字段约束

  1.主键约束
    如果一个列添加了主键约束,那么该列就是这张表的主键,主键要求唯一且不能为空。
create table person1(
id int primary key,
...
);
  2.唯一约束
    如果为一个列添加了唯一约束,那么该列的值就不能重复,但是可以为null。
create table person2(
name char(10) unique,
...
);
  3.非空约束   
    如果为一个列添加了非空约束,那么该列的值就不能为空,但是可以重复。
create table person3(
gender varchar(2) not null,
...
);

2.2 drop、delete、truncate之间的区别?

  ● drop只能删除库和表,不能删除表记录。
  ● delete和truncate是删除表记录,不能删除库和表本身
  ● delete删除表记录时,可以删除表中的某一部分记录,也可以删除表中的所有记录,而且删除时,是一条
     一条删除。
  ● truncate也是删除表记录,但是只能删除所有记录,删除时不是一条一条删除,而是将整张表摧毁重建。

3. MySql常见的函数

1、ifnull(列名, 值)
判断指定的列的值是否为null, 如果为null, 则用第二个参数对null值进行替换
2、count(列名 | *)
count函数是对指定的列或者所有列统计行数
3、max(列名)和min(列名)
max(列名)
对指定的列求最大值
min(列名)
对指定的列求最小值
4、sum(列名和avg(列名)
sum(列名)
对指定的列进行求和
avg(列名)
对指定的列求平均值
5、curdate()、curtime()、sysdate()、now()
Curdate()
获取当前时间, 格式为年月日
Curtime()
获取当前时间, 格式为时分秒
Sysdate() | now()
获取当前时间, 格式为年月日 时分秒

4. 外键和表关系

4.1 外键介绍

 外键就是用于通知数据库两张表数据之间对应关系的一个列, 数据库会通过外键来维护两张表的对
 应关系。

4.2 添加外键

● 创建表的同时添加外键

CREATE TABLE student(
sid int primary key auto_increment, -- 学生编号
sname VARCHAR(10),                  -- 学生姓名
s_cid INT,                          -- 班级编号
FOREIGN KEY (s_cid) REFERENCES class(cid)  --指定外键
);

● 在建表后添加外键

//添加外键约束:ALTER TABLE student ADD FOREIGN KEY (s_cid) REFERENCES class(cid);

4.3 表关系

● 一对一
● 一对多
● 多对多

4.4 关联查询、外连接查询

● 关联查询

select * from class, student
where student.s_icd = class.cid;

● 左外连接查询

  左外连接查询会将左边表中的所有记录都查询出来, 而右边表中只查与左边对应的记录。
select * from class left join student on student.s_icd = class.cid; 

● 右外连接查询

  右外连接查询会将右边表中的所有记录都查询出来,而左边表中只查与右边对应的记录。
select * from class right join student on student.s_icd = class.cid;
发布了6 篇原创文章 · 获赞 11 · 访问量 185

猜你喜欢

转载自blog.csdn.net/qq_44799169/article/details/104589728
今日推荐