一、数据库介绍
1. 数据库的介绍
数据库是存储和管理数据的仓库,数据按照一定的格式进行存储,用户可以对数据库中的数据进行增加、修改、删除和查询操作。
2. 数据库的分类
● 关系型数据库
采用了关系模型来组织数据的数据库,关系模型指的是二维表格模型,类似于 Excel 文件中的表格,强调使用表格的方式存储数据。
核心元素有:数据行、数据列、数据表、数据库(数据表的集合)
● 非关系型数据库
非关系型数据库,又被称为 NoSQL(Not Only SQL),意为不仅仅是 SQL,对 NoSQL 最普遍的定义是“非关联型的”,强调 Key-Value 的方式存储数据。
3. 数据库的特点
(1) 持久化存储;
(2) 读写数据极高;
(3) 保证数据的有效性。
二、关系型数据库管理系统
1. 关系型数据库管理系统的介绍
数据库管理系统是为管理关系型数据库而设计的软件系统,如果想要使用关系型数据库就需要安装数据库管理系统,其实就是一个应用软件。
2. 关系型数据库管理系统的分类
● 关系型数据库服务端软件
主要负责管理不同的数据库,而每个数据库里面会有一系列数据文件,数据文件是用来存储数据的,其实数据库就是一系列数据文件的集合。
● 关系型数据库客户端软件
主要负责和关系型数据库服务端软件进行通信,向服务端传输数据或者从服务端获取数据。
● 关系型数据库管理系统效果图
(1) 用户操作关系型数据库客户端,实现数据库相关操作;
(2) 关系型数据库客户端借助网络使用 SQL 语言和关系型数据库服务端进行数据通信;
(3)关系型数据库服务端管理着不同的数据库,每个数据库会有一系列的数据文件,数据都保存在数据文件里面,每个数据库可以理解成一个文件夹。
3. SQL 的介绍
SQL 是结构化查询语言,是一种用来操作 RDBMS 的数据库语言,可以操作 oracle、sql server、mysql、sqlite 等关系型数据库。SQL 的作用是实现数据库客户端和数据库服务端之间的通信,SQL 就是通信的桥梁。
SQL 语言主要分为:
● DQL:数据查询语言,用于对数据进行查询,如 select
● DML:数据操作语言,对数据进行增加、修改、删除,如 insert、update、delete
● TPL:事务处理语言,对事务进行处理,包括 begin transaction、commit、rollback
● DCL:数据控制语言,进行授权与权限回收,如 grant、revoke
● DQL:数据定义语言,进行数据库、表的管理等,如 create、drop
三、MySQL 数据库
https://blog.csdn.net/maergaiyun/article/details/108234038
四、数据类型和数据约束
1. 数据类型
数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来,使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
常用的数据类型如下:
● 整数:int,bit
● 小数:decimal
● 字符串:varchar,char
● 日期时间:date,time,datetime
● 枚举类型(enum)
数据类型说明:
● decimal 表示浮点数,如 decimal(5, 2)表示共存 5 位数,小数占 2 位
● char 表示固定长度的字符串,如 char(3),如果填充“ab”时会补上一个空格为“ab”,3 表示字符数
● varchar 表示可变长度的字符串,如 varchar(3),填充“ab”时就会存储“ab”,3 表示字符数
● 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径
● 字符串 text 表示存储大文本,当字符大于 4000 时推荐使用,比如技术博客
2. 数据约束
常见的约束:
● 主键 primary key:物理上存储的顺序。MySQL 建议所有表的主键字段都叫 id,类型为 int unsigned
● 非空 not null:此字段不允许填写空值
● 唯一 unique:此字段的值不允许重复
● 默认 default:当不填写字段对应的值会使用默认值,如果填写时以填写为准
● 外键 foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
3. 数据类型附录表
(1)整数类型
(2)字符串
(3)时间类型
五、图形化客户端 Navicat
略
六、命令行客户端 MySQL 的使用
1. 登录和登出数据库
(1)登录数据库:mysql -uroot -p
● -u 后面是登录的用户名
● -p 后面是登录密码,如果不填写,回车之后会提示输入密码
(2)显示当前时间:select now();
(3)登出数据库:quit 或 exit 或 ctrl+d
2. 数据库操作的 SQL 语句
(1)查看所有数据库:show databases;
(2)创建数据库:create database 数据库名 charset=utf8;
(3)使用数据库:use 数据库名;
(4)查看当前使用的数据库:select database();
(5)删除数据库:drop database 数据库名;
3. 表结构操作的 SQL 语句
(1)查看所有数据库:show tables;
(2)创建表:create table job(id int unsigned primary key auto_increment not null, job varchar(20) not null, number tinyint unsigned default 0, salary decimal(3, 2), position enum("北京", "深圳")) default charset=utf8;
(3)修改表的字符编码:alter table job_content default character set utf8;
(4)修改表-添加字段:alter table job add nature varchar(20);
(5)修改表-修改字段类型:alter table job modify nature varchar(10) default 'SOE';
● modify 只能修改字段类型或约束,不能修改字段名
(6)修改表-修改字段名和字段类型:alter table job change number quantity decimal(3, 2) default 1;
(7)修改表名:alter table job rename to jobs;
(8)修改表-删除字段:alter table job drop nature;
(9)查看创表 SQL 语句:show create table job;
(10)查看创库 SQL 语句:show create database sxf;
(11)删除表:drop table job;
4. 表数据操作的 SQL 语句
(1)查询所有列:select * from job;
(2)查询指定列:select job saraly from job;
(3)添加数据-全列插入:insert into job values(0, "develop", 8, 1.8, "深圳");
● 主键列是自动增长的,但是在全列插入时需要占位,通常使用空值(0 或null 或 default)
● 如果字段列有默认值可以使用 default 来占位
(4)添加数据-部分列插入:insert into job(job, salary, position) values("test", 1.6, "深圳");
(5)添加数据-全列多行插入:insert into job value(3, "operation", 3, 1.5, "北京"),(4, "administration", 2, 1.2, "北京");
(6)添加数据-部分列多行插入:insert into job(job, salary, position) values("purchase", 1.2, "深圳"),("marketer", 1.4, "北京");
(7)修改数据:(1)update job set quantity=6 where id=2;(2)update job set quantity=3,salary=1.7 where id=2;
(8)删除数据-物理删除:delete from job where id=6;
(9)删除数据-逻辑删除:alter table job add is_delete bit not null default 0;update job set is_delete=1 where id=5;
六、as 和 distinct 关键字
1. as 关键字
(1)使用 as 给字段起别名:select id as '序号', job as '职位', quantity as '数量', salary as '薪资', position as '地点', is_delete as '是否删除' from job;
(2)给表起别名:select j.job, j.salary from job as j;
● 自连接必须要给表起别名
2. distinct 关键字
(1)去除重复:select distinct quantity,salary from job;
七、where 条件查询
1. 比较运算符查询
(1)大于等于:select * from job where salary>=1.6;
(2)大于:select * from job where salary>1.3;
(3)等于:select * from job where is_delete=1;
(4)小于等于:select * from job where salary<=1.6;
(5)小于:select * from job where salary<1.6;
(6)不等于:select * from job where salary!=1.6;
2. 逻辑运算符查询
(1)and 与:select * from job where id > 1 and quantity > 2;
(2)or 或:select * from job where position = "深圳" or salary > 1.4;
(3)not 非:select * from job where not (id >= 2 and id <=3);
3. 逻辑运算符查询
(1)like 模糊查询:select * from job where job like "t%";
(2)% 任意多个字符:select * from job where job like "t%";
(3)_ 任意一个字符:select * from job where job like "t%" or job like "%e";
4. 范围查询
(1)between…and… 在一个连续的范围内:select * from job where (id not between 2 and 4) and position = "深圳";
(2)in 在一个非连续的范围内:select * from job where id in (1,3);
5. 空判断查询
(1)is null 空:select * from job where salary is null;
(2)is not null 非空:select * from job where salary is not null;
● null 不等于空字符串
八、排序
1. 排序查询语法
(1)desc 降序:select * from job order by quantity desc, salary desc;
(2)asc 升序:select * from job where quantity=10 order by salary asc;
● 默认是按照升序排列
九、分页查询
1. 分页查询的介绍
在数据量多的情况下,会出现一页显示不完的情况,通过一页一页进行显示的方式,就是分页查询。
2. 分页查询的语法
select * from 表名 limit start, count
● limit 是分页查询关键字
● start 表示开始行索引,默认是 0
● count 表示查询条数
3. 通用语法
每页显示 m 条数据,第 n 页显示的数据:select * from job where limit (n-1)*m, m;