数据库基础

Posted on 2019-03-13 16:01  杜卡迪S11  阅读(108)  评论(0)    收藏  举报

数据库:存储数据的容器

 

存储数据的方式:

  1、变量(无法永久存储数据)

  2、文件处理:可以永久存储

 

文件处理存在的弊端:

  1、文件处理的速度很慢

  2、文件只能在自己的计算机上读写,无法被共享数据(局域网除外)

 

单台计算的性能是有限的,怎么提升性能?

  1、升级硬件设备,属于垂直扩展,但是提升幅度有限

  2、服务器集群 分布式,属于横向扩展

一旦把服务器拆分后,数据必须只能通过网络(socket)被不同的计算机共享

 

数据库软件的本质,就是一个基于socket(TCP)的C/S结构的程序

 

如果要实现一个数据软件,需要解决以下问题:

  1、一旦数据共享,就会存在竞争的问题,需要处理锁的问题

  2、不是所有的TCP连接请求都要请求,得加上安全验证

  3、文件处理带来的效率问题,需要想办法通过索引来提高处理速度

 

数据库软件的分类(两类):

1、关系型数据库

  其提供了某种机制,可以维护数据与数据之间的关系

  比如:学员数据 和 班级数据 可以通过其中一方去找到另一方

  这一类一般都是基于文件实现的

    优点:容量大 可永久存储

  

 1 mysql         免费开源,开源支持中小型企业并发
 2 
 3 oracle        商用收费,学习免费,功能比mysql强大,用户管理和集群
 4 
 5 SQLServer     属于微软生态圈,只能运行于 windows上
 6 
 7 mariaDB       mysql创始人:韦德纽斯  担心 mysql的前程 于是基于mysql开发了mariaDB,用起来是一模一样
 8 
 9 DB2           IBM  360
10 
11 sqlite       非常轻量级的数据库 

其共同特征是都支持SQL,可结构化查询语言

学习数据库的重点就是SQL语言

 

2、非关系型数据库

  数据与数据之间是独立的,不存在任何关联关系

  以key:value的形式来存储数据,一般都是基于内存的

  优点是:速度快

  缺点是:断电就会消失

 

那么问题来了,该使用哪一类数据库?

  应该是搭配使用的,把数据量大的存到关系型中,把经常访问的存放到非关系型中。

  两类数据库搭配使用,以此提高访问速度

 

数据库相关概念:

  数据记录:多个数据组成了一条完整的记录

  例:name,age,sex

    alan,18,man

    kobe,33,man

  

  表:本质就是一个文件,里面存储一堆数据记录

  库:本质是一个文件夹,里面存放一堆表文件

  DBMS:data base manager system 的缩写

    数据库管理系统,也就是TCP的服务器

    负责管理一堆文件夹,也就是数据库

  数据库服务器:指的是运行有TCP服务器程序的计算机

  DBMS和服务器一般都是归运维管理,到公司之后会分给你一个账号密码以及服务器地址

 

mysqld 是服务器主程序

  mysqld需要管理员权限运行

  mysql是一个无界面的客户端,需要在cmd中执行

  mysql连接服务器,需要指定以下参数:

      -h 主机地址(ip)

      -p 端口号

      -u 用户名

      -p 密码

如果服务器和客户端在同一台电脑上,是可以省略主机地址的,端口号默认是3306,也可以省略

如果不是指定用户名和密码,以游客的方式去登录,那么什么都看不到

 

mysql怎么安装:

1、带界面的,只需要一直next即可

2、压缩包,直接压缩

  2.1添加环境变量

  2.2注册系统服务

 

修改管理员密码

  1、如果知道原始密码 :mysqladmin  -uroot  -p  password  123

  2、如果不知道原始密码:可以在启动服务器时,直接跳过授权表

    mysqld  -skip - grant - tables

    

无密码登录服务器,执行修改密码的指令

update mysql.user set password = password("新密码") where user = "root" and host = "locklhoat";

 

关于库的语句:

 1 创建库
 2 create database 库名称
 3 
 4 删除库
 5 drop database 库名称
 6 
 7 修改库的属性
 8 alter database 库名称 charset = "新的编码"
 9 
10 查看创建库的详细信息
11 show creat database mydb;
12 
13 查看所有的数据库
14 show database
15 
16 选择一个数据库
17 use 库名称
View Code

 

关于标的语句:

 1 增:
 2 create table 表名称(name char,age int);
 3 create table 库 表名(name char,age int);
 4 
 5 查看所有表:
 6 show tables;
 7 
 8 查看表的详细信息:
 9 show create table t1;
10 
11 查看表结构(字段):
12 desc t1;
13 
14 改:
15 alter table t1 charset = "gbk"  改编码
16 alter table t1 add sex char;     添加字段
17 alter table t1 drop sex;           删除字段
18 alter table t1 modify age char; 修改字段的类型
19 alter table t1 change age ages int;  修改字段的名字和类型
20 rename table t1 to table;  修改表的名称
21 
22 删除:
23 drop table table1;
表的增删改查 View Code

 

数据记录相关操作是重点学习对象:

 1 一次性插入多条记录
 2 insert into table_name values("alan",18)
 3 
 4 一次性插入多条记录
 5 insert into table_name values(值1,值2),(值2,值3),...;
 6 上述语法,值的个数必须与字段的个数相同
 7 
 8 指定要插入数据的字段
 9 insert into t2(name) values("alan")
10 
11 查看数据
12 select * from t2;      *表示查看所有的字段,多个字段要用逗号隔开
13 
14 修改
15 update t2 set age = 100;      没有条件就会全部更改数据(慎用)
16 update t2 set age = 100 where name = 'alan'17 update t2 set age = 100,name = "kobe" where name ='alan';
18 
19 删除数据
20 delete from t2 where name = 'kobe';
View Code

 

 登录数据库界面: mysql -uroot -p   ——> show databases;