Mysql你应该知道这些

数据库概念:

存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

数据库存储介质:

  • 磁盘
  • 内存

为了解决上述问题,出现了更利于管理数据的软件,数据库,它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。

数据库分类

数据库大体可以分为 关系型数据库 和 非关系型数据库
关系型数据库(RDBMS):是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。基于标准的SQL,只是内部一些实现有区别。

常用的关系型数据库如:

  1. Oracle:甲骨文产品,适合大型项目,适用于做复杂的业务逻辑,如ERP、OA等企业信息系统。收费。
  2. MySQL:属于甲骨文,不适合做复杂的业务。开源免费。
  3. SQL Server:微软的产品,安装部署在windows server上,适用于中大型项目。收费。
  4. MariaDB: 基于 MySQL 的一个开源数据库产品。

非关系型数据库:
(了解)不规定基于SQL实现。现在更多是指NoSQL数据库,如:

  1. 基于键值对(Key-Value):如 redis
  2. 基于文档型:如 mongodb
  3. 基于列族:如 hbase
  4. 基于图型:如 neo4j

Mysql安装

CentOS 7 通过 yum 安装 MariaDB
CentOS 6.5下编译安装MySQL 5.6.14
Windows下通过MySQL Installer安装MySQL服务

SQL分类

SQL,指结构化查询语言,全称是 Structured Query Language。
SQL 让您可以访问和处理数据库。

DDL数据定义语言,用来维护存储数据的结构
代表指令: create, drop, alter

DML数据操纵语言,用来对数据进行操作
代表指令: insert,delete,update

DML中又单独分了一个DQL,数据查询语言,代表指令: select

DCL数据控制语言,主要负责权限管理和事务
代表指令: grant,revoke,commit
主要是应用:DDL和DML的操作。

MySQL 连接

在windows系统中,打开cmd,对电脑中的Mysql进行数据连接。

[root@host]# mysql -u root -p

在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。

以上命令执行后,登录成功输出结果如下:

mysql>

数据库的操作

数据库操作分为:库操作和表操作。

1. 数据库的操作

1.1 显示当前的数据库

SHOW DATABASES;

1.2 创建数据库

CREATE DATABASE 数据库名

示例:

CREATE DATABASE db_test1;

创建名为 db_test1 的数据库
1.3 使用数据库

use 数据库名;

1.4 删除数据库

DROP DATABASE [IF EXISTS] db_name;
2. 数据表的操作

要想操作数据库,需要先进入数据库

use db_test;

2.1查看表结构

desc 表名;

2.2创建表

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

可以使用comment增加字段说明。
例如:

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 );

2.3删除表

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

数据库中常用数据结构

1.数值类型
数据类型大小说明对应java类型对应 C类型
BIT[ (M) ]M指定位数,默认为1二进制数,M范围从1到64,存储数值范围从0到2^M-1常用Boolean对应BIT,此时默认是1位,即只能存0和1char[]
TINYINT1字节Bytesigned;char
SMALLINT2字节Shortshort ;int
INT4字节Integerint
BIGINT8字节Longlong;long;int
FLOAT(M, D)4字节单精度,M指定长度,D指定
小数位数。会发生精度丢失Floatfloat
DOUBLE(M,D)8字节Doubledouble
DECIMAL(M,D)M/D最大值+2双精度,M指定长度,D表示小数点位数。精确数值BigDecimalchar[]
NUMERIC(M,D)M/D最大值+2和DECIMAL一样BigDecimalchar[]
2.字符串类型
数据类型大小说明对应java类型对应 C 类型
VARCHAR (SIZE)0-65,535字节可变长度字符串Stringchar[]
TEXT0-65,535字节长文本数据Stringchar[]
MEDIUMTEXT0-16 777 215字节中等长度文本数据Stringchar[]
BLOB0-65,535字节二进制形式的长文本数据byte[]char[]
3.日期类型
数据类型大小说明对应java类型对应 C 类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索及转换。java.util.Date、java.sql.TimestampMYSQL_TIME
TIMESTAMP4字节范围从1970到2038年,自动检索当前时区并进行转换。java.util.Date、java.sql.TimestampMYSQL_TIME

CRUD操作

注释:在SQL中可以使用“–空格+描述”来表示注释说明
CRUD 即增加(Create)、查询(Retrieve)、删除(Delete)、修改(Update)。

增加(Create)
Create table student {
	id int comment 'id',
	sn int comment '学号',
	name varchar(10) comment '学号',
	qq_email varchar(20) comment '邮箱'
}
插入操作
1.单行插入
Insert into student(id,sn,name,qq_email) values (1,6541,'lin1','684@qq.com');
Insert into student values (1,6541,'lin1','684@qq.com');
2.单行指定列插入
Insert into student(id,sn,name) values (1,6541,'lin1');
-- 没有给值,默认就是null
3。多行全列插入
Insert into student(id,sn,name,qq_email) values 
(2,6222,'lin2','6888@qq.com')
(3,64544,'lin3','68943@qq.com')
;
4.多行指定列插入
Insert into student(id,sn,name) values 
(4,62111,'lin4')
(5,648684,'lin5')
;
查询(Retrieve)

select

-- 创建考试成绩表
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,'孙悟空', 27, 33, 89),
查询操作
1.全表查询
select * from exam_result;
	1.通常不建议使用**是指通配符,查询的结果相当于一个表
	2.缺点:当你查询的数据量比较大时,会造成数据库卡死(重大事故)
2.指定列查询
select id,name,chinese from exam_result;
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;
4.别名
-- 结果集中,表头的列名=别名
SELECT id, name, chinese + math + english as 总分 FROM exam_result;
5.去重
SELECT distinct math FROM exam_result;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值