zoukankan      html  css  js  c++  java
  • 44、数据库

    一数据库概述

    1.1、什么是数据库

      即存放数据的仓库,只不过这个仓库是共享的

      为了保证安全性,独立性,以及可扩展性,因此需要将文件分开保存,在一台计算机上分成不同的文件夹存放

    1.2、什么是数据库管理系统

      MYSQL,Oracle,sqlite,access等等,都是一种用来管理数据库的系统软件。

      由于MySQL开放源代码,并且数据库是免费的,因此这个软件也是最常用的。

      Oracle数据库功能强大,并且安全性高,但需要收费,属于甲骨文的产品

      SQqite是微软公司的产品,应用于中大型企业

    1.3、数据库服务器的内部关系

      数据库服务器(计算机,对内存要求比较高)====》数据库系统软件(MySQL,一个软件)====》数据库(文件夹)====》表(文件)====》数据(代码,信息)

    1.4、数据库的特点

      1.数据结构化

      2.数据共享,低冗余,易扩充

      3.数据独立性高

      4.数据由DBMS(数据管理系统)统一管理

        1.数据的安全性保护

        2.数据的完整性检查

        3.并发控制

        4.数据库恢复

    1.5、数据库管理系统的分类

      数据管理系统分为两种:关系型和非关系型

      关系型(有表结构):MySQL,SQLLITE,Oracle

      非关系型(没有表结构,使用key-value储存的):MongoDB,Redis

    二、MySQL

    2.1、MySQL的客户端与服务端

      任何基于网络通信的应用程序底层用的都是socket

      服务端(mysqld.exe):

        基于socket通信

        收发信息

        SQL语句

      客户端(mysql.exe):

        基于socket通信

        收发信息

        SQL语句

      在前期配置MySQL的时候尽量使用管理员权限,普通用户终端有一些命令是无法执行的

      MySQL不仅支持自己使用的客户端,还支持其他语言来充当客户端

      这需要服务器不仅可以兼容所有的语言,并且要求使用相同的SQL语句

    2.2、启动

      1.切换到MySQL的bin目录下,输入mysql

      2.保留原来的cmd窗口重新打开一个

      MySQL第一次用管理员登录时,是没有密码的,直接回车即可

    2.3、常用软件默认端口号

      客户端连接服务端完整的指令:mysql -h 127.0.0.1 -p 3306 -uroot -p

        MySQL  3306
        redis  6379
        mongodb 27017
        django  8000
        flask   5000

    2.4、初识SQL语句

      1.MySQL中SQL语句是以分号;作为结束的标志

      2.基本指令:show databases(查看所有的数据库)

      3.连接服务端的命令可以简写:mysql -uroot -p

      4.当输入的命令不对时就可以输入c取消错误命令:c

      5.客户端退出:quit或者exit

      6.查看当前进程:tasklist

        查看当前具体进程:tasklist |findstr mysqld

      7.结束当前进程:taskkill/F/pid pid号

      8.当你在连接服务端时,只输入mysql也能连接,这说明你使用的是游客模式,而不是管理员身份

    2.5、环境变量和系统服务

      环境变量:将mysql的启动路径加入环境变量中

      系统服务(开机自启动):

        查看当前进程:services.msc

        制成系统服务:mysqld --install

        移除系统服务:mysqld --remove

    2.6、设置密码

      mysqladmin -uroot -p原密码 password 新密码

      直接在终端输入就行,不需要进入客户端

    2.7、忘记密码的情况下重设密码

      1.跳过登录验证功能:mysql --skip-grant-tables

        8.0版本后使用:mysqld --console --skip-grant-tables --shared-memory

      2.直接使用无密码登录:mysql -uroop -p  直接回车

      3.修改当前密码:update mysql.user set password=password(123)where user=‘root’ and host=‘localhost’;

      4.将密码更新到硬盘:flush privileges;

      5.关闭当前服务端,以正常授权的方式进入

    三、统一编码

    3.1、配置文件

      程序在执行前会先加载配置文件,之后才会真正的启动

      以ini结尾的文件一般是配置文件:my-default.ini

    3.2、配置文件设置编码以及登录信息

      为防止输入乱码,将输入的格式先设定好,并且可以将登录的账号密码放置配置文件内,可以直接登录,保存后重启服务才能生效

    [mysqld]    #一旦服务器启动,立刻执行下面的配置
    character-set-server=utf8           #将输入的格式设置成utf-8
    collation-server=utf8_general_ci
    [client]     #其他的客户端启动,执行下面的配置
    default-character-set=utf8
    [mysql]  # 一旦客户端启动,立刻执行下面的配置
    user="root"             #将账号密码放入客户端的配置文件中,可以直接登录
    password=123456
    default-character-set=utf8

    四、基本SQL语句

    4.1、针对库的增删改查(文件夹)

      1.增:create database db1;

         create database db2 charset=‘gbk’;(而外指定库的格式)

      2.查:show database;

         show database db1;

      3.改:alter database db2 charset=‘utf-8’;(更改库的格式)

      4.删:drop database db2

    4.2、针对表的增删改查(文件)

      在操作表的前提下,需要现在到库

      查看当前库的名字:select database();

      切换到库:use db1

      1.增:create table t1(id int,name char(4));

         create table db2.t1(id int);(使用绝对路径进行增加)

      2.查:show tables;

         show create table t1;

         desc t1;

      3.改:alter table t1 modify name char(16);

      4.删:drop table t1;

     4.3、针对数据的增删改查

      需要现有库,再有表,最后才能有数据

      1.增:insert into t1 values(1,‘Jason’);

         insert into t1 values(1,‘Jason’),(2,‘egon’),(3,‘tank’);(一次性可以增加多行数据,前面为每次增加时的序号)

      2.查:select * from t1;(当数据量特别大时,不建议使用该命令)

         select name from t1;

      3.改:update t1 set name=‘dsb’ where id>1;

      4.删:delete from t1 where id > 1;

           delete from t1 where name=‘jason’;

         delete from t1;(将表内数据删除)

  • 相关阅读:
    什么是模板方法模式?
    在多线程环境下,SimpleDateFormat 是线程安全的吗?
    抽象类是什么?它与接口有什么区别?你为什么要使用过 抽象类?
    依赖注入和工程模式之间有什么不同?
    什么时候使用访问者模式?
    Java 中,受检查异常 和 不受检查异常的区别?
    说出 5 个 JDK 1.8 引入的新特性?
    什么是领域驱动设计?
    列举 IoC 的一些好处?
    什么是 Spring 配置文件?
  • 原文地址:https://www.cnblogs.com/jingpeng/p/12827352.html
Copyright © 2011-2022 走看看