前端学习(一)-----数据库(01数据库)


文章目录

一、数据库

1.数据的存储方式

2.什么是数据库

3.Mysql

4. 列类型

5. 列约束


一、数据库

1.数据的存储方式

  • 特定文件(速度较慢,eg:excel、doc、ppt)
  • 内存(速度快,RAM临时数据,重启消失)
  • 第三方云服务器(阿里云、腾讯云)
  • 数据库服务器(自己的专属服务器)

2.什么是数据库

  • 数据库是按照一定的形式来组织存储数据
  • 目的是便于操作数据(CRUD)

(1)数据库的发展历史

        网状数据库->层次型数据库->关系型数据库->非关系型数据库

(2)关系型数据库逻辑结构

        server > database > table > row > column

(3)常见的关系型数据库:

        SQLite:微型数据库,常用于移动设备

        MySQL:开源中小型数据库,可用于各种操作系统

        PostgreSQL:开源中小型数据库

        SQL Server:Microsoft开发的中型数据库,只用于Windows系统

        Oracle(甲骨文):Oracle公司开发的中大型数据库,可用于各种操作系统

        DB2:IBM公司开发的中大型数据库,常用于IBM服务器搭配

3.Mysql

        LAMP:Linux+Apache+MySQL+PHP

        Xampp:一个服务器套装,包含多个服务器软件(MySQL,Apache)

(1) 部署结构

        服务器端:负责存储、维护数据 (mysqld.exe)

        客户端:负责连接数据库,并进行CRUD (mysql.exe)

(2) 客户端连接服务器

mysql.exe -h127.0.0.1 -P3306 -uroot -p

#简写

mysql -uroot

-h host:   IP地址/域名  127.0.0.1/localhost

-P port:    端口

-u user:    用户名

-p password:  密码,Xampp下密码为空

(3) 常用的管理命令

quit

show databases;

use 数据库名;

show tables;

desc 表名;

(4) SQL命令

  • SQL命令的执行方式

        交互模式(一步一步执行)

        脚本模式(多个命令执行)

mysql -uroot<拖拽脚本

  • SQL命令的语法规范

        一行命令可以跨多行,英文封号结束

        命令不区分大小写。(习惯上关键字大写,非关键字小写)

        某条SQL语句语法错误,则后面的所有命令不再执行

        单行注释(#...)多行注释(/*...*/)

(5) 常用的SQL命令

set names utf8;
drop database if exists stuDB;
create database stuDB charset=utf8;
use stuDB;

create table student(
    sid int primary key auto_increment,
    name varchar(12) not null,
    ctime datetime not null,
    alimoney decimal(6,2) not null default 0,
    #冗余
    i1 int not null default 0,
    v1 varchar(255) not null default ''
);

#插入数据
insert into student values(null,'TG','1996-03-01',1000,0,'');

select * from student;

update student set alimoney=2222 where name='TG';

delete from student where sid='1';

alter table 表明 add 列名  类型;

(6) 计算机如何存储字符

  • 如何存储英文字符

        ASCLL: 总共128个,对所有的英文字符及其符号进行了编号

        Latin-1:  总共256个,对欧洲国家字符进行了编码,兼容ASCLL

  • 如何存储中文字符

        GB2312:  对常用的6千多汉字进行了编码,兼容ASCLL

        GBK:   对两万多汉字进行了编码,兼容GB2312

        BIG5:     台湾繁体字编码

        Unicode: 对世界上主流国家常用的语言进行了编码,兼容ASCLL

                        具体包含三种存储方案:utf-8,utf-16,utf-32

  • mysql中文乱码原因

        mysql默认使用Latin-1编码

  • 解决MySQL中文乱码的方法

        统一使用utf8:脚本文件编码:file>save as>Encoding:utf8;

                                客户端连接服务器端:SET NAMES UTF8;

                                服务器创建数据的编码:CREATE DATABASE DB CHARSET=UTF8;

4. 列类型

(1) 数值型

  • 1Byte=8Bit
  • tinyint     微整型,1Byte
  • smallint   小整型,2Byte
  • int            整型,4Byte
  • bigint      大整型,8Byte 
  • float        单精度浮点型,4Byte
  • double    双精度浮点型,8Byte
  • decimal(M,D)      定点小数(M:有效位数;D:小数点后有效位数)
  • boolean/bool     布尔型,只有true和false  (true和false是关键字,使用时不加引号)

(2) 日期时间型

  • data         日期型
  • time         时间型
  • datatime   日期时间型

(3) 字符串型

  • varcahr(M)   变长字符串,不会产生空间浪费,数据操作慢(常用于标题、内容、姓名...)
  • char(M)         定长字符串,通常存储固定长度的数据;可能会产生空间浪费,数据操作较快(常用于手机号码、身份证号码...)
  • text

5. 列约束

mysql可以对要插入的数据进行特定的验证吧,足以满足条件才允许插入,否则认为是非法的插入。

(1) 主键约束(primary key)

        该列不允许插入null;不允许插入重复的值(null是关键字,不允许加引号)

        一表最多一个,通常设置在编号,加快数据的查找速度

(2) 非空约束(not null)

        该列上数据不为空

(3) 唯一约束(unique)

        该列上不允许出现重复的值

        允许插入多个null(影响排序的结果)

        一个表可以多个唯一约束

(4) 默认约束(default)

        使用default关键字设置默认值

family 表有 fid,fname

fname varchar(16) default null;

insert into family values(80,default);

insert into family(fid) values(90);  //未出现的列自动使用默认值

(5) 检查约束(check)

        亦称自定义约束;(mysql不支持检查约束)

        后期由js完成

        create table t1(

                score tinyint check(score>=0 and score<=100)

        );

(6) 外键约束

        使表之间关联起来。声明了外键约束的列上,插入的值必须在另一个表的主键列中出现过,外键列和对应的另一个表主键列两者的列类型要保持一致

        FOREIGN KEY (courseID) REFERENCES (stuID);

(7) 自增列

        auto_increment 自动增长

你可能感兴趣的:(学习笔记,MySQL,mysql,前端)