JavaEE基础之- 数据库与建模工具
目录
1.数据库的简介
2. MySQL数据库的安装和卸载
3. MySQL数据库概念
4. SQL语言(操作数据库)
4.1 SQL的分类
4.2 数据库的操作(CURD) 创建数据库(重点)
4.3 查看数据库(重点)
4.4 删除数据库(重点)
4.5 修改数据库
4.6 表结构操作(CURD)
4.7 数据库的数据类型:五种
5. 约束
5.1 单表约束
5.2 多表约束
6. 数据的操作(CRUD)(重要)
6.1 插入数据(insert)
6.2 MySQL插入中文数据乱码
6.3 修改数据(update)
6.4 删除数据(delete)
6.5 查询数据(select)(重点)
7.建模工具
1.数据库的简介
- 什么是数据库:数据仓库。访问必须只能用SQL语句来访问。数据库也是一个文件的系统。
- 数据库的作用:存储数据的作用。开发任何的应用,都有数据库。
- 关系型的数据库:数据库中保存的都是实体与实体之间的关系。
- 常见的数据库
- Java开发,必用的两个数据库Oracle和MySQL
- Oracle数据库(甲骨文) 大型的数据库,收费的。
- MySQL数据库 小型的数据库,免费开源的。被Oracle收购了(在6.x版本下开始收费了)
- SQLServer 微软的数据库
- DB2 IBM公司产品,大型的数据库,收费的。
- SyBASE 退出了历史的舞台。PowerDigener(数据库的设计的工具)
- Java开发,必用的两个数据库Oracle和MySQL
2. MySQL数据库的安装和卸载

3. MySQL数据库概念
4. SQL语言(操作数据库)
- Structured Query Language, 结构化查询语言
- SQL非过程性的语言
- 过程性的语言:依赖上一条或者上几条语句执行。
- 非过程性的语言:一条语言,就对应一个返回的结果。
- SQL语言是基础
- 在Oracle使用自己的语言,PL/SQL只能在Oracle来说使用。
4.1 SQL的分类
4.2 数据库的操作(CURD) 创建数据库(重点)
- 创建数据库的语法
- 基本的语法:create database 数据库名称;
- 正宗的语法:create database 数据库名称 character set 编码 collate 校对规则;
- 校对规则(了解):决定当前数据库的属性。
创建一个名称为mydb1的数据库。
create database mydb1;
创建一个使用utf8字符集的mydb2数据库。
create database mydb2 character set 'utf8';
创建一个使用utf8字符集,并带校对规则的mydb3数据库。
create database mydb3 character set 'utf8' collate 'utf8_bin';
4.3 查看数据库(重点)
show databases; ‐‐ 查看所有的数据库
use 数据库名称;(*****) ‐‐ 使用数据库
show create database 数据库名称; ‐‐ 查询数据库的创建的信息
select database(); ‐‐ 查询当前正在使用的数据库
4.4 删除数据库(重点)
drop database 数据库名称; ‐ 删除数据库
查看当前数据库服务器中的所有数据库
- show databases;
查看前面创建的mydb2数据库的定义信息
- show create database mydb2;
删除前面创建的mydb1数据库
- drop database mydb1;
4.5 修改数据库
语法:
alter database 数据库名称 character set 'gbk' collate '校对规则';
4.6 表结构操作(CURD)
1.创建表
语法:
create table 表名称(
字段1 类型(长度) 约束,
字段2 类型(长度) 约束,
字段3 类型(长度) 约束
);
注意:
- 创建表的时候,后面用小括号,后面分号。
- 编写字段,字段与字段之间使用逗号,最后一个子段不能使用逗号。
- 如果声明字符串数据的类型,长度是必须指定的。
- 如果不指定数据的长度,有默认值的。int类型的默认长度是11
创建一张表结构(员工表练习)
create table employee(
id int,
name varchar(30),
gender char(5),
birthday date,
entry_date date,
job varchar(50),
salary double,
resume text
);
执行SQL语句
- 查询当前正在使用的数据库 select database();
- 选择你要使用的数据库 use mydb2;
- 执行创建表的SQL语句。
使用desc employee;查询表的信息
2. 修改表
语法
- alter table 表名 add 新列名 类型(长度) 约束; ‐‐ 添加列
- alter table 表名 drop 列名; ‐‐ 删除列
- alter table 表名 modify 列名 类型(长度) 约束; ‐‐ 修改列的类型或者约束
- alter table 表名 change 旧列名 新列名 类型(长度) 约束; ‐‐ 修改列名
- rename table 表名 to 新表名; ‐‐ 修改表的名称
- alter table 表 名 character set utf8; ‐‐ 修改表的字符集
在上面员工表的基本上增加一个image列。
alter table employee add image varchar(50);
修改job列,使其长度为60。
alter table employee modify job varchar(60);
删除gender列。
alter table employee drop gender;
表名改为user。
rename table employee to user;
修改表的字符集为utf8
alter table user character set utf8;
列名name修改为username
alter table user change name username varchar(30);
4.7 数据库的数据类型:五种
5. 约束
5.1 单表约束
- 约束的好处:保证数据的完整性。
- 主键约束(重要)代表记录的唯一标识。
- 关键字:primary key 通过该关键字声明某一列为主键。
- 唯一 值就不能相同
- 非空 值也不能为空
- 被引用 (和外键一起来使用)
后面加
create table person(
id int primary key auto_increment,
name varchar(30)
);
末尾加
-- 创建一个名为 users 的表
CREATE TABLE users (
user_id INT NOT NULL,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
-- 将 user_id 字段设为主键
PRIMARY KEY (user_id)
);
唯一约束
声明字段值是唯一的。使用关键字 unique
非空约束
声明字段的值是不能空的。not null
5.2 多表约束
外键约束
部门和员工。
在多的一方,加一列指向部门表的主键,这一列就相当于外键。(如果没有外键,如果删除1号部门,就会有脏数据,因为这个部门下的人员没有解决掉)
如果直接删,删不了,因为那边有关联。需要先把员工关系处理完才能删掉。
6. 数据的操作(CRUD)(重要)
6.1 插入数据(insert)
- 插入数据的语法:
- insert into 表名 (字段1,字段2,字段3) values (值1,值2,值3);
- insert into 表名 values (值1,值2,值3);
- 注意事项
- 插入的数据与字段类型必须是相同的。
- 数据的大小范围在字段范围内
- 值与字段一一对应
- 字符串或者日期类型数据需要使用单引号
insert into user values (1,'meimei','1956‐1‐1','1957‐1‐1','HR',5000,'meimeimei','xx'); insert into user values (2,'小凤','1996‐1‐1','2013‐1‐1','BOSS',15000,'mei','xx');
6.2 MySQL插入中文数据乱码
1.先把MySQL服务停止。
2. 找到MySQL安装文件的my.ini的配置文件
[client] port=3306 [mysql]
default‐character‐set=gbk
3. 重启MySQL服务
6.3 修改数据(update)
- 语法:update 表名 set 字段1=值,字段2=值 where 条件;
- 如果没有where条件语句,默认更新所有的数据。
- 如果有where条件,默认更新符合条件的记录。
6.4 删除数据(delete)
- 语法:delete from 表名 where 条件;
- 如果没有where条件,默认删除所有的数据。
truncate 表名;删除表中所有的数据。delete from 表名; 也可以删除所有数据。
- 区别: truncate先把你整个表删除掉,默默创建一个空的表(和原来的表结构是一样的)。
- delete from 表名 一行一行的删除。(使用它)
- 事物的概念:事物提交和事物回滚。
删除表中名称为’聪聪’的记录。
delete from user where username = '聪聪';
删除表中所有记录。
delete from user; drop table user;删除数据及
使用truncate删除表中记录。
6.5 查询数据(select)(重点)
1.基本的select语句
语法
select * from 表名;
select 字段1,字段2,字段3 from 表名;
DISTINCT ‐‐ 去除重复的数据(面试)
select distinct english from stu;
2. 查询语句中使用运算和别名
在所有学生分数上加10分特长分。
select name,(math+10) m,(english+10) e,(chinese+10) c from stu;
统计每个学生的总分。
select name,(math+english+chinese) 总 分 from stu;
使用别名表示学生分数
select name,(math+english+chinese) 总 分 from stu;
3. 使用where条件过滤
查询姓名为聪聪的学生成绩
select name,math,chinese from stu where name = '聪聪';
查询英语成绩大于90分的同学
select name,english from stu where english > 20;
查询总分大于200分的所有同学
select name,math+english+chinese from stu where (math+english+chinese) > 200;
4. where子句中出现的运算
> < <= >= = <> 大于、小于、大于(小于)等于、不等于
in 表示范围。
- select * from stu where math = 18;
- select * from stu where math in (78,18,99);
like 模糊查询 ‐‐ 符合模糊的条件
- select * from stu where name like '张_';
- select * from stu where name like '张%';
- select * from stu where name like '%张';
- select * from stu where name like '%张%';
isnull ifnull nullif判断某一个字段记录是否为空
and与 or或者 not非
例子:
查询英语分数在 80-90之间的同学。
select * from stu where english >= 10 and english < 19;
查询数学分数为89,90,91的同学。
select * from stu where math in (89,90,91);
查询所有姓小的学生成绩。
select * from stu where name like '小%';
查询数学分>80,语文分>80的同学。
select * from stu where math > 80 or chinese > 80;
总结:select 列名(运算) from 表名(别名) where 条件(运算的符号);
5. order by 对查询的结果进行排序
排序的语法
select * from 表名 where 条件 order by 列名 升序/降序;
升序和降序
- order by 列名 asc;(升序,默认值)
- order by 列名 desc;(降序)
order by 子句必须出现在select语句的末尾。
例子:
对数学成绩排序后输出。
select name,math from stu order by math desc;
对总分排序按从高到低的顺序输出
select name,(math+english+chinese) as total from stu order by total desc;
对姓聪的学生成绩按照英语进行降序排序,英语相同学员按照数学降序
select name,english,math from stu order by english desc,math desc;
对姓聪的学生成绩排序输出
select name,(math+english+chinese) as total from stu where name like '聪%' order by total desc;
6. 聚集函数
- 聚集函数:总计某一列数据总和。一列的个数。一列的平均数。一列中最大值和最小值。
- 聚集函数来操作列的。
count -- 计 数
sum ‐‐ 求 和
ifnull 判断是否为空:语法:ifnul(xxx,0)
avg ‐‐ 平均值
max ‐‐ 最大值
min ‐‐ 最小值
例子:
统计一个班级共有多少学生?
select count(name) from stu;
统计数学成绩大于90的学生有多少个?
select count(math) from stu where math >= 90;
统计总分大于220的人数有多少?
select count(*) from stu where math + english+chinese > 200;
统计一个班级数学总成绩?
select sum(math) from stu;
统计一个班级语文、英语、数学各科的总成绩
select sum(math),sum(english),sum(chinese) from stu;
统计一个班级语文、英语、数学的成绩总和
select sum(ifnull(math,0)+english+chinese) from stu; select sum(math) + sum(english) + sum(chinese) from stu;
* 编写一条更新语句:update stu set math = null where id = 2;
7.建模工具
双击安装运行,语言选择第一个,地址我建在了D盘PD文件夹里,其他都选next.
出现这个就是安装成功。
配置汉化:
复制粘贴到安装目录,替换即可。
双击打开运行程序。
把文件拖进来:
双击表,设计表
建立表关系:
桌面上就会有一个sql文件
打开数据库,新建一个数据库
一般由建模师或者小组长来做。