数据库及MySQL的基本知识

打印 上一主题 下一主题

主题 815|帖子 815|积分 2445

1. 数据库

数据库(Database  DB)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今七十多年前,随着信息技能和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有许多种类型,从最简朴的存储有各种数据的表格到可以或许进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
数据库是根据数据结构存储来管理我们数据的一个仓库。 

1.1数据库分类

按照早期的数据库理论,比力流行的数据库模子有三种,分别为层次式数据库、网络式数据库和关系型数据库(前两者已经基本消散)。而当今的互联网中,最常用的数据库模子主要是两种即 关系型数据库 和 非关系型数据库。
关系型数据库:关系型数据库以行和列的形式存储数据,以便于用户明白。这一系列的行和列被称为表,一组表组成了数据库。类似于Excel表格,但是在关系型数据库中,列是固定的 行可以动态添加。
常用的关系型数据库: MySQL  Oracle  SQLserver
常用的非关系型数据库:HBase  MGDB   Redis (作为关系型数据库的缓存服务应用、项目平台的共享数据库使用)
非关系型数据库:非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”的意思(没有SQL语句?),因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥出难以想象的高服从和高性能。
关系型数据库是行和列进行存储,非关系型数据库是以其他的形式进行存储。

2. MySQL概述

MySQL 是一个关系型数据库管理软件,由瑞典 MySQL AB 公司开发,如今属于 oracle 公司。
    
MySQL这个名字,起源不是很明白。一个比力有影响的说法是,基本指南和大量的库和工具带有前缀“my"已经有10年以上,而且不管怎样,MySQLAB首创人之一的Monty widenius的女儿也叫My。这两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包罗开发者在内也不知道。
    
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),mysql数据库系统使用最常用的数据库管理语言--结构化査询语言(SQL)进行数据库管理。
学习MySQL不是学MySQL软件,而是学习SQL语言。 我们想通过SQL语言操纵Mysql软件。
结构化查询语言(Structured Query Language)简称SQL,是一种特别目标的编程语言,是一种数据库查询和程序计划语言,用于存取数据以及查询、更新和管理关系数据库系统。
 
我们安装的是MySQL应用服务程序,用来管理 存取数据。SQL是一门编程语言,是用来在MySQL等关系型数据库中进行 数据的管理 存取操纵的。
1、数据查询语言(DQL: Data Query Language):其语句,也称为“数据检索语句”,用以从表中得到数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是全部SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与别的类型的SQL语句一起使用。
2、数据操纵语言(DML:Data Manipulation Language):其语句包罗动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。
3、数据界说语言(DDL):其语句包罗动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREATE TABLE 或 DROP TABLE);为表加入索引等。

3. DDL语言

DDL是数据界说语言(Data Definition Language)的缩写,它是SQL(结构化查询语言)的一个子集,用于界说和管理数据库的结构。DDL语句用于创建、修改和删除数据库中的对象,如表、视图、索引、触发器、数据类型和存储过程等。以下是一些常用的DDL语句:

/*创建数据库*/
create database ccc;
/*查询全部的库*/
show databases;
/*切换到指定库*/
use ccc;
/*删库跑路*/
drop database ccc;
/*切换到相应的库中创建表*/
create table tbl_user(
        id int primary key auto_increment COMMENT '编号',
        name varchar(8) COMMENT '姓名',
        age int COMMENT '年龄',
        sex varchar(2)  COMMENT '性别'
);
create table tbl_student(
        num int primary key auto_increment COMMENT '学号',
        score double COMMENT '成绩',
        className varchar(20) COMMENT '班级名'
);
/*int 数据类型  varchar(20)字符串类型*/
/*检察该库中的表有哪些*/
show tables;
/*删除表*/
drop table tbl_student;

/*
  create table 表名(
         列名 数据类型 comment '注释',
             列名 数据类型 comment '注释',
             列名 数据类型 comment '注释'
             
     
    );
食品: id  name  price  remark(描述)
*/
-- 修改表结构
-- 检察表结构
desc employee;
-- 增长一列。
alter table employee add column phone char(11); 
-- 修改数据类型
alter table employee modify entrydate datetime;
-- 修改列名
alter table employee change xb sex char(1) ;
-- 删除一列
alter table employee drop column phone; 

4. 数据类型

数值类型

MySQL支持全部标准SQL数值数据类型。
这些类型包罗严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
类型巨细范围(有符号)范围(无符号)用途TINYINT1 byte(-128,127)(0,255)小整数值SMALLINT s2 bytes(-32 768,32 767)(0,65 535)大整数值MEDIUMINT3 bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值INT或INTEGER4 bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值BIGINT8 bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值FLOAT4 bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值DOUBLE8 bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依靠于M和D的值依靠于M和D的值小数值 如果我们要在数据库中存储 钱 等数据 此时不能使用 float double 因为这些类型会丢失精度 要使用DECIMAL


日期和时间类型

表现时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表现的值时使用"零"值。
TIMESTAMP类型有专有的主动更新特性,将在后面描述。
类型巨细 ( bytes)范围格式用途DATE31000-01-01/9999-12-31YYYY-MM-DD日期值TIME3'-838:59:59'/'838:59:59'HH:MM:SS时间值或连续时间YEAR11901/2155YYYY年份值DATETIME81000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混淆日期和时间值TIMESTAMP41970-01-01 00:00:00/2038 竣事时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 破晓 03:14:07YYYYMMDD HHMMSS混淆日期和时间值,时间戳 字符串类型

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型怎样工作以及如安在查询中使用这些类型。
类型巨细用途CHAR0-255 bytes定长字符串VARCHAR0-65535 bytes变长字符串TINYBLOB0-255 bytes不凌驾 255 个字符的二进制字符串TINYTEXT0-255 bytes短文本字符串BLOB0-65 535 bytes二进制形式的长文本数据TEXT0-65 535 bytes长文本数据MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据MEDIUMTEXT0-16 777 215 bytes中等长度文本数据LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据LONGTEXT0-4 294 967 295 bytes极大文本数据 留意:char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。 如果存放的字符不到30,它也占用空间为30个字符。 varchar(30)如果不到30给字符,占用的空间为实际存储的字符个数。 什么情况下使用char?譬如:性别 电话 身份证 车牌号。

5. 束缚

限定添加记录时必须符合束缚的要求。
primary key主键束缚: 该列的值不答应重复 且不予许为空。标志每行记录。
unique:唯一束缚。 该列值不予许重复,但是可以为null;
not null: 非空束缚。 内容不能null。
check 检查束缚: MySQL8.0.13以后才有效。
default 默认束缚: 如果该列不填内容则采用默认值
auto_increment 递增束缚: 
create table doctor(
   id int primary key auto_increment,-- 如果主键为int建议设置为递增
     name varchar(20) not null, 
     sex char(1) default '男', --
     tel char(11) unique,
     age int check (age>=20 and age<=60) -- 留意: mysql8.0.13以下 不见效
);

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表