20201014 王维

心得体会

1. 数据库

2.1 数据库概述

数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立 的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查 询、更新、删除等操作。

2.2 数据的存储方式

  • 数据保存在内存 例如:数组,集合;new出来的对象存储在堆中.堆是内存中的一小块空间 优点:内存速度快 缺点:断电/程序退出,数据就清除了.内存价格贵
  • 数据保存在普通文件 优点:永久保存 缺点:查找,增加,修改,删除数据比较麻烦,效率低
  • 数据保存在数据库 优点:永久保存,通过 SQL 语句比较方便的操作数据库

2.3 数据库的优点

数据库是按照特定的格式将数据存储在文件中,通过 SQL 语句可以方便的对大量数据进行增、删、改、 查操作,数据库是对大量的信息进行管理的高效的解决方案。

2.4 数据库管理系统

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软 件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。 用户通过数据库管理系统访问数据库中表内的数据

2.5 数据库管理系统、数据库和表的关系

数据库管理程序(DBMS)可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保 存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。数据库管理系统、数据 库和表的关系如图所示:

image-20201014231111011

先有数据库 → 再有表 → 再有数据 一个库包含多个表

2.6 常见数据库

MYSQL :开源免费的数据库,小型的数据库。已经被 Oracle 收购了 MySQL6.x 版本也开始收费。

Oracle :收费的大型数据库, Oracle 公司的产品。 Oracle 收购 SUN 公司,收购 MYSQL 。

DB2 : IBM 公司的数据库产品,收费的。常应用在银行系统中 SQLServer : MicroSoft 公司收费的中型的数据库。 C# 、 .net 等语言常使用。

SyBase :已经淡出 历史舞台。提供了一个非常专业数据建模的工具 PowerDesigner 。

SQLite : 嵌入式的小型数据库,应用在手机端。

常用数据库: MYSQL , Oracle 在web应用中,使用的最多的就是 MySQL 数据库,原因如下: 1. 开源、免费 2. 功能足够强大,足以应付web应用开发

2. 建库 建表

数据库语句的关键词建议最好大写

创建数据库语法结构:

create database if not exists db_name
-- create database 表示创建数据库,是SQL中的关键词
-- db_name是要创建的数据库名称

使用数据库:

USE db_name
-- 使用USE关键词来指定要使用的数据库

删除数据库语法结构

drop database db_name
-- 使用DROP关键字删除数据库

3. 创建数据表

创建数据表的语法结构

create table tab_name(
col_name datatype default null/number comment '注释',
col_name datatype
)CHARACTER set 编码格式;
-- 使用create table关键词创建数据表
-- tab_name是数据表的名称
-- col_name是列名称
-- datatype是列的数据类型
-- default是默认值
-- comment是注释

3.1 数据类型

数据类型名称 描述
SMALLINT 小的整数,带符号的范围是-32768到32767.无符号的范围是0到65535
MEDIUMINT 中等大小整数-8388608到8388607,0到16777215
INT/INTEGER 普通大小的整数,-2147483648到2147483647,0到4294967295
BIGINT 大整数,-9223372036854775808到9223372036854775807,0到 18446744073709551615
FLOAT 小(单精度)浮点数,允许的值-3.402823466E+38到-1.175494351E-38,0和 1.175494351E-38到3.402823466E+38,这些是理论限制,基于IEEE标准。实际 的范围根据硬件或操作系统的不同可能稍微小些
DOUBLE 普通大小(双精度)浮点数,允许的值-1.7976931348623157E+380 到-2.2250738585072014E-308,0和2.2250738585072014E-38到 1.7976931348623157E+308.这些事理论限制,基于IEEE标准。实际的范围根据 硬件或操作系统的不同可能稍微小些
DATE 日期,支持的范围为‘1000-01-01’到‘9999-12-31’,MySQL以'YYYY-MM-DD'格式 显示DATE值,但允许使用字符串或数字为DATE列分配值
DATETIME 日期和时间的组合。支持的范围是‘上面加上00:00:00’到‘上面第二个加上 23:59:59’.MySQL以YYYY-MM-DD HH:MM:SS“格式显示DATETIME值,但允 许使用字符串或数字为DATETIME列分配值
TIMESTAMP 时间戳,范围是'1970-01-01 00:00:00'到2037年
TIME 时间,范围是‘-838:59:59’到‘838:59:59’.MySQL以‘HH:MM:SS’格式显示 TIME值,但允许使用字符串或数字为TIME列分配值
YEAR 两位或四位格式的年。默认是四位格式。在四位格式中,允许的值是1901到 2155和0000.在两位格式中,允许的值是70到69,表示从1970到2069年。 MySQL以yyyy格式显示YEAR值,但允许使用字符串或数字为YEAR列分配值
CHAR(M) 固定长度字符串,当保存时在右侧填充空格以达到指定长度。M表示列长度。M 的范围是0到255个字符
VARCHAR(M) 变长字符串。M表示最大列长度。M的范围是0到65535.(VARCHAR的最大实际 长度由最长的行的大小和使用的字符集确定。最大有效长度是65355字节)
BLOB[(M)] 最大长度为65535(216-1)字节,=的BLOB列,可以给出该类型的可选长度M。 如果给出,则MySQL将列创建为最小的但是足以容纳M字节长度的值的BLOB类 型
TEXT[(M)] 长字符串,最大长度为65535(216-1)字符的TEXT列。可以给出可选长度M。则 MySQL将列创建为最小的但是足以容纳M字符长度的值的TEXT类型。

3.2 查看表结构

-- 查看表结构
DESCRIBE dept;

3.2 创建和某表结构一样的表

-- 创建和dept结构一样的表
CREATE TABLE d LIKE dept;

3.3 删除表

DROP TABLE table_name

3.4 添加列

ALTER TABLE d ADD id int;

3.5 修改列

ALTER TABLE d MODIFY id VARCHAR(20);

3.6 修改列名

ALTER TABLE d CHANGE id ss VARCHAR(20);

3.7 删除列

ALTER TABLE d DROP ss;

3.8 重命名表

RENAME TABLE d to dd;

4. CRUD操作

对数据表中的数据操作通常有添加(Create)、查询(Retrieve)、修改(Update)、删除(Delete)、简称 为CRUD。

4.1 添加数据

-- 不推荐使用
INSERT INTO dept VALUE(1,'研发部');
-- 2
INSERT INTO dept VALUES(2,'销售部');
INSERT INTO dept VALUES(3,'行政部'),(4,'技术部');
-- 3
INSERT INTO dept(deptno,deptname)VALUES(5,'安保部');

区别:

  • value和values的区别,values可以同时插入多条数据用逗号隔开
  • dept和dept(列名,列名。。。)区别,如果不写列表必须按照列表创建时的顺序每一列都要添加 有列名的按照列名排列顺序添加

4.2 查询数据

-- 查询所有数据
SELECT *FROM dept;
-- 查询某列的数据
SELECT deptname FROM dept;
-- 根据条件查询*
SELECT deptno FROM dept WHERE deptname='销售部';

4.3 修改数据

--全部修改为6
UPDATE dept SET deptno=6;
--根据条件修改
UPDATE dept SET deptno=1 WHERE deptname='研发部';
UPDATE dept SET deptno=2 WHERE deptname='销售部';
UPDATE dept SET deptno=3 WHERE deptname='行政部';
UPDATE dept SET deptno=4 WHERE deptname='技术部';
UPDATE dept SET deptno=5 WHERE deptname='安保部';

4.4 删除数据

-- 删除数据 ,一定要加 where 条件
DELETE FROM dept WHERE deptno=5;
-- 全部删除
DELETE FROM dept;
-- 清空/截断 所有数据(慎用)
TRUNCATE TABLE dept;

区别:

delete from dd;

truncate table dd;

delete 是清空表中的数据

truncate 是清空表数据,重新创建一个一样表

5. 数据备份和还原

5.1 命令行备份

mysqldump -h127.0.0.1 -uroot -proot db_name>path;

使用mysqldump 命令备份数据库

-h指定数据库所在的服务器的ip地址

-u指定登录数据库的用户名

db_name是要备份的数据库的名称

使用输出目标操作符>,指定输出的文件具体路径c:/back.sql

5.2 命令行还原

mysql -h127.0.0.1 -uroot -proot db_name;

6. 约束

6.1 主键约束

主键约束最显著的特征是主键列中的值是不允许重复的,通过主键约束可强制表的实体完整性。当 创建或更改表时可通过定义 primary key约束来创建主键。一个表只能有一个primary key约束, 且primary key约束中的列不能接受NULL值。

alter table tab_name add constraint pk_name primary key (deptno);
-- 创建表时
CREATE TABLE `table_name` (
`id` int(0) NOT NULL,
`name` varchar(20) ,
PRIMARY KEY (`id`) -- 设置主键
);
-- 设置主键是deptno
ALTER TABLE dept ADD CONSTRAINT pk_name PRIMARY KEY(deptno);

6.2 自增长列

并不是所有表在设计完成后都能找到适合作为主键的列,为此数据库提供了自增长列,自增长列是int类 型的,其值是int类型的,其值是由数据库自动维护的,是永远都不会重复的,因此自增长是最适合作为 主键列的。在创建表时,通过auto_increment关键字来标识自增长列,在MySQL数据库中自增长列必 须时主键列。

6.3 自增长与主键

CREATE TABLE emp(
empNo INT PRIMARY KEY AUTO_INCREMENT,
job VARCHAR(10),
mgr INT,
sal DOUBLE,
comm DOUBLE,
deptno INT
)CHARACTER SET utf8;

6.4 唯一约束

对于非主键列中的值也要求唯一性时,就需要唯一约束

6.5 默认约束

为列中的值设置默认值,default ….,如果已经定了值,默认值就无效了

6.6 外键约束

表中列的值来自于另外一张表的主键或唯一键的列称为外键FK,将被引用值得表称为主表或父表,将引 用值得表称为从表或子表。

alter table userinfo add constraint foreign key fk_dept_no (dept_no) REFERENCES dept(deptno);
-- dept 是主表, userinfo 是从表
-- 在 userinfo 表中添加或修改时, dept_no 列的值必须是 dept 表中 deptno 字段中的存在值
-- 删除从表数据可以直接删除
-- 删除主表数据时,会先检查从表中有没有对此数据的关联,如果有不能直接删除
-- on delete CASCADE/ on update CASCADE 级联删除 / 级联更新 

心得体会

今天学习了一些数据库的知识,更重要的是了解了很多的面试技巧,对自己的简历进行了比较大的修改,终于对简历较为满意了。

标签

评论