回顾
1 SQL语句的分类
2创建表的语法
create table 表名(
列名 数据类型 not null,
列名 数据类型
);
3 删除表
drop table 表名;
数据完整性分类
1实体完整性 (表中每条记录唯一)
2域完整性
3引用完整性
数据完整性约束
实体完整性约束
主键约束
表中唯一标识每条记录的一列或多列
非空,唯一 ,一张表有且仅有一个主键
选择逐渐:最少性,稳定性
注意:当表中所有列都不适合当主键时,可以给表中添加一个自增列为主键
设置自增列的数据类型必须为int类型,添加关键词:auto_increment
设置方式
在创建表时设置
stu_id int primary key,
图形化界面创建时,选择主键
在已创建的表中修改表添加主键
alter table 表名
add constraint pk_stu_id primary key(字段名);
或者
alter table 表名
add primary key(stu_id);
唯一约束
唯一,可空,一张表可以有多个唯一约束的列
设置方式:
创建表时设置关键词
phone char(11) unique,
图形化创建表时 设置唯一
已存在的表列添加唯一约束
alter table 表名
add unique index uk_phone(列名);
或者
alter table 表名
add constraint uk_phone unique(列名);
域完整性约束
数据类型 非空约束 默认值约束 检查约束
非空约束,默认值约束
1在创建表时设置
stu_name varchar(50) not null,
stu_sex char(1) defaule('男') not null
2在图形化界面时设置
3给已存在的表添加默认值约束
alter table 表名
modify column stu_sex char(1) default('男');
检查约束 check约束
已存在表添加检查约束
alter table 表名
add constraint ck_stu_sex check(stu_sex = '男' or stu_sex = '女');
或者
alter table 表名
add constraint ck_stu_sex check(stu_sex in ('男', '女'));
alter table 表名
add constraint ck_stu_sex check(stu_age between 18 and 89 );
或者
alter table 表名
add constraint ck_stu_sex check(stu_age >= 16 and stu_age <= 30 );
%任意长度字符 ,_任意单个字符
alter table student
add constraint ck_email check(email like '%_@_%');
引用完整性约束
外键引用:表中列引用另一张表中主键列或唯一值
表与表之间有引用关系 主表被引用的表 子表引用表
外键列:一张表中可以有多个外键,外键列值可以重复
设置方式
通过图形化在创建子表时设置
通过E-R图设置
通过代码设置
alter table 子表名
add constraint fk_stuid foreign key(外键列名) references 主表名(主键列名)
添加含外键列数据时,先在主键表中找到对应列,没有需要创建主键列
删除时,需要先删除主键表中数据,再删除外键列表数据
数据表设计 三范式
原子性
每张表仅描述同一类实体信息 保证与主键字段直接相关,
非主键列与主键列是直接依赖,不能产生传递依赖
E-R图
有几个工程 , 每个工程都有几个人参与,每个人可以参与几个工程,工时由工程和职务共同决定
增删改查
添加语句
insert into 表名 (列名列表)
values(值列表)
值列表的个数 数据与列名列表一致
insert每次添加一条记录
除数值类型,其他类型都要使用‘ ’
给可为null的列赋值
1) 不写此列,默认值为null
2) 写列,关键词用null
给有默认值的列赋值
1)不写此列,默认值为null
2)写列,赋值为default
有自增列,不写此列
列名列表省略不写时,值的顺序必须与表定义的顺序一致
jdbc连接数据库
在官网上下载jdbc的jar包
Maven Repository: Search/Browse/Explore (mvnrepository.com)
- jdbc:mysql:// - 这是JDBC连接字符串的标准前缀,表示你要连接的是一个MySQL数据库。
- localhost:3306 - 这是数据库服务器的地址和端口号。
local
通常是localhost
的简写,表示本地机器。3306
是MySQL数据库服务的默认端口号。- /goodsdb - 这是你要连接的数据库的名称,这里是
goodsdb
。- ?useSSL=false - 这是一个连接参数,表示不使用SSL加密连接。在开发或测试环境中,为了简化配置,有时可能会禁用SSL。但在生产环境中,为了安全起见,建议启用SSL。
- &characterEncoding=utf-8 - 这是另一个连接参数,用于指定字符编码为
utf-8
。这样,当从数据库读取或写入数据时,可以确保使用正确的字符编码。- &serverTimezone=Asia/shanghai - 这个参数用于设置服务器的时区。这有助于解决由于时区差异而可能导致的日期和时间问题。这里设置为
Asia/shanghai
,即上海时区。