首页 > 数据库 > MySQL >

day03_mySQL_总结

2017-04-24

day03_mySQL_总结。数据库是是按照数据结构来组织、存储和管理数据的仓库。—->存储和管理数据的仓库。

day03_mySQL_总结。

数据库概述

概念

数据库 (DataBase : DB )

数据库是是按照数据结构来组织、存储和管理数据的仓库。—->存储和管理数据的仓库.

数据库管理系统(Database Management System:DBMS)

是专门用于管理数据库的计算机系统软件。数据库管理系统能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。

我们一般说的数据库,就是指的 DBMS : 数据库服务器

db 技术发展

层次数据库和网状数据库技术阶段: 使用指针来表示数据之间的联系

关系数据库技术阶段: 经典的里程碑阶段。代表 DBMS:OracleDB2、MySQL、SQL Server、SyBase 等。

后关系数据库技术阶段: 关系型数据库存在数据模型,性能,拓展伸缩性的缺点,出现了:

ORDBMS:面向对象数据库技术。 NoSQL :结构化数据库技术。

随着大数据的不断发展,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速,出色的 NoSQL 数据库.

常见的 NoSQL 数据库分为四大类

键值存储数据库:Oracle BDB,Redis,BeansDB 列式储数数据库:HBase,Cassandra,Riak 文档型数据库:MongoDB,CouchDB 图形数据库:Neo4J,InfoGrid,Infinite Graph

常见数据库分析

数据库系统 所属公司 特点
Oracle Oracle 运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域。
DB2 IBM 速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域。
SQL Server MS 全面,效率高,界面友好,操作容易,但是不跨平台。适用于于中小型企业领域。
MySQL AB -> SUN -> Oracle 开源,体积小,速度快。适用于于中小型企业领域。

SQL

结构化查询语言 (Structured Query Language)。是关系型数据库标准语言。

特点

简单,灵活,功能强大。

分类

包含 6 个部分

1. 数据查询语言(DQL)

其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字 SELECT 是 DQL(也是所有 SQL)用得最多的动词,其他 DQL 常用的保留字有 WHERE,ORDER BY,GROUP BY 和 HAVING。这些 DQL 保留字常与其他类型的 SQL 语句一起使用。

2. 数据操作语言(DML)

其语句包括动词 INSERT,UPDATE 和 DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

3. 事务处理语言(TPL)

它的语句能确保被 DML 语句影响的表的所有行及时得以更新。TPL 语句包括 BEGIN TRANSACTION,COMMIT 和 ROLLBACK。

4. 数据控制语言(DCL)

它的语句通过 GRANT 或 REVOKE 获得许可,确定单个用户和用户组对数据库对象的访问。某些 RDBMS 可用 GRANT 或 REVOKE 控制对表单个列的访问。

5. 数据定义语言(DDL)

其语句包括动词 CREATE 和 DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL 包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

6. 指针控制语言(CCL)

它的语句,像 DECLARE CURSOR,FETCH INTO 和 UPDATE WHERE CURRENT 用于对一个或多个表单独行的操作。

书写规则

在 MySQL 数据库中,SQL 语句大小写不敏感 SQL 语句可单行或多行书写 在 SQL 语句中,关键字不能跨多行或缩写 为了提高可读性,一般关键字大写,其他小写 空格和缩进使程序易读

我们说 MySQL 是一种关系型数据库。关系数据库最重要的概念就是表. 表具有固定的列数和任意的行数,在数学上称为“关系”。

二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录;

表中的列表示属性,称为 Field,相当于通常记录中的一个数据项,也叫列、字段。

MySQL

启动和使用

开启服务

打开数据库连接之前:一定要保证 MySQL 服务已经开启了.

开启一个服务

net start MySQL(window 服务名)

关闭一个服务

net stop MySQL

查看已经开启的服务, 运行services.msc

连接库

方式1

进入 MySQL, 在命令行中输入密码

方式2

在命令行中

mysql -u账户 -p密码 -h数据库服务器安装的主机 -P数据库端口

比如:

mysql -uroot -padmin -h127.0.0.1 -P3306

若连接的数据库服务器在本机上,并且端口是3306。则可以简写

mysql -uroot -padmin

操作库

创建库

CREATE DATABASE jdbcdemo;

查看库

SHOW DATABASES;

使用库

USE jdbcdemo;

删除库

DROP DATABASE jdbcdemo;

数据库引擎

MyISAM:拥有较高的插入,查询速度,但不支持事务,不支持外键。 InnoDB: 支持事务,支持外键,支持行级锁定,性能较低。

所有的引擎

MySQL 列常用类型

整数

MySQL 列类型 Java 数据类型
INT int/Integer
BIGINT long/Long

MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。
例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。
需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。一般不用指定位宽。

小数类型

FLOAT[(s,p)]:DOUBLE[(s,p)] :小数类型,可存放实型和整型 ,精度 (p) 和范围 (s) , 比如:

money double(5,2): 整数和小数一共占5为.其中小数占2位.都不够精确。

定点数据类型: DECIMAL,高精度类型,金额货币优先选择。

MySQL 列类型 Java 数据类型
FLOAT float/Float
DOUBLE double/Double
DECIMAL BigDecimal

字符类型

char(size) : 定长字符,0 - 255 字节,size 指 N 个字符数,若插入字符数超过设定长度,会被截取并警告。 varchar(size) : 变长字符,0 - 255 字节,从 MySQL5 开始支持 65535 个字节,若插入字符数超过设定长度,会被截取并警告。

一般存储大量的字符串,比如文章的纯文本,可以选用 TEXT 系列类型。

注意:在 MySQL 中,字符使用单引号引起来。 相当于 Java 中字符串 (String, StringBuilder / StringBuffer)

时间类型

日期和时间类型为 DATETIME、DATE、TIMESTAMP、TIME和YEAR。

注意:在 MySQL 中,日期时间值使用单引号引起来。 相当于 Java 中 Date,Calender。

二进制类型

BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB:存放图形、声音和影像,二进制对象,0 - 4GB。
开发中,我们一般存储二进制文件保存路径。

BIT:我们一般存储0或1,存储是Java中的boolean/Boolean类型的值。

操作表

表的命名

若在建表中使用到了数据库的关键字.比如新建一张订单表: (order) ,但是「order」是数据库中的关键字(排序使用).那么就是用t_order, 若一定要使用使用「order」这个单词.此时使用反引号「`」括起来,`order`.

一般,起表名为:t_名字。

表的约束

非空约束:NOT NULL,不允许某列的内容为空。 设置列的默认值:DEFAULT。 唯一约束:UNIQUE,在该表中,该列的内容必须唯一。 主键约束:PRIMARY KEY, 非空且唯一。 主键自增长:AUTO_INCREMENT,从 1 开始,步长为 1。 外键约束:FOREIGN KEY,A 表中的外键列. A 表中的外键列的值必须参照于 B 表中的某一列 (B 表主键)

主键设计

单字段主键,单列作为主键,建议使用。
复合主键,使用多列充当主键,不建议。

主键分为两种:

自然主键:使用有业务含义的列作为主键(不推荐使用); 代理主键:使用没有业务含义的列作为主键(推荐使用);

操作

创建表

CREATE TABLE  t_student(
    id      INT(10),
    name    VARCHAR(10),
    email   VARCHAR(20),
    age     INT(10)
  );

查看表结构

DESC table_name;

查看表的详细定义

SHOW CREATE TABLE table_name;

删除表

DROP TABLE table_name;

操作数据 (DML)

插入语句

一次插入操作只插入一行

插入完整数据记录

INSERT INTO 表名(列名1, 列名2, 列名3....) VALUES(值1, 值2, 值3....)

插入数据记录一部分

INSERT INTO 表名(列名1, 列名2, 列名3....) VALUES(值1, null, 值3....)

插入多条数据记录(MySQL特有)

INSERT INTO 表名(列名1, 列名2, 列名3....) VALUES(值1, 值2, 值3....),(值11, 值22, 值33....),(值111, 值222, 值333....)

插入查询结果(测试用)

INSERT INTO 表名(列名1, 列名2, 列名3....)  SELECT  列名1, 列名2, 列名3.... FROM  表名2

修改语句

UPDATE   表名
SET 要修改的列 1= 改后的值 1  [, 列2= 值2] …
[WHERE  condition];

如果省略了 where 子句,则全表的数据都会被修改。注意 : 没有FROM

删除语句

DELETE  FROM    表名
[WHERE  condition];

如果省略了 where 子句,则全表的数据都会被修改

清空表: 删除表的数据DELETE 删减表: 将表回复到初始状态: TRUNCATE

查询数据 (DQL)

一般查询

语法

SELECT  [列名1, 列名2, 列名3....]  FROM  表名  [WHERE   条件1   条件2   ....]

说明

SELECT 选择查询列表 FROM 提供数据源(表、视图或其他的数据源)

如果为「*」和创建表时的顺序一致。可以自己调整顺序,在 select 后边加上要查询的列名。

建议查询的时候,最好是将要查询的列显示出来,即使是查全部列

查询中运算和别名和 CONCAT

对 NUMBER 型数据可以使用算数操作符创建表达式(+ - * /)
对 DATE 型数据可以使用部分算数操作符创建表达式 (+ -)

运算符优先级

乘法和除法的优先级高于加法和减法 同级运算的顺序是从左到右 表达式中使用”括号”可强行改变优先级的运算顺序

设置列名的别名

SELECT 列1   as  别名   FROM 表名  

其中:as 可以省略

作用:
1. 改变列的标题头;
2. 用于表示计算结果的含义;
3. 作为列的别名;
4. 如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都需加单引号;

CONCAT

为方便用户浏览查询的结果数据,有时需要设置显示格式,可以使用 CONCAT 函数来连接字符串。

SELECT productName, salePrice, CONCAT(productName, '商品的零售价为:',salePrice) FROM t_product;

过滤查询

使用 WHERE 子句限定返回的记录

SELECT       列的列表
FROM    表名
WHERE   条件;

WHERE 子句在 FROM 子句后

select 和 where 的执行顺序

1、先执行 FROM,先找到数据
2、再 WHERE, 筛选出符合条件的数据
3、才执行 SELECT

所以不能在 WHERE 中使用别名

运算符

运算符 含义
= 等于
> 大于
>= 大于或等于
< 小于
<= 小于或等于
!=(<>) 不等于
AND(&&) 如果组合的条件都是 TRUE, 返回 TRUE
OR(||) 如果组合的条件之一是 TRUE, 返回 TRUE
NOT(!) 如果下面的条件是 FALSE, 返回 TRUE`

BETWEEN

显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。

WHERE 列名 BETWEEN  最小值 AND 最大值:闭区间。

IN

判断列的值是否在指定的集合中。

WHERE 列名 IN (值1,值2....);

IS NULL

判断列的值是否为空。

WHERE  列名  IS NULL;

LIKE

执行通配查询,查询条件可包含文字字符或数字

通配符 含义
% 可表示零或多个字符
_ 可表示一个字符

SELECT id, productName
FROM product
WHERE productName LIKE &#39;%罗技M9_&#39;;
相关文章
最新文章
热点推荐