初识数据库

一.数据库前言

1.什么是数据库*****

  存放数据的仓库 本质是文件夹

  我们已经学过的文件操作存在的缺陷

    1.程序的所有组件太大,不可能存在同一个计算机上  

    2.多用户竞争影响数据安全

    3.多用户访问,服务器需要并发

总结:

我们在编写任何程序之前,都需要事先写好基于网络操作一台主机上文件的程序(socket服务端与客户端程序),于是有人将此类程序写成一个专门的处理软件,这就是mysql等数据库管理软件的由来,但mysql解决的不仅仅是数据共享的问题,还有查询效率,安全性等一系列问题,总之,把程序员从数据管理中解脱出来,专注于自己的程序逻辑的编写。

2.常见的数据库

  关系型 数据库之间存在某种关联关系

    oracle

      目前最好的关系型数据库,体现在用户管理,分布式

      商业用途收费

    MySQL

      免费开源,功能支持没有oracle强 但是足以满足中小企业使用

      先后被sun和oracle 收购

      mysql创始人Widenius担心被收购了以后 另起炉灶 开发了MariaDB

      mariaDB和mysql 使用方法一模一样

二.数据库的相关概念******

  age = 18

  一个变量 被

  1.称之为一个字段

  age = 18 , name = "Jack" , genger = "man"

  一堆变量一起,

  2.称之为一条记录 对应文件中的一行

  文件需要分门别列 每个文件存储不同的数

  3.一个文件称之为表

  文件越来越多 得分文件夹

  4.一个文件夹称之为库

  数据库中包含所有内容:

  字段(列)

  记录

  表

  库

  DBMS 数据库管理系统

  数据库服务器

  一个库可以包含多个表 一个表可以包含多条记录 一条记录中有多个字段

  数据库是什么,本子上就是一套C/S架构的socket软件


3.安装数据库与配置使用环境 ***
  1.代码界面 傻瓜式安装 记住密码
  2.绿色解压版
    1. 5.7以后的版本需要先初始化 mysqld --initialize-insecure
    2.启动需要先进入安装目录 比较麻烦 需要添加到环境变量
      打开环境变量 将mysql安装目录下的bin加入path变量
    3.将mysqld 加入到windows的系统服

4.绿色版修改默认密码
  修改默认密码需要先登录成功
  执行update语句直接修改 user表中的密码
  5.7
  update mysql.user set authentication_string = password("root") where user = "root";
  5.6
  update mysql.user set password = password("root") where user = "root";

  修改密码方式2 不需要登录 需要知道旧密码
  mysqladmin -uroot -p旧密码 password 123

  破解密码,当忘记密码时 无法登录 也就不能值执行update语句
  思路:
  1.启动服务器时 控制它不要加载授权表
  2.无密码登录服务器
  3.执行update mysql.user set authentication_string = password("root") where user = "root"
  4.重启服务器

  用到的系统指令:
  mysqld 直接运行服务器程序
  mysqld --skip-grant-tables 跳过授权表 用于重设密码
  tasklist | findstr mysqld taskkill /f /pid 结束服务器程序
  mysql 运行客户端程序 -u用户名 -p密码 -h主机地址 -P端口号
  mysqld --install 将mysqld注册当windows服务中 在服务中叫MySQL
  windows就是绑定了一个exe程序
  sc delete mysql 删除windows服务
  exit 退出客户端

5.简单的sql语句*****

  库:

   增

      create database 库名称

     删

      drop database 库名称

   改

      alter database 库名称 要改的属性名称

      alter database db1  char set utf8:

      alter database db1 CHARSET utf8

      注意在mysql中 utf-8不能写成utf8

   查

      show databases 查看所有数据库

      show create database 库名称 查看数据库语句

  命名规范:

    1.不能使用纯数字

    2.可以是字母 数字 下划线的组合

    3.可以下划线开头

    4.不能是关键字 如 create

    大致和python相同

    不区分 大小写

  表相关的操作

  增

    建表时要明确数据库

    use db1;

    create table 表名称(字段名 类型(长度),......)

    create table dog(nikneame char(10),gender char(1),age int)

    #创建时同时指定数据库

    create table 库名称.表名称(字段名 类型(长度),....)

  删

    drop table 表名;

  改 alter table 表名称 drop|change|modify|add

    drop 字段名称

    alter table dog drop color;

    change 旧的字段名 新的字段名 新的类型

    modify 字段名 新的类型

    add 字段名称 类型

    alter table dog add color char(10);

  重命名表

  rename table 旧表名称 to 新表名称

  rename table dog to dogtable;

  修改表的属性

  aleter table dotable DEFAULT CHARSET gbk;

  查

    show table;查看所有表

    desc 表名称; 查看表结构

记录相关操作

  增 

    insert into 表名 values(值1,值2......)

  删 

    delete from 表名  where 字段名称 = 值

    没有条件的话修改全部

  查

    select *from 表名: *表示通配符 查看所有字段

    select 字段名称1,字段名2.. from 表名;

六,修改默认编码

  配置文件放在安装路径目录中 就是和bin同级 名称必须叫my.ini

  # 客户端的配置

  [client]

  #mysql这个客户端的配置

  [mysql]

  user = root

  password = root

  default-character-set = utf8

  #服务器端的配置

  [mysqld]

  character-set-server = utf8

七.数据库的引擎 ***

八. 5.6与5.7的区别

  1.5.7需要初始化

  2.5.6游客模式 没有密码可以登录 但是无法操作数据

  3.5.7中 data数据存放目录 是由初始化时决定

    带界面的 在C:ProgrmData中

    不带界面的就在安装目录中

   5.6就在安装目录中

  4.密码存储字段名 在5.6中时password 5.7中叫authentication_string

小结:

1.数据库是什么?

  mysql 一种DBMS

  是一个CS的socket软件

  数据库服务器

  DBMS

  文件夹 库

  文件 表

  一个完整数据 记录

  单个数据       字段

数据库的分类

    关系型  数据之间存在某种关联  存在硬盘上

  非关系型 数据之间存在某种关联 以key value形式存储 存在内存中

  为什么用mysql

  免费开源 能够支持中小企业使用

  安装两种方式

  1.界面

  2.解压安装

  环境变量

  系统服务

  修改默认密码

  破解密码

  修改编码(配置文件)

  简单Create Read Update Delete

作业:

1.int(10) 该数据类型占几个字节,10的含义是什么?

一个,占用十个字符数即十进制十位数.
2.总结char 和varchar的区别以及优缺点:

char 定长 速度快 资源浪费

varchar 变长 准确 速度慢 资源利用率高
3.float(10,5) 能存储的最大数据是多少

99999.99999
4 创建学生表:有学生 id,姓名,密码,年龄 默认密码000000 性别必须是w 或 m 姓名 密码不能为空

Create table student(id int primary key,name char(4) not null,psw char(6) default 000000 not null,age int,sex enum("m","w"));

5 创建学校表:有学校id,学校名称,地址 校区不能重复

Create table school(id int primary key,name char(4) not null,campus char(10)unique,address char(10) unique);
6 创建课程表:有课程id,课程名称,课程价格,课程周期,所属校区(其实就是学校id) 校区不能为空,

Create table cscb(id int primary key,name char(4) ,price int not null,cycle float(2,1),campus char(10),
foreign key (campus) references school(id)
);


添加学生:张三,20岁,密码123

insert into student values(100321,"张三","123345",20,'m')
李四,18岁,密码111
创建学校:oldboyBeijing 地址:北京昌平
oldboyShanghai 地址:上海浦东
创建课程:Python全栈开发一期,价格2w, 周期5个月,属于上海校区
Linux运维一期 价格200,周期2个月,属于上海校区
Python全栈开发20期 ,价格2w,周期5个月,属于北京校区

原文地址:https://www.cnblogs.com/gongcheng-/p/9984791.html