数据库基础概念
概念
什么是数据库
简而言之,就是存储数据,管理数据的仓库。
常见的数据库分为:
关系型数据库, Oracle、MySQL、SQLServer、Access
非关系型数据库, MongoDB、Redis、Solr、ElasticSearch、Hive、HBase
关系型和非关系型
早期发展的数据库建立在数据的紧密关系基础之上(如:父子关系、师生关系),我们称其为关系型数据库,也称为
传统数据库;现今数据库建立在数据的松散关系基础之上(如:中国人和美国人、中国人和印度人、视频、音频),我们称其为非关系型数据库nosql(not only sql)。业界总在争论nosql能否干掉传统数据库,很多初学者也有这个困惑。以我来看,两者没有矛盾,它们各有特点,根据业务情况互补才是真谛。但总的来说原来关系型数据库一统天下的格局早被打破,领土不断被蚕食,规模一再的缩小,虽然无法全面被替代,但却早已风光不在,沦落到一偶之地,Oracle的衰落就是最好的证明,早期只要是全球大企业无一例外都是部署Oracle,但现在都在去Oracle化,阿里就已经全面排斥Oracle。
关系数据库
关系型数据库有特定的组织方式,其以行和列的形式存储数据,以便于用户理解。关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据集合。
Mysql
- mysql服务端,它来处理具体数据维护,保存磁盘
- mysql客户端,CRUD新增,修改,删除,查询
SQL语句
分类
-
DML(Data Manipulation Language)数据操纵语言
如:insert,delete,update,select(插入、删除、修改、检索)简称CRUD操新增Create、查询Retrieve、修改Update、删除Delete -
DDL(Data Definition Language)数据库定义语言
如:create table之类 -
DCL(Data Control Language)数据库控制语言
如:grant、deny、revoke等,只有管理员才有相应的权限
数据查询语言(DQL:Data Query Language):
注意:SQL不区分大小写
数据库常用操作
/注意一下操作实在DOS窗口使用dos命令操作时现的,操作语句通用/
建库
- 创建数据库,数据库名称:cbg2011
1. create database cbg2011 DEFAULT CHARACTER SET utf8;![在这里插入图片描述](https://img-blog.csdnimg.cn/809b4edcb3eb45e684016a7b809c6df2.png)
删库
- 删除名称为cbg2011的数据库
2.drop databases cgb2011
查看所有数据库
3. show databases
表的常用操作
1. 使用数据库 use cgb011
创建表
- 创建tb_door表,有id,door_name,tel字段
create table tb_door(
id int primary key auto_increment,
door_name varchar(100),
tel varchar(50)
);
查看表结构
desc 表名;
删除表
drop table 表名;
修改表结构
给表增加 name元素
alter table 表名 add name varchar(10);
alter table 表明 add column 字段名,字段类型,长度
删除表中id元素
alter table 表名 drop id;
表记录的常用操作
插入记录
向tb_door表中插入2条记录
insert into tb_door values(null,'永和大王1店',666);
insert into tb_door values(null,' 永和大王2店',888);
/*如果插入中文报错,在插入之前执行一句:set names gbk;*/
查询记录
查询tb_door表中的所有记录
SELECT * FROM tb_door;
修改记录
修改tb_door表中id为1的记录
update tb_door set tel=555 where id=1;
删除记录
删除tb_door表中id为2的数据
Delete from tb_door where id=2;
排序
将tb_door表记录按照tel排序
Select * from tb_door order by tel desc;
记录总数
查询tb_door表中的总记录数【=
Select count(*) from tb_door;
数据类型
命名规则
- 字段名必须以字母开头,尽量不要使用拼音
- 长度不能超过30个字符(不同数据库,不同版本会有不同)
- 不能使用SQL的保留字,如where,order,group
- 只能使用如下字符az、AZ、0~9、$ 等
- Oracle习惯全大写:USER_NAME,mysql习惯全小写:user_name
- 多个单词用下划线隔开,而非java语言的驼峰规则
字符
- char长度固定,不足使用空格填充,最多容纳2000个字符,char(11)存储abc,占11位。查询速度极快但浪费空间
- varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。查询稍慢,但节省空间。Oracle为varchar2
- 大文本: 大量文字(不推荐使用,尽量使用varchar替代)
- 以utf8编码计算的话,一个汉字在u8下占3个字节
注:不同数据库版本长度限制可能会有不同
数字
- tinyint,int整数类型
- float,double小数类型
- numberic(5,2) decimal(5,2)—也可以表示小数,表示总共5位,其中可以有两位小数
- decimal和numeric表示精确的整数数字
日期
- date 包含年月日
- time时分秒
- datetime包含年月日和时分秒
- timestamp时间戳,不是日期,而是从1970年1月1日到指定日期的毫秒数
图片
- blob 二进制数据,可以存放图片、声音,容量4g。早期有这样的设计。但其缺点非常明显,数据库庞大,备份缓慢,这些内容去备份多份价值不大。同时数据库迁移时过大,迁移时间过久。所以目前主流都不会直接存储这样的数据,而只存储其访问路径,文件则存放在磁盘上。