对于前端开发者而言,数据库是一个全新的知识,它跟前端基本没什么关系,纯粹是后端领域的知识,而且数据库的水是非常深的,有一种职业叫数据库DBA
,能成为一种职业,可想而知,里面包含的知识量是非常大的。那么对于我们前端开发者而言,数据库要不要学?答案是肯定的,但是我们只需要学平时能用到即可,不需要了解那么深,毕竟前端多多少少是需要了解一点后端知识的,所以数据库是绕不过的一个点。?
? 这是数据库简介的思维导图,主要围绕
数据库能干什么
、数据库类型
、数据库术语
、MySql数据库
三方面展开
都叫数据库了,毋庸置疑,数据库肯定是用来存储数据的了,我们在写代码的时候,数据存在哪?是不是存在变量里面,那变量又存哪?变量是不是在内存里面,内存有两个特点,一个是存取速度很快,另一个是数据容易丢失,不能持久存取,只要电脑一重启或者程序一退,之前在内存的东西就没了??♂?。当我们发送Ajax请求的时候,可能会将用户的信息发送到服务器,这些信息就是持久化存储在数据库的,如果是小文件持久存储,也可以不用数据库,用json文件就行了,缺点就是如果数据量大了,很难管理。所以数据库可以帮助我们持久化的存储数据,在此基础上还可以自动备份和恢复数据,以免将来不会造成太大损失,数据库另一个优点就是可以快速的存取数据,最后一个就是权限控制,这点是针对开发者的,公司一般会给我们分配一个账号,这个账号可以获取数据库有限的操作权限。
? 其实数据库解决的问题用一句最本质的话来说:就是来适配内存和磁盘之间存储格式不一致
总结:
数据库能帮我们干什么?
数据库的类型有三种,关系型数据库、非关系型数据库以及面向对象数据库,其中最重要的是前两种,接下来,我们就一次展开说说?
关系型数据库的特点是以表和表的关联结构构成的数据库结构。什么意思呢?比如说我们新建了一个excel学生信息表格,年龄、家庭住址等我们可以做一个单独的表格出来,这几个表格一起组成了学生信息大表格。看图就明白了
关系型数据库可以表达复杂的数据关系,表与表之间是如何关联的,并且它还提供了一个强大的查询语言MySql,可以精确查找想要的数据。同样也是有缺点的,它的读写性能是比较差的,尤其是面对海量数据读写的时候,这主要是因为受限于内部的存储机构,跟非关系型数据库相比是比较差的,另一个缺点是它的数据结构比较死板,一旦定义了几列数据,就不能随意增加。
关系型数据库几个代表:
非关系型数据库相比关系型数据库而言学习成本是很低的,它的特点就是以极其简单的结构存储数据。非关系型数据库主要有四种数据存储类型:文档存储、键值对存储、基于列的数据库以及图形数据库。
优点:
缺点:
用途:
基于以上的特点,我们一般用于存储结构非常简单的数据,比如说:“用户的访问记录,什么时间,访问了哪个页面”
非关系型数据库几个代表:
面向对象数据库就不说了,这是像java、c#面向对象的语言要把内存的对象原封不动的存到硬盘要做适配,我们用的比较少,但是用起来是非常方便的,这种一般是商业机构做的,要收费的
安装就不说了哈?
在MySQL中,可以使用CREATE TABLE语句创建表。语法如下:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
...
);
其中,table_name为要创建的表的名称;column1、column2、column3等为表的列名;datatype为列的数据类型。例如,创建一个名为users的表,包含id、name和email三个字段:
CREATE TABLE users (
id INT,
name VARCHAR(50),
email VARCHAR(100)
);
如果需要修改表的结构,可以使用ALTER TABLE语句。常见的修改包括添加列、修改列定义、删除列、重命名表等。下面是一些示例:
添加列:
ALTER TABLE table_name ADD column_name datatype;
修改列定义:
ALTER TABLE table_name MODIFY column_name new_datatype;
删除列:
ALTER TABLE table_name DROP COLUMN column_name;
重命名表:
ALTER TABLE table_name RENAME TO new_table_name;
如果需要删除整个表及其数据,可以使用DROP TABLE语句。语法如下:
DROP TABLE table_name;
约束条件用于保证表中数据的完整性和准确性。在MySQL中,我们可以使用如下约束条件:
索引是提高查询性能的重要手段。在MySQL中,我们可以使用"CREATE INDEX"语句来创建索引。下面是一些创建索引的基本语法:
CREATE INDEX index_name ON table_name (column_name);
CREATE INDEX index_name ON table_name (column1, column2, ...);
请注意,过多的索引会增加数据插入和更新的开销。
为了保证数据的安全性,应该定期对数据库表进行备份。在MySQL中,可以使用"Mysqldump"工具来实现备份和恢复操作。下面是备份和恢复的基本命令:
mysqldump -u username -p database_name table_name > backup.sql
mysql -u username -p database_name < backup.sql
在MySQL中,可以使用SELECT
语句查询表中的数据。SELECT语句的基本语法如下:
SELECT column1, column2, ... FROM table_name;
其中,column1、column2等为要查询的列名,用逗号分隔;table_name为要查询的表的名称。例如,查询users表中所有记录:
SELECT * FROM users;
上述语句中的星号(*)表示查询所有列。如果要查询特定列的数据,可以将星号替换为列名。例如,查询users表中的name和email列:
SELECT name, email FROM users;
在实际应用中,经常需要根据特定条件筛选表中的数据。在MySQL中,可以使用WHERE子句实现条件查询。WHERE子句的基本语法如下:
SELECT column1, column2, ... FROM table_name WHERE condition;
其中,condition为筛选条件,可以使用比较运算符(如=、>、<)、逻辑运算符(如AND、OR)等。例如,查询users表中age大于等于18岁的用户:
SELECT * FROM users WHERE age >= 18;
在MySQL中,可以使用ORDER BY子句对查询结果进行排序。ORDER BY子句的基本语法如下:
SELECT column1, column2, ... FROM table_name ORDER BY column_name ASC/DESC;
其中,column_name为要排序的列名;ASC表示升序排列,DESC表示降序排列。例如,查询users表中所有数据,并按age列降序排列:
SELECT * FROM users ORDER BY age DESC;
当表中数据量较大时,可能需要分页展示查询结果。在MySQL中,可以使用LIMIT子句实现分页查询。LIMIT子句的基本语法如下:
SELECT column1, column2, ... FROM table_name LIMIT offset, count;
其中,offset为起始位置偏移量,表示从哪一行开始返回数据;count为返回数据的行数。例如,查询users表中第6至10条记录:
SELECT * FROM users LIMIT 5, 5;
在实际应用中,经常需要对表中的数据进行统计和分析。在MySQL中,可以使用聚合函数(如COUNT、SUM、AVG、MAX、MIN等)实现聚合查询。聚合函数的基本语法如下:
SELECT aggregate_function(column_name) FROM table_name WHERE condition;
其中,aggregate_function为聚合函数名;column_name为要进行聚合计算的列名。例如,查询users表中age列的平均值:
SELECT AVG(age) FROM users;
查询优化在实际应用中,为了提高查询效率,经常需要对查询语句进行优化。以下是一些常见的MySQL查询优化方法:
以上就是今天的分享,希望对大家有所帮助?
我正在参与 腾讯云开发者社区数据库专题有奖征文。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。