问题
开发一个项目需要什么?
1.项目目标
2.需求分析
3.设计
4.开发
5.测试
6.部署与发布
7.维护与迭代
8.项目管理
开发流程是什么样?
1.数据库设计
2.数据库操作
3.数据库优化
该流程哪个环节需要数据库?
很多环节都需要用到数据库
在我们要开发一个项目之前,通常会拿到页面原型及需求文档。
第一阶段,在拿到需求和原型之后,首先要进行项目的设计(概要设计,详细设计,接口设计,数据库设计)最终将数据库以及数据库当中的表结构设计创建出来。
在第二阶段,我们要进行功能的开发,参照页面原型以及需求编码实现功能
开发完毕上线之后,后期可以对项目进行优化,其重要的一个部分就是数据库的优化(索引的建立,SQL的优化等等)
软件工程专业的学生应该有所了解,开发一个软件的过程与之相类似
一.数据库的设计——DDL语句
DDL
DDL 英文全称是 Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表)。
1.数据库
查询
show databases;
select database();
第一个数据库是之前创建的,后面四个是创建数据库时自带的
使用(切换)
use 数据库名 ;
创建
创建数据库:
create database [ if not exists ] 数据库名 ;
注:数据库不可被重复创建 (所以可以在database后面加入 [ if not exists ]:如果存在,不创建,如果不存在,创建)
删除
删除数据库:
drop database [ if exists ] 数据库名 ;
注意:上述语法中的database也可以换为schema
2.表(增删改查)
存在的问题:
通过上面的语句可以了解到,在命令行中编写语句很不方便
a.无提示
在命令行中编写语句没有任何的提示,非常非常容易敲错
b.操作繁琐
所有的功能操作全部得通过SQL语句来完成,操作非常繁琐而且效率不高
c.无历史记录
当我们关闭窗口之后,下一次打开所有的SQL语句全部消失,没有保留任何的历史记录
所以我们可以使用MYSQL的图形化管理工具来编写SQL语句
我所使用的软件是DataGrip,网上有破解的,可以自行查找
在我们下载了DG软件之后,创建一个数据源为MYSQL的sql文件
填写自己的数据库名称以及密码,根据提示下载相应的驱动和插件,点击测试连接连通MYSQL
连接完之后,会发现左边的文件栏里面就是我们之前控制面板创建的数据库
在console(控制台)窗口里面可以执行相关sql语句
编写好sql语句,点击运行,即可在下面看到运行之后的结果
DDL(表操作)
1.创建
create table 表名(
字段1 字段类型 [ 约束 ] [ comment 字段1注释 ] ,
......
字段n 字段类型 [ 约束 ] [ comment 字段n注释 ]
) [ comment 表注释 ] ;
创建表单之后,就可以在表里面添加数据了
但是,唯一标识ID在这种情况下可以重复,那我们该如何约束限制?
2.约束
约束 | 描述 | 关键字 |
非空约束 | 限制该字段值不能为null | not null |
唯一约束 | 保证字段的所有数据都是唯一、不重复的 | unique |
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一 | primary key |
默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | foreign key |
对之前写的表格加以约束,即可更加安全稳定
本节源码:
-- DDL: 表结构
-- 创建:基本语法
create table tb_user(
id int comment 'ID,唯一标识',
username varchar(20) comment '用户名',
-- 此处在java里面是String类型的数据,但是在mysql里面是varchar ()里面的数字表示能够容纳多少字符
name varchar(10) comment '姓名',
age int comment '年龄',
gender char(1) comment '性别'
-- 最后一个不用加逗号
) comment '用户包'
-- 创建:基本语法(约束)
create table tb_user(
id int primary key comment 'ID,唯一标识',
-- 主键约束
username varchar(20) not null unique comment '用户名',
-- 非空约束加唯一约束
-- 此处在java里面是String类型的数据,但是在mysql里面是varchar ()里面的数字表示能够容纳多少字符
name varchar(10) not null comment '姓名',
-- 非空约束
age int comment '年龄',
-- 无约束
gender char(1) default '男' comment '性别'
-- 默认约束 注:default后面要加默认值
-- 最后一个不用加逗号
) comment '用户包'