day27 数据库

什么是web前端

web前端 面向用户(浏览者)的互联网技术统称为web前端,用户看的见摸得着的。

面向用户 人机交互 前端

数据校验录入 机器于机器的交互 web后端范围

三大方面

界面结构 html

web视觉表现 css

界面交互 js

Web前端的分类

前端设计 设计师 UI设计/交互设计 美工

前端架构 架构师 工程师 程序猿 将各种设计通过编程实现

注意

  1. 英文

  2. 逻辑 案例 分析

    设计师 感性

    程序员 理性 一条一条规划

  3. 细心 代码规范

题感 语感 动手

方向 前端 后端 全栈

路径 从易到难 学习路径 技术栈

今日内容

  1. 数据库的基本概念

  2. MySQL数据库软件

    1. 安装
    2. 卸载
    3. 配置
  3. SQL

数据库的基本概念

1. 数据库的英文单词: DataBase 简称 : DB     DBA  数据库管理员
2. 什么数据库?
	* 用于存储和管理数据的仓库。

3. 数据库的特点:
	1. 持久化存储数据的。其实数据库就是一个文件系统  
	2. 方便存储和管理数据
	3. 使用了统一的方式操作数据库 -- SQL
	
	数据库 -- 文件夹
	表    --  文件
	数据  --   数据
	
	oracle  mysql  sqlserver微软   关系型数据库     非关系型数据库   redis缓存 mogoDB

MySQL数据库软件

1. 安装

2. 卸载
	1. 去mysql的安装目录找到my.ini文件  配置文件
		* 复制 datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
	2. 卸载MySQL
	3. 删除C:/ProgramData目录下的MySQL文件夹。
	4. 删除注册表
	
3. 配置
	* MySQL服务启动
		1. 手动。
		2. cmd--> services.msc 打开服务的窗口
		3. 使用管理员打开cmd
			* net start mysql : 启动mysql的服务
			* net stop mysql:关闭mysql服务
	* MySQL登录
		1. mysql -uroot -p密码
		2. mysql -hip -uroot -p连接目标的密码
		3. mysql --host=ip --user=root --password=连接目标的密码
	* MySQL退出
		1. exit
		2. quit

SQL

1.什么是SQL?
	Structured Query Language:结构化查询语言
	其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
	
2.SQL通用语法
	1. SQL 语句可以单行或多行书写,以分号结尾。  js 可写可不写
	2. 可使用空格和缩进来增强语句的可读性。
	3. MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。   js区分
	4. 3 种注释
		* 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 
		* 多行注释: /* 注释 */
	
3. SQL分类
	1) DDL(Data Definition Language)数据定义语言
		用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
	2) DML(Data Manipulation Language)数据操作语言
		用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
	3) DQL(Data Query Language)数据查询语言
		用来查询数据库中表的记录(数据)。关键字:select, where 等
	4) DCL(Data Control Language)数据控制语言(了解)
		用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

DDL:操作数据库、表

1. 操作数据库:CRUD
	1. C(Create):创建
		* 创建数据库
			* create database 数据库名称;
		* 创建数据库 判断不存在 再创建
			* create database if not exists 数据库名称;
		* 创建数据库 并指定字符集
			* create database 数据库名称 character set 字符集名称;
		* 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk
			create database if not exists db4 character set gbk;
	2. R(Retrieve):查询
		* 查询所有数据库
			* show database;
	3. U(Update):修改
		
	4. D(Delete):删除
		* 删除数据库
			* drop database 数据库名称;
		* 判断数据库存在,存在再删除
			* drop database if exists 数据库名称;
	5. 使用数据库



2. 操作表
	1. C(Create):创建
		1. 语法:
			create table 表名(
				列名1 数据类型1,
				列名2 数据类型2,
				....
				列名n 数据类型n
			);
			* 注意:最后一列,不需要加逗号(,)
			


	2. R(Retrieve):查询
		* 查询某个数据库中所有的表名称
			* show tables;
		* 查询表结构
			* desc 表名;
	3. U(Update):修改
		1. 修改表名
			alter table 表名 rename to 新的表名;
		2. 修改表的字符集
			alter table 表名 character set 字符集名称;
		3. 添加一列
			alter table 表名 add 列名 数据类型;
		4. 修改列名称 类型
			alter table 表名 change 列名 新列别 新数据类型;
			alter table 表名 modify 列名 新数据类型;
		5. 删除列
			alter table 表名 drop 列名;
	4. D(Delete):删除
		* drop table 表名;
		* drop table  if exists 表名;

			
2.操作表
	create 创建表 
		create table 表名(
			列名1 数据类型1,
			列名2 数据类型2
		)
	数据类型 
		1.int  整数类型 	age
		2.double 小数类型 scroe double(5,2)   333.33  4,1    333.3
		3.date  日期   只包含年月日  yyyy-MM-dd
		4.datetime 日期  包含年月日时分秒  yyyy-MM-dd HH:mm:ss
		5.timestamp 时间戳  包含年月日时分秒    1970.1.1
		6.varchar  字符串    name varchar(20) 姓名最大20个字符   张三  2个   zhangsan  8个

DML:增删改表中数据

1. 添加数据:
	* 语法:
		* insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
		insert into 表名(id,name,age) values(值1,值2,...值n);
	* 注意:
		1. 列名和值要一一对应。
		2. 如果表名后,不定义列名,则默认给所有列添加值
			insert into 表名 values(值1,值2,...值n);
		3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来


2. 删除数据:
* 语法:
* delete from 表名 [where 条件]
* 注意:
1. 如果不加条件,则删除表中所有记录。
2. 如果要删除所有记录
1. delete from 表名;
2. TRUNCATE TABLE 表名;
3. 修改数据:
* 语法:
* update 表名 set 列名1 = 值1, 列名2 = 值2,… [where 条件];

	* 注意:
		1. 如果不加任何条件,则会将表中所有记录全部修改。

DQL:查询表中的记录

* select * from 表名;
怎么优化数据库     主从分离  读写分离   主表(读),从表(写)   

1. 语法:
	select
		字段列表
	from
		表名列表
	where
		条件列表
	group by
		分组字段
	having
		分组之后的条件
	order by
		排序
	limit
		分页限定


2. 基础查询
	1. 多个字段的查询
		select 字段名1,字段名2... from 表名;
		* 注意:
			* 如果查询所有字段,则可以使用*来替代字段列表。
	2. 去除重复:
		* distinct
	3. 计算列
		* 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
	4. 起别名:
		* as   


3. 条件查询
	1. where子句后跟条件
	2. 运算符
		* > 、< 、<= 、>= 、= 、<>(不等于 !=)
		* BETWEEN...AND     
		* IN( 集 	合)    
		* LIKE:模糊查询   
			* 占位符:
				* _:单个任意字符
				* %:多个任意字符
		* IS NULL  
		* and  或 &&
		* or  或 || 
		* not  或 !

DQL:查询语句

1. 排序查询
	* 语法:order by 子句
		* order by 排序字段1 排序方式1 ,  排序字段2 排序方式2...
	* 排序方式:
		* ASC:升序,默认的。
		* DESC:降序。

	* 注意:
		* 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。


2. 聚合函数
	1. count:计算个数
	2. max:计算最大值
	3. min:计算最小值
	4. sum:计算和
	5. avg:计算平均值


3. 分组查询:
	1. 语法:group by 分组字段;
	2. 注意:
		1. 分组之后查询的字段:分组字段、聚合函数
		
		-- 按照性别分组。分别查询男、女同学的平均分

		-- 按照性别分组。分别查询男、女同学的平均分,人数
		
		--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组

		--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
  1. 分页查询

约束

* 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。	
* 分类:
	1. 主键约束:primary key
	2. 非空约束:not null
	3. 唯一约束:unique
	4. 外键约束:foreign key

* 非空约束:not null,值不能为null
	1. 创建表时添加约束
		CREATE TABLE stu(
			id INT,
			NAME VARCHAR(20) NOT NULL -- name为非空
		);
	2. 创建表完后,添加非空约束
		ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;

	3. 删除name的非空约束
		ALTER TABLE stu MODIFY NAME VARCHAR(20);


* 唯一约束:unique,值不能重复  null可以重复
	1. 创建表时,添加唯一约束
		CREATE TABLE stu(
			id INT,
			phone_number VARCHAR(20) UNIQUE -- 添加了唯一约束


		);
		* 注意mysql中,唯一约束限定的列的值可以有多个null


	2. 删除唯一约束

		ALTER TABLE stu DROP INDEX phone_number;
	
	3. 在创建表后,添加唯一约束
		ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

* 主键约束:primary key。
	1. 注意:
		1. 含义:非空且唯一
		2. 一张表只能有一个字段为主键    id     uuid        
		3. 主键就是表中记录的唯一标识

	2. 在创建表时,添加主键约束
		create table stu(
			id int primary key,-- 给id添加主键约束
			name varchar(20)
		);

	3. 删除主键
		**-- 错误 alter table stu modify id int ;**
		ALTER TABLE stu DROP PRIMARY KEY;

	4. 创建完表后,添加主键
		ALTER TABLE stu MODIFY id INT PRIMARY KEY;

	5. 自动增长:
		1.  概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长

		2. 在创建表时,添加主键约束,并且完成主键自增长
		create table stu(
			id int primary key auto_increment,-- 给id添加主键约束
			name varchar(20)
		);

​ 3. 删除自动增长
​ ALTER TABLE stu MODIFY id INT;
​ 4. 添加自动增长
​ ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

* 外键约束:foreign key,让表于表产生关系,从而保证数据的正确性。
	1. 在创建表时,可以添加外键
		* 语法:
			create table 表名(
				....
				外键列
				constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
			);

	2. 删除外键
		ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

	3. 创建表之后,添加外键
		ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

数据库的设计

1. 多表之间的关系
	1. 分类: 
		
	2. 实现关系:
		
	3. 案例


2. 数据库设计的范式
* 概念:设计数据库时,需要遵循的一些规范。要遵循后边的范式要求,必须先遵循前边的所有范式要求
			设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
			目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。


	* 分类:
		1. 第一范式(1NF):每一列都是不可分割的原子数据项
		2. 第二范式(2NF):在1NF的基础上,非码属性必须完全依赖于码属性(在1NF基础上消除非主属性对主码的部分函数依赖)	       		
		3. 第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值