sql基础

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

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

关系型数据库特点比较:

Oracle:运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域,但是价格昂贵。

DB2:速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域,但是价格昂贵。

SQL Server:全面,效率高,界面友好,操作容易,但是不跨平台。适用于中小型企业领域。

MySQL:开源,体积小,速度快。适用于中小型企业领域。

数据库查询语言(DQL)SELECT

数据库操作语言(DML)INSERT UPDATE DELETE

事务处理语言(TPL)它的语言能确保被DML语言影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION ,COMMIT和ROLLBACK
1.原子性-----》事务中所有的操作不可分割

2.一致性----》事务执行后,数据库中状态要和业务规则保持一致

3.隔离性:
一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

4.持久型:一旦事务提交成功,事务中所有的数据操作都必须被持久化在数据库中

mysql中开启和关闭事务
开启:
start transaction tag
关闭:

commit(提交)----事务将对条执行的sql语句持久化到数据库中

rollback(回滚)----回滚到事务开始的起点

数据库的引擎-----innoDB myMYISAM

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

操作数据库的流程
建立连接(认证身份)
客户端向服务器端发送SQL命令
服务器端执行SQL,并返回执行的结果
客户端接收结果(并显示)
断开连接

启动和连接MySQL
1.启动MySQL服务:
打开数据库连接之前:一定要保证MySQL服务已经开启了.
在服务中找到MySQL的服务,查看是否处于正在运行的状态

在Windows中使用命令控制服务的状态(必须使用管理员身份开启命令行)

开启服务: net start 服务名 如: net start mysql

关闭服务: net stop 服务名 如: net stop mysql

用户数据库(用户自定义的数据库):一般的,一个项目一个用户数据库。

数据库操作命令

(1)查看和选择数据库

查看数据库服务器存在哪些数据库:SHOW DATABASES;

使用指定的数据库:USE database_name;

查看指定的数据库中有哪些数据表: SHOW TABLES;

(2)创建和删除数据库

创建指定名称的数据库: CREATE DATABASE database_name;

删除数据库:DROP DATABASE database_name;

mysql和java数据类型比较
INT int/Integer
BIGINT long/Long
FLOAT float/Float
DOUBLE double/Double
DECIMAL(s,p) BigDecimal
char(size) 定长字符,0 - 255字节,size指N个字符数,若插入字符数超过设定长度,会被截取并警告。

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

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

注意:在MySQL中,字符类型必须指定长度,值要使用单引号引起来。 相当于Java中字符串(String,StringBuilder/StringBuffer);

查看表结构和删除表
查看表目录 show tablas;
查看表结构 desc table_name;
查看DDL语句 show create table table_name;
删除表 droptabletable_name;

表的约束:表的约束(针对于某一列)
非空约束:NOT NULL(NK),不予许某一列的内容为空
设置列的默认值:DEFAULT
唯一约束:UNIQUE(UK),在该表的内容必须唯一
主键约束:PRIMARY KEY(PK)飞空且唯一
主键自增长:AUTO_INCRAMENT,从1开始,步长为1(MySQL特有)
外键约束:FOREIGN KEY(FK),A表中的外键列的值必须参照与B表中的mouyilie(B表主键)

避免重复数据-DISTINCT
select DISTINCT 列名,… from table_name;

要让MySQL查询区分大小写,可以:

SELECT * FROM table_name WHERE BINARY productName=‘g9x’

SELECT * FROM table_name WHERE BINARY productName=‘G9X’

优先级规则和逻辑
分析SQL:SELECT * FROM product WHERE (NOT productName LIKE ‘%M%’ AND salePrice > 100) OR (dir_id = 2)

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

格式:SELECT FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。

集合查询-IN
使用In运算符,判断列的值是否在指定的集合中 格式:where 列名 IN(值1,…);

空值查询-IS NULL IS NULL:判断列值是否为空 格式:where 列名 IS NULL;

模糊查询 LIKE 运算符执行通配查询 %通配符可以表示零或多个字符

结果排序 排序通过ORDER BY 实现 ASC 升序 DESC降序 默认是升序

分页设计
假分页(内存分页)所有数据已经存在内存中,只是显示部分而已 消耗内存极大 容易内存溢出
真分页(数据库分页):每次翻页都去数据库查询数据

优点:不会造成内存溢出

缺点:翻页比较慢,复杂
此时,我们讲解MySQL特有的分页方式(LIMIT,在Oracle12C中也提供类似的语法).

设置每页最多3条记录:
语法: LIMIT ?, ?
参数1:
参数2:
第一页:
第二页:
第三页:
第四页:
第N页:

演示下公式的分页查询效果 LIMIT (currentPage-1) * pageSize, pageSize

聚合函数/统计函数
聚合函数作用于一组数据,并对一组数据返回一条记录
COUNT:统计结果记录数
MAX:统计计算最大值
MIN:统计计算最小值
SUM:统计计算求和
AVG:统计计算平均值

你可能感兴趣的:(sql基础)