java第十四课 数据库MYSQL基础讲解

目录

1.数据库数据类型

2.Mysql对应的数据类型

3表格的列定义了几个重要的约束

4数据库操作

数据库:创建、删除

创建表格创建

插入数据

查询数据:

修改数据

删除数据

截断数据

删除表格

数据排序

聚合数据


存储数据的方法?

  1. 基本类型的数组(固定长度的数组)  
  2. 对象数组(长度自动增长的)
  3. 集合   (注册的数据   程序关闭之后再一次启动  数据会丢丢失吧,无法永久保存数据)
  4. io流  (可以永久保存数据  ,但是 对于修改,删除数据  非常的麻烦。)

使用数据库应用程序开发能带来什么好处?

  1. 存储大量的数据(永久保存)
  2. 数据共享安全  
  3. 数据完整性(插入数据的时候只要有一个数据有问题   那么整条语句中的所有数据将无法插入)  
  4. 数据库中不能出现2条完全相同的数据 (每一个字段的值完全相同)
  5. 检索效率极高 (索引)  修改  删除  添加数据非常的方便  (sql语句进行  )

当下主流的数据库

  • Oracle
    • Oracle公司的产品             
    • 产品免费、服务收费   500   字段1000
  • SQL Server
    • 针对不同用户群体的多个版本
    • 易用性好
  • MySQL
    • 开放源代码(免费开源)

数据库概念

  1. 数据库就是“数据”的“仓库”
  2. 数据库由表、关系以及操作对象组成
  3. 数据存放在表中
  4. 总结:数据库用来保存程序中用到的所有的数据。

1.数据库数据类型

  1. Java数据类型: 8大基本数据类型:byte  short int long    double float   char   boolean String  date


2.Mysql对应的数据类型

MySql中数据类型 java中数据类型

   大小

(字节)

解释
Tinyint byte 1  
smallInt short 2  
int int 4  
bigInt long 8  
double double    
float float    

varchar(指定长度)

String

   

datetime:

   

年月日时分秒

date

   

年月日

time

   

时分秒

text

   

文本类型

 blob

   

音频文件  

(图片视频等)

常用的  mysql变量数据类型

整数:int

小数:double

字符串用:varchar(指定长度)  varchar(20);//可以保存0-20长度的字符串

Date:年月日

数据库中日期和字符串  使用 单引号引起来

用户名:‘charles’   日期: ‘2019-04-25’

 

 

 

 

 

 

3表格的列定义了几个重要的约束

  1. 每一个表格中不允许出现2条完全相同的记录(或行)
  2. 可以给某个字段id建立一个  主键约束(primary key)   一般查询用户 是根据id查询  自动创建索引(主键索引)
  3. 唯一约束 unique   对应的列  都是独一无二的   可以有一个空值
  4. 检查约束  check  设置列的取值范围   性别(男,女)  年龄(1-100)
  5. 非空约束   not null  列值不允许为空  密码?  性别 ?
  6. 自动增长列 Auto_increment  id自增  (不想人为插入数据  数据库帮我们自动插入填充)

4数据库操作

数据库:创建、删除


-- 通过代码创建的数据库称之为  用户数据库
-- 1.创建用户数据库语句  CREATE DATABASE  自定义库名;
CREATE DATABASE StudentDB;
-- 定义字符编码
CHARACTER SET utf8 COLLATE utf8_unicode_ci;

-- 2.设置当前使用的数据库
-- 创表的时候 默认保存在  当前正在使用的数据库中
USE StudentDB;

-- 3.删除数据库  数据库存在 删除存在的数据库
DROP DATABASE IF EXISTS  StudentTestDB;

创建表格创建

-- 学生表   编号  学生姓名  学生密码 学生性别  学生年级   学生的成绩

     --      int    varchar(20) varchar(20) varchar(10)  int        double

CREATE TABLE Student(
id INT AUTO_INCREMENT PRIMARY KEY,
stuName VARCHAR(20) UNIQUE NOT NULL,
stuPass VARCHAR(20) DEFAULT '123' NOT NULL, -- 当不手动插入密码的时候 会给定默认值
stuSex VARCHAR(10) CHECK(stuSex='男' OR stuSex='女'), -- 检查约束
gradeId INT ,
score DOUBLE  -- 最后一个字段后面不能加逗号   没加 not null 就默认允许为空
);

-- 创建年级表   编号 年级名称
CREATE TABLE grade(
id INT AUTO_INCREMENT PRIMARY KEY,
gradeName VARCHAR(10) NOT NULL
);

插入数据

-- 往表格中插入数据  grade():自动增长列 /默认值/ 允许为空的数值  可以不写
INSERT INTO grade(gradeName) VALUES('大一');
INSERT INTO grade(gradeName) VALUES('大二');
INSERT INTO grade(gradeName) VALUES('大三');
INSERT INTO grade(gradeName) VALUES('大四');

-- 插入数据Student   字段与值得顺序必须一一对应
INSERT INTO Student(stuName,stuSex,gradeId,score)
VALUES('charles','男',1,88);

INSERT INTO Student(stuName,stuSex,gradeId,score)
VALUES('jack','男',1,68);

INSERT INTO Student(stuName,stuSex,gradeId,score)
VALUES('Tina','女',2,78);

INSERT INTO Student(stuName,stuSex,gradeId,score)
VALUES('rouse','女',2,58);

INSERT INTO Student(stuName,stuSex,gradeId,score)
VALUES('marry','女',3,98);

INSERT INTO Student(stuName,stuSex,gradeId,score)
VALUES('tomorrow','男',4,88);

INSERT INTO Student(stuName,stuSex,gradeId)
VALUES('quekezhe','男',4);

INSERT INTO Student(stuName,stuSex,gradeId)
VALUES('reduce','男',4); -- 8


INSERT INTO Student(stuName,stuSex,gradeId)
VALUES('reduce1','男',4); -- 8

查询数据:

-- 1.查询表格中所有的数据  *(代表所有列的意思)
SELECT * FROM student; -- 表名
SELECT * FROM grade; -- 表名

-- 2. 查询表格中的部分字段
SELECT stuName,stuPass,score  FROM student;

-- 逻辑连接词  or 或者(java ||)  and(java &&)  not(!)

-- 3.查询及格的学生信息  WHERE:根据什么条件查询
SELECT * FROM student WHERE score>=60;

-- 4.查询 所有及格的女学生
SELECT * FROM student WHERE score>=60 AND stuSex='女';

-- 5.id =1 id=2 id=3的学员信息查询出来
SELECT * FROM student WHERE id=1 OR id=2 OR id=3; 
SELECT * FROM student WHERE id>=1 AND id<=3;  -- 连续的可以考虑使用
SELECT * FROM student WHERE id BETWEEN 1 AND 3;   -- 连续的可以考虑使用

-- 6.id=1 id=3 id=5 的学员信息查询出来
SELECT * FROM student WHERE id=1 OR id=3 OR id=5;
SELECT * FROM student WHERE id IN(1,3,5); -- in 包含

-- 7.查询缺考的学生信息  score IS NULL 分数为空
SELECT * FROM student WHERE score IS NULL;
-- 8.查询没有缺考的学生信息 
SELECT * FROM student WHERE score IS NOT NULL;

修改数据

--修改表格数据
UPDATE student SET stuPass='1234',stuSex='女' WHERE id=2 ;-- 不写where条件默认修改全部

删除数据

-- 2.删除
DELETE FROM student WHERE id=9;-- 不加where条件 默认删除全部

截断数据

-- id会重置
TRUNCATE  student;

删除表格

删除表格之后添加信息,id不会重置

DELETE FROM student ;  -- id不会重置  永远不回头

数据排序

-- 1. 从小到大 参加考试的学生根据成绩顺序排名
SELECT * FROM student WHERE score IS NOT NULL ORDER BY score ASC; -- asc 顺序

-- 2.从大到小 参加考试的学生根据成绩倒序排名
SELECT * FROM student WHERE score IS NOT NULL ORDER BY score DESC; -- desc 倒序

聚合数据

-- 聚合函数: 计算平均分 avg() / 总分sum() /最高分max()  /最低分min()
-- 统计 表格中总的记录数 count()

SELECT AVG(score),SUM(score),MAX(score),MIN(score),COUNT(*)
FROM student;

SELECT  
AVG(score) AS '平均分',
SUM(score) AS '总分',
MAX(score) AS '最高分',
MIN(score) AS '最低分',
COUNT(*) AS '总人数'
FROM student;

-- 也适用于  简单表查询
SELECT stuName AS '学生姓名' ,stuPass AS '学生密码' FROM student;

 

你可能感兴趣的:(大数据工程师学习路线,#,MySQL,01,java)