MySQL数据库

目录

 1.数据库介绍

2.数据库分类 

3. 数据库的操作

3.1 显示当前的数据库

3.2 创建数据库  

3.3 使用数据库

 4.4 删除数据库

 4. 常用数据类型

4.1整数类型

 4.2字符串类型

4.3日期类型 

 5.表的操作

5.1查看表结构

 5.2 创建表

5.3 删除表

 6.MySQL表的增删改查

6.1 新增(Create)

6.1.1 单行数据 + 全列插入

6.1.2 多行数据 + 指定列插入

 6.2. 查询(Retrieve)

6.2.1 全列查询

6.2.2 指定列查询

6.2.3 查询字段为表达式

6.3别名


 1.数据库介绍

       存储数据用文件就可以了,为什么还要弄个数据库 ?
       文件保存数据有以下几个缺点:
1.文件的安全性问题
2.文件不利于数据查询和管理
3.文件不利于存储海量数据
4.文件在程序中控制不方便
数据库存储介质:
   磁盘
   内存
    为了解决上述问题,专家们设计出更加利于管理数据的软件 —— 数据库,它能更有效的管理数据。数据 库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。

2.数据库分类 

     数据库大体可以分为 关系型数据库 非关系型数据库
    关系型数据库( RDBMS ):
     是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
基于标准的 SQL ,只是内部一些实现有区别。常用的关系型数据库如:
1. Oracle :甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如 ERP OA 等企业信息系
统。收费。
2. MySQL :属于甲骨文,不适合做复杂的业务。开源免费。
3. SQL Server :微软的产品,安装部署在 windows server 上,适用于中大型项目。收费。
非关系型数据库:
(了解)不规定基于 SQL 实现。现在更多是指 NoSQL 数据库,如:
1. 基于键值对( Key-Value ):如 memcached redis
2. 基于文档型:如 mongodb
3. 基于列族:如 hbase
4. 基于图型:如 neo4j
关系型数据库与非关系型数据库的 区别
MySQL数据库_第1张图片

3. 数据库的操作

3.1 显示当前的数据库

SHOW DATABASES;

3.2 创建数据库  

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
大写的表示关键字
     [] 是可选项
     CHARACTER SET: 指定数据库采用的字符集
     COLLATE: 指定数据库字符集的校验规则
     

3.3 使用数据库

use 数据库名;

 4.4 删除数据库

DROP DATABASE [IF EXISTS] db_name;
说明 : 数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除

 4. 常用数据类型

4.1整数类型

     对于整型类型的范围:
1. 有符号范围: -2^ (类型字节数 *8-1 )到 2^ (类型字节数 *8-1 -1 ,如 int 4 字节,就
-2^31 2^31-1
2. 无符号范围: 0 2^ (类型字节数 *8 -1 ,如 int 就是 2^32-1
尽量不使用 unsigned ,对于 int 类型可能存放不下的数据, int unsigned 同样可能存放不下,与其如此,还不如设计时,将int 类型提升为 bigint 类型。

MySQL数据库_第2张图片

 4.2字符串类型

MySQL数据库_第3张图片

4.3日期类型 

MySQL数据库_第4张图片

 5.表的操作

5.1查看表结构

desc 表名;

MySQL数据库_第5张图片

 5.2 创建表

CREATE TABLE table_name (
       field1 datatype,
       field2 datatype,
       field3 datatype
);

示例:

create table stu_test (
  id int ,
  name varchar ( 20 ) comment ' 姓名 ' ,
  password varchar ( 50 ) comment ' 密码 ' ,
  age int ,
  sex varchar ( 1 ),
  birthday timestamp ,
  amout decimal ( 13 , 2 ),
  resume text
);

5.3 删除表

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例:

-- 删除 stu_test
drop table stu_test;
-- 如果存在 stu_test 表,则删除 stu_test
drop table if exists stu_test;

 6.MySQL表的增删改查

6.1 新增(Create

语法:
INSERT [ INTO ] table_name
[( column [, column ] ...)]
VALUES (value_list) [, (value_list)] ...
value_list: value , [, value ] ...

案例: 

-- 创建一张学生表
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT ,
  sn INT comment ' 学号 ' ,
  name VARCHAR ( 20 ) comment ' 姓名 ' ,
  qq_mail VARCHAR ( 20 ) comment 'QQ 邮箱 '
);

6.1.1 单行数据 + 全列插入

              -- 插入两条记录, value_list 数量必须和定义表的列的数量及顺序一致
INSERT INTO student VALUES ( 100 , 10000 , ' 唐三藏 ' , NULL );
INSERT INTO student VALUES ( 101 , 10001 , ' 孙悟空 ' , '11111' );

6.1.2 多行数据 + 指定列插入

                 -- 插入两条记录, value_list 数量必须和指定列数量及顺序一致
INSERT INTO student (id, sn, name) VALUES
( 102 , 20001 , ' 曹孟德 ' ),
( 103 , 20002 , ' 孙仲谋 ' );

 6.2. 查询(Retrieve

语法:
SELECT
[ DISTINCT ] {* | {column [, column ] ...}
[ FROM table_name ]
[ WHERE ...]
[ ORDER BY column [ ASC | DESC ], ...]
LIMIT ...
案例:
-- 创建考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
id INT ,
name VARCHAR ( 20 ),
chinese DECIMAL ( 3 , 1 ),
math DECIMAL ( 3 , 1 ),
english DECIMAL ( 3 , 1 )
);
-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
( 1 , ' 唐三藏 ' , 67 , 98 , 56 ),
( 2 , ' 孙悟空 ' , 87.5 , 78 , 77 ),
( 3 , ' 猪悟能 ' , 88 , 98.5 , 90 ),
( 4 , ' 曹孟德 ' , 82 , 84 , 67 ),
( 5 , ' 刘玄德 ' , 55.5 , 85 , 45 ),
( 6 , ' 孙权 ' , 70 , 73 , 78.5 ),
( 7 , ' 宋公明 ' , 75 , 65 , 30 );

6.2.1 全列查询

-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大;
-- 2. 可能会影响到索引的使用。
SELECT * FROM exam_result;

6.2.2 指定列查询

-- 指定列的顺序不需要按定义表的顺序来
SELECT id, name, english FROM exam_result;

6.2.3 查询字段为表达式

-- 表达式不包含字段
SELECT id, name, 10 FROM exam_result;
-- 表达式包含一个字段
SELECT id, name, english + 10 FROM exam_result;
-- 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam_result;

6.3别名

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称,语法:
SELECT column [ AS ] alias_name [...] FROM table_name ;
-- 结果集中,表头的列名 = 别名
SELECT id, name, chinese + math + english 总分 FROM exam_result;

你可能感兴趣的:(java,数据库,数据库,mysql)