一 学前知识
什么叫做静态页面:用户传入内容后,不能处理用户的请求,只能单纯的显示主页面的信息。
什么是负载均衡:通过计算服务器的性能,将客户发送过来的请求指派给某台服务器。一般还要有一个备份的负载均衡,防止主负载均衡坏掉后,备份的立即就会代替主的工作;客户端发送过来的ip和端口也会连接到负载均衡上面的。
一般客户断喝服务端的交换都是经过上面那张图的流程的。
二 数据库相关的知识
什么是数据库
数据库故名思意就是存放数据的地方,是指长期存储在计算机内有组织可以共享的数据的集合。
数据库的数据按照一定的数学模型组织,描述和储存的,具有较小的冗余性和较高的可扩展性,并共享
数据库管理系统(Database Management System)是操纵和管理数据库的大型软件,用于建立,使用和维护数据库,简称DBMS。
它对数据库进行统一的管理和控制,以确保数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库中的管理员也是通过DBMS进行数据的维护。
它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
数据库管理系统是数据库系统的核心,是管理数据库的软件。数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。
数据库不应该之间存放视频或者文件的,而存放的应该是相对应的连接。数据库的软件还需要有缓存机制的,用了记录用户登陆的状态。
关系型数据库:就是表于表之间的关系,或者是有表结构
非关系型数据库:数据都是key对应value存放的,都是存放在内存中的,读取数据是非常快的。主要是记录状态和支持持久化,而且还会定期将记录刷到硬盘上。
非关系数据库的典型有:redis,mecache, mongodb
文件和数据库的关系:文件中的内容就是数据库的一条记录;文件夹中的文件就是一张表;一个文件夹就是数据库里面的一个库。
查看一个文件:打开连接----》切到一个文件下----》找到一个文件----》打开文件----》读取记录----》关闭文件----》关闭连接 (优化,加锁处理,权限认证)
安装数据库指的就是数据库的管理系统,而创建数据库指的就是创建一张表。
关系型数据库的管理系统:mysql,orcale,mariadb,db2,sql server, 0racle,sqlite
数据库服务器指的就是已经装好了的数据库的机器。
在数据库中一张表可以对于多个文件。
三 操作用户的数据库命令
SQL 语句:结构化语句
规范:1不区分大小写,
2 以分号作为结束符号,
3 注释 -- / * */
netstat -an |dindstr 3306:创建端口,数据哭的端口默认就是3306
select user():查看当前登陆的用户
mysql -u用户名 -p密码:用户登陆
\c不执行该条语句
退出:quit exit \q
创建账号:create user '用户名'@'localhost':创建本地账号
create user '用户名'@'ip地址' 或者 create user '用户名'@'192.168.*':指定IP或者是在该网段只能
create user '用户名'@'%':只有能拼接,都能连接起来
后面加上:identified '密码' 创建用户同时设置密码
授权:grant all privileges :放行所有权限,不包括grant
grant all on 路径.表名 to '用户名'@'%':放行某张表的所有权限。
grant all *.* to 'egon'@'%':放行所有的权限给egon这个用户
grant grant 和 grant select :授权查看
flush privileges:刷新权限
创建用户同时授权:grant all privileges on *.* to '用户名'@'%' identified by'123'
远程连接mysql:mysql -u用户名 -p密码 -hip地址
查看所有的数据库:show databases
修改密码:mysqladmin -u用户名 -p'密码' password 修改的密码
破解密码的步骤:
杀死mysqld服务:tasklist |findstr mysql :查看当前开启的进程
tskill mysqld :按照进程名杀死mysqld服务
taskkill -f /PID 5320 :按照PID杀死mysqld服务,如果前面的不行杀死,就用后面的那一种
跳过授权表启动:mysqld —skip-grant-tables
修改密码:update mysql.user set password=password('密码') where user='用户名' and host='localhost' 第二个password是一个函数,where后面跟上条件,过滤条件
刷新权限:flush privileges
tskill mysqld
tasklist |findstr mysql
mysqld
C:\Users\Administrator>tasklist |findstr mysql
mysqld.exe 5320 Console 1 456,832 K
C:\Users\Administrator>tskill mysqld
C:\Users\Administrator>taskkill -f /PID 5320 C:\Users\Administrator>mysqld --skip-grant-tables #跳过授权表启动
mysql> update mysql.user set password=password('') where user='root' and host='l
ocalhost';
mysql> flush privileges;
C:\Users\Administrator>tskill mysqld
C:\Users\Administrator>tasklist |findstr mysql
C:\Users\Administrator>mysqld
最后在以新的密码登陆
四 mysql的增删改查命令
操作库(文件夹):
增:
create database 库名 charset 字符编码
查:
show databases :查看数据库下面的所有库
show create database 库名 #查看某一个库
改:
alter database 库名 charset 字符编码 :现在修改库的也只有字符编码了
删:
drop database 库名: 删除一个库
mysql> create database heyi charset utf8;
Query OK, 1 row affected (0.10 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| fang |
| heyi |
| jie |
| mysql |
| performance_schema |
| sys |
+--------------------+
7 rows in set (0.16 sec) mysql> show create database heyi;
+----------+---------------------------------------------------------------+
| Database | Create Database |
+----------+---------------------------------------------------------------+
| heyi | CREATE DATABASE `heyi` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+---------------------------------------------------------------+
1 row in set (0.00 sec) mysql> alter database heyi charset gbk;
Query OK, 1 row affected (0.00 sec) mysql> show create database heyi;
+----------+--------------------------------------------------------------+
| Database | Create Database |
+----------+--------------------------------------------------------------+
| heyi | CREATE DATABASE `heyi` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+--------------------------------------------------------------+
1 row in set (0.00 sec) mysql> drop database heyi;
Query OK, 0 rows affected (0.30 sec) mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| fang |
| jie |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
操作表(文件)
use 库名 :切换库
select database() :查看当前所在的库
mysql> use fang;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| fang |
+------------+
1 row in set (0.00 sec)
增:
create table t1(表的标题,以逗号分开,标题规定类型) :创建一张表
后面可以加上:egine=innodb :储存引擎,就是表的类型,这个制订了一张表对应几个文件。
添加上一个字段:alter table 表名 add 字段名 类型
表里面的一些类型:int() :整数类型括号里面传入数字定义长度
char() :字符串类型括号里面传入数字可以指定长度
not null unique :不能传入一个空的记录
primary key :不能为空,并且还要唯一
查:
show tables :查看表
show create table 表名 :查看某一张表
desc 表名 :查看表结构
改:
alter table 表名 charset 编码格式 :修改编码格式
default charset 编码格式 :修改字符编码
alter table 表名 modify 字段名 类型 :修改字段类型
alter table 表名 change 字段名1 字段名2 类型 :修改字段名
删:
drop table 表名 :删除一个表
mysql> create table t1(id int primary key,
-> name char(10),
-> age int(3));
Query OK, 0 rows affected (0.35 sec) mysql> show tables;
+----------------+
| Tables_in_fang |
+----------------+
| t1 |
+----------------+
1 row in set (0.01 sec) mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | char(10) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.05 sec) mysql> alter table t1 charset gbk;
Query OK, 0 rows affected (0.11 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table t1 add sex char;
Query OK, 0 rows affected (0.54 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | char(10) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec) mysql> alter table t1 modify sex int;
Query OK, 0 rows affected (0.63 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table t1 change sex SEX char(6);
Query OK, 0 rows affected (0.68 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> desc t1;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | char(10) | YES | | NULL | |
| age | int(3) | YES | | NULL | |
| SEX | char(6) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
4 rows in set (0.01 sec) mysql> drop table t1;
Query OK, 0 rows affected (0.61 sec) mysql> show tables;
Empty set (0.00 sec)
操作记录(数据)
增:
insert into 路径 .表名(标题) values (记录),(记录),(记录),(记录);
查:
select 字段 from 路径.表名 :查看某些字段信息
select * from 路径.表名 :查看所有的信息
改:
update 路径.表名 set 字段=记录 :修改改字段的记录
update 路径.表名 set 字段=记录 where 字段=记录 :修改具体某一个的信息
删:
delete from 路径.表名 :删除整个表记录,仅仅只哦于删除的效果,没有吧表重置到初始状态的功能
delete from 路径.表名 where 条件 :按照某个条件删除
truncate 路径.表名 :情况表,并且还可以重置
mysql> create table t1(id int primary key,
-> name char(10),
-> age int(3),
-> sex char(6));
Query OK, 0 rows affected (0.24 sec) mysql> insert into jie.t1(id,name,age,sex) values (1,'fang',18,'male'),
-> (2,'jie',20,'male'),
-> (3,'yan',17,'female');
Query OK, 3 rows affected (0.03 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> select name,sex from jie.t1;
+------+--------+
| name | sex |
+------+--------+
| fang | male |
| jie | male |
| yan | female |
+------+--------+
3 rows in set (0.00 sec) mysql> select * from jie.t1;
+----+------+------+--------+
| id | name | age | sex |
+----+------+------+--------+
| 1 | fang | 18 | male |
| 2 | jie | 20 | male |
| 3 | yan | 17 | female |
+----+------+------+--------+
3 rows in set (0.00 sec) mysql> update jie.t1 set name='dong' where id=2;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from jie.t1;
+----+------+------+--------+
| id | name | age | sex |
+----+------+------+--------+
| 1 | fang | 18 | male |
| 2 | dong | 20 | male |
| 3 | yan | 17 | female |
+----+------+------+--------+
3 rows in set (0.00 sec) mysql> delete from jie.t1 where name='dong';
Query OK, 1 row affected (0.04 sec) mysql> select * from jie.t1;
+----+------+------+--------+
| id | name | age | sex |
+----+------+------+--------+
| 1 | fang | 18 | male |
| 3 | yan | 17 | female |
+----+------+------+--------+
2 rows in set (0.00 sec) mysql> truncate jie.t1;
Query OK, 0 rows affected (0.23 sec) mysql> show tables;
+---------------+
| Tables_in_jie |
+---------------+
| t1 |
+---------------+
1 row in set (0.00 sec) mysql> select * from jie.t1;
Empty set (0.00 sec)
自增的字段必须是非空且唯一
练习:
1 创建一个课程表:
mysql> create table class(cid int primary key auto_increment,
-> acption char(5));
Query OK, 0 rows affected (0.21 sec) mysql> insert into fang.class(acption)values('三年二班'),
-> ('一年三班'),
-> ('三年一班');
Query OK, 3 rows affected (0.06 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from fang.class;
+-----+----------+
| cid | acption |
+-----+----------+
| 1 | 三年二班 |
| 2 | 一年三班 |
| 3 | 三年一班 |
+-----+----------+
3 rows in set (0.00 sec)
2 创建一个学生表:
mysql> create table student(sid int primary key auto_increment,
-> sname char(5),
-> gender char(5),
-> class_id int(100));
Query OK, 0 rows affected (0.24 sec) mysql> insert into fang.student(sname,gender,class_id)values('钢蛋','女',1),
-> ('铁锤','女',1),
-> ('山炮','男',2);
Query OK, 3 rows affected (0.25 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from fang.student;
+-----+-------+--------+----------+
| sid | sname | gender | class_id |
+-----+-------+--------+----------+
| 1 | 钢蛋 | 女 | 1 |
| 2 | 铁锤 | 女 | 1 |
| 3 | 山炮 | 男 | 2 |
+-----+-------+--------+----------+
3 rows in set (0.03 sec)
3 创建一个老师 表:
mysql> create table teacher(tid int primary key auto_increment,
-> tname char(5));
Query OK, 0 rows affected (0.25 sec) mysql> insert into teacher(tname)values('波多'),
-> ('苍空'),
-> ('饭岛');
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from fang.teacher;
+-----+-------+
| tid | tname |
+-----+-------+
| 1 | 波多 |
| 2 | 苍空 |
| 3 | 饭岛 |
+-----+-------+
3 rows in set (0.00 sec)
4 创建一个课程表:
mysql> create table course(cid int primary key auto_increment,
-> cname char(5),
-> tearch_id int(100));
Query OK, 0 rows affected (0.48 sec) mysql> insert into fang.course(cname,tearch_id)values('生物',1),
-> ('体育',1),
-> ('物理',2);
Query OK, 3 rows affected (0.04 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from fang.course;
+-----+-------+-----------+
| cid | cname | tearch_id |
+-----+-------+-----------+
| 1 | 生物 | 1 |
| 2 | 体育 | 1 |
| 3 | 物理 | 2 |
+-----+-------+-----------+
3 rows in set (0.03 sec)
5 创建一个成绩表:
mysql> create table score(sid int primary key auto_increment,
-> student_id int(100),
-> corse_id int(100),
-> number int(3));
Query OK, 0 rows affected (0.23 sec) mysql> insert into fang.score(student_id,corse_id,number)values(1,1,60),
-> (1,2,59),
-> (2,2,100);
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from fang.score;
+-----+------------+----------+--------+
| sid | student_id | corse_id | number |
+-----+------------+----------+--------+
| 1 | 1 | 1 | 60 |
| 2 | 1 | 2 | 59 |
| 3 | 2 | 2 | 100 |
+-----+------------+----------+--------+
3 rows in set (0.00 sec)