• mysql之数据库的介绍和基本的增删改查


    一 学前知识

     什么叫做静态页面:用户传入内容后,不能处理用户的请求,只能单纯的显示主页面的信息。

     什么是负载均衡:通过计算服务器的性能,将客户发送过来的请求指派给某台服务器。一般还要有一个备份的负载均衡,防止主负载均衡坏掉后,备份的立即就会代替主的工作;客户端发送过来的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:UsersAdministrator>tasklist |findstr mysql
    mysqld.exe                    5320 Console                    1    456,832 K
    C:UsersAdministrator>tskill mysqld
    C:UsersAdministrator>taskkill -f /PID 5320
    
    C:UsersAdministrator>mysqld --skip-grant-tables #跳过授权表启动
    mysql> update mysql.user set password=password('') where user='root' and host='l
    ocalhost';
    mysql> flush privileges;
    C:UsersAdministrator>tskill mysqld
    C:UsersAdministrator>tasklist |findstr mysql
    C:UsersAdministrator>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)
    View Code

    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)
    View Code

    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)
    View Code

    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)
    View Code

    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)
    View Code
  • 相关阅读:
    router基本使用
    函数声明 和 var声明的优先级
    适用于Windows桌面应用程序的.NET Core 3
    在.Net Core 3.0中尝试新的System.Text.Json API
    在WPF中使用.NET Core 3.0依赖项注入和服务提供程序
    WPF控件获得焦点时去除虚线框
    Call asynchronous method in constructor
    将自定义控件加载到RichTextbox并进行交互
    WPF应用无法使用Snoop分析的解决办法
    关于序列化和反序列化
  • 原文地址:https://www.cnblogs.com/fangjie0410/p/7694983.html
Copyright © 2020-2023  润新知