数据库基础知识

发布时间 2023-12-06 12:45:10作者: 和哗

DDL语言

DDL(Data   Definition  Language),数据定义语言,用来定义数据库对象(数据库,表,字段)

关于数据库操作

1.创建数据库

语法:

create  database 数据库名;

注意:数据库名需要满足命名规则

2.删除数据库

语法:

drop database 数据库名;

3.查询所有库

语法:

show databases;

4.切换数据库

语法:

use 数据库名;

关于表操作

1.创建表

语法:

create table  表名(
       列名     数据类型,
       列名     数据类型,
      .................
       列名     数据类型      
); 

注意一点:最后一列不需要逗号

MySQL常见的数据类型有哪些?

①varcahr(长度):表示可变字符串,长度表示最多可以输入的内容个数。长度为0~65535

②char(长度):表示把不可变字符串,长度是固定的,适合于固定长度的内容。长度为0~255

③text():文本字符串

④int:表示整数

⑤double:表示小数

⑥decimal(a,b):表示小数,a表示总长度包括整数位和小数位,b表示小数位

⑦date:表示日期类型

⑧datetime:表示日期时间类型

2.查看当前数据库有哪些表

语法:

show  tables;

3.删除表

语法:

drop table  表名;

4.修改表结构

语法:

-- 删除表结构总指定的列
alter table 表名   drop column 列名;

-- 添加指定的列
alter table 表名   add  column  列名   数据类型;

-- 修改列名
alter  table 表名  change column 列名  新名  数据类型;

-- 修改列的数据类型
alter table 表名  modify  column  列名   新数据类型;

设计表的约束

约束代表列必须满足这个约束,才能添加数据

分类:

约束的添加有两种方式:

(1)在创建表时对列名添加对应的约束:

create  table  emp(
    id    int    primary key,  -- 主键约束(值不能为空且值唯一)
    name   varchar(4)  unique,  -- 唯一约束(值唯一不重复)
    birthday  date   not null , -- 非空约束(限制该字段的数据不能为null)
    age     int    check(age>0),  -- 检查约束(值必须满足条件)
    gender  char(2)  default ''  -- 默认约束(未指定该字段的值,则采用默认值)
   
)

(2)表结构构建好后添加约束

--  添加唯一约束
alter table 表名  add constraint 约束名   unique(列名);

--  检查约束
alter table 表名  add constraint 约束名  check(列名);

-- 非空约束
alter  table 表名  modify  列名  数据类型  not  null;

-- 主键约束
alter  table 表名 add constraint 约束名  primary  key(列名); 

外键约束

外键约束是让两张表的数据之间建立连接保证数据的完整性

建立外键约束前需要理解表与表之间的关系:

(1)一对一的关系:

表示一张表A的一条记录只能对应另一张表B中的一条记录,而另外一张表B的记录也只能对应着表A中的一条记录。

比如:学生表和身份证

人类表
id      name
1       张三
2       李四

身份证表
id     身份证号码
1     card1
2     card2

这里的一个人只能有一张身份证卡,而一张身份证卡只能对应一个人。

(2)一对多的关系:

表示一张表A的一条记录可以对应着另一张表B的多条数据,而另一张表B的记录只能对应表A中的一条记录

比如:班级表和学生表

班级表
id     class
1      一班
2      二班

学生表
id     classno
1      一班
2      一班
3      二班
4      一班

这里的一个学生只能有一个班级,但是一个班级可以包含多个学生。

(3)多对多的关系

表示一张表A中的记录对应着另一张表B的多条记录,另一张表B中的记录也可以对应表A中的多条记录

比如:学生表与老师表

学生表
id     name   teacherName
1      张三     李老师
2      李四     王老师
3      张三     崔老师  
4      王五     王老师

班主任表
id    name    studentName
1    李老师    张三
2    王老师    王五
3    王老师    李四
4    崔老师    张三

这里一个学生表中的可以存在一个学生有多个老师记录,而老师表中一个老师可以有多个学生记录。

多对多关系需要转成1对多的关只需要一张中间表存放学生表里面的主键老师表的主键,此时学生表与中间表之间形成一对多的关系,而老师表与中间表也形成一对多的关系

外键的设置一般用于一对多的场景多的一方增加一个外键列

创建外键的语法:

alter table 表名 add contraint 约束名 foreign key (列名) references 参考的表名(列)

举个例子:

-- 老师表
create table if not exists class_teacher(
     class_teacher_id   int primary key comment '老师号',
      teacher_name       varchar(20)  not null   comment '姓名'
)comment '班主任';

-- 班级表
create table if not exists class(
     class_no  int primary key comment '班级号',
         type      varchar(20) not null unique comment '类型',
     class_teacher_no int  not null comment '班主任号'
)comment '班级表';

老师与班级表是一对多的关系,所以在班级表中设立外键列(class_teacher_no)
代码:
alter table class add constraint  fk_class_class_Teacher foreign key(class_teacher_no) references class_teacher(class_teacher_id);