• Mysql 数据库(一)


    简介:

    MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。
    由于MySQL是开放源代码的,因此任何人都可以在General Public License的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择。
    MySQL这个名字,起源不是很明确。一个比较有影响的说法是,基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQL AB创始人之一的Monty Widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。
    MySQL的海豚标志的名字叫“sakila”,它是由MySQL AB的创始人从用户在“海豚命名”的竞赛中建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰的开源软件开发者Ambrose Twebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附近的坦桑尼亚的Arusha的一个小镇的名字。
    MySQL,虽然功能未必很强大,但因为它的开源、广泛传播,导致很多人都了解到这个数据库。它的历史也富有传奇性。
     

    数据库的相关知识

      数据库不应该之间存放视频或者文件的,而存放的应该是相对应的链接。数据库的软件还需要有缓存机制的,用了记录用户登录的状态。

      关系型数据库:就是表与表之间的关系,或者是有表结构

      非关系型数据库:数据都是key对应Value存放的,都是存放在内存中的,读取数据是非常快的。主要是记录状态和支持持久化,而且还会定期将记录刷到硬盘上。

      非关系数据库的典型有:redis,mecache

      文件和数据库的关系:文件中的内容就是数据库的一条记录;文件夹中的文件就是一张表;一个文件夹就是数据库里面的一个库。

      查看一个文件:打开连接---》切到一个文件下---》找到一个文件---》打开文件---》读取记录---》关闭文件---》关闭连接 (优化,加锁处理,权限认证)

      安装数据库指的是:数据库管理系统。

      创建数据库指的是:创建一个''文件夹''。

      关系型数据库的管理系统:mysql , orcale , mariadb , db2 , sql server

      非关系型数据库:数据都是以key=value的形式存放的。

      数据库服务器指的是:安装有数据库管理系统软件的一台机器。

    文件与数据库:

      文件                                                                    数据库

     一行内容                                                              一条记录

     一个文件                                                              一张表

     一个文件夹                                                             一个库

    mysql基本使用:

      netstat  -an | dindstr  3306 :创建端口,数据库的端口默认就是3306

      1、mysql  -uroot  -p123 :登录

      2、select  user(); :查看用户

      3、quit、exit、q :退出       c  : 不执行该条语句

      4、help create user; :查看帮助信息

      5、create  user '用户名'@'localhost' :创建本地账号

           create  user '用户名'@''ip地址'  或者  create  user '用户名'@'192.168.*' :指定IP或者是在该网段

           create  user '用户名'@'%’ :只有能拼接,都能链接起来

           后面加上:identified   by  '密码’  :创建用户同时设置密码

      6、grant all privileges :放行所有权限,不包括grant

         grant all on 路径.表名 to '用户名'@‘%’:放行某张表的所有权限

           grant all on *.* to 'egon’@'%':放行所有的权限给egon这个用户

           grant select :授权查看

           flush privileges; :刷新权限

      7、grant all privileges on *.* to '用户名’@'%' identified by '123'; :创建账号同时授权

      8、mysql -u用户名 -p密码 -hip地址 :远程连接

      9、show databases;:查看所有的数据库

      10、mysqladmin -u用户名 -p‘’密码‘’ password 修改的密码 :修改密码

      11、破解密码的步骤:

          杀死mysqld服务:tasklist | findstr mysql :查看当前开启的进程

                  tskill mysqld                :按照进程名杀死mysql服务

                  taskkill -f /PID 5320    :按照PID杀死mysql服务,如果前面的不行杀死,就用后面的那一种

          跳过授权表启动:mysql  --skip-grant-tables

          修改密码:update mysql.user set password=password('密码')where user='用户名’ and host='localhost;第二个password是一个函  数,where后面跟上条件,过滤条件

          刷新权限:flush privileges

                 tskill mysqld

                 tasklist | findstr mysql

                 mysqld

          重新以新密码登录!!!

    mysql 增删改查命令:

     操作库(文件夹):

      增:

       create database 库名 charset 字符编码

      查:

       show databases        :查看数据库下面的所有库

       show create database 库名      #查看某一个库

      改:

       alter database 库名 charset 字符编码       :现在修改库的也只有字符编码了

      删:

       drop database 库名:   删除一个库

     操作表(文件)

      use 库名      :切换库

      select database()    :查看当前所在的库

      增:

       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 表名   :删除一个表

     操作记录(数据)

       增:

        insert into 路径 .表名(标题) values (记录),(记录),(记录),(记录);

       查:

        select 字段 from 路径.表名        :查看某些字段信息

        select * from 路径.表名             :查看所有的信息

       改:

        update  路径.表名 set 字段=记录     :修改改字段的记录

        update 路径.表名 set  字段=记录 where 字段=记录     :修改具体某一个的信息

       删:

        delete from 路径.表名    :删除整个表记录,仅仅只哦于删除的效果,没有吧表重置到初始状态的功能

        delete from 路径.表名 where 条件      :按照某个条件删除

        truncate 路径.表名       :情况表,并且还可以重置

     补充:将mysql做成系统服务: mysql --install

               取消:mysql --romove

          在服务中可以直接鼠标操作mysql服务的启动与停止

          在cmd中也可以操作

          net start mysql

          net stop mysql

    练习:

    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)
    

      

  • 相关阅读:
    SQL Server 中,将多行转换为一行,用某个符号隔开的SQL 语句
    JQ 轻松学会$.get(),$.post(),$ajax()的作用和用法
    Dynamics 365 组织服务查询时,关于输入时间和输出时间的时区问题讲解
    在Dynamics 365的标准窗体,lookup字段变成了[Object Object],picklist直接展示数字
    C# 回顾正则表达式的常用语法
    观洛马琴科对决洛佩兹比赛有感
    读取硬盘序列号
    delphi 数组复制利用CopyMemory 最为完美
    MFC多线程通讯--自定义消息
    MFC 多线程及线程同步
  • 原文地址:https://www.cnblogs.com/bsxq/p/7729170.html
Copyright © 2020-2023  润新知