MYSQL基础知识

一、数据库的基本认识

1、什么是数据库 数据库的作用 数据库的使用场景
什么是数据库 : 存储数据的仓库。
数据:
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,
是用于表示客观事物的未经加工的原始素材。
数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
在计算机系统中,数据以二进制信息单元0,1的形式表示。

2、数据库的作用:
方便数据的存储和管理。

3、数据库的使用场景:
有数据产生的地方就有数据库的使用场景。

4、MYSQL是如何管理数据的:
通过对数据之间制定关系来进行数据管理。
通过创建二维表来制定关系。
例:通过建表来登记学生信息。
±----±--------±---------------------------±-----+
| SID | Sname| Sage | Ssex |
±----±--------±---------------------------±-----+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 03 | 孙风 | 1990-05-20 00:00:00 | 男 |
| 04 | 李云 | 1990-08-06 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-03-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-07-01 00:00:00 | 女 |
| 08 | 王菊 | 1990-01-20 00:00:00 | 女 |
±----±-------±---------------------------±-----+
注:
MYSQL中的行 : 元组。
MYSQL中的列 : 属性。
MYSQL中的阈值: 属性取值范围 。

5、什么是数据库系统
数据库 + 数据库管理系统 = 数据库系统

二、数据库的基本操作(以下操作均以MYSQL5.7为例)

1、如何登录数据库:
使用dos窗口或者cmd窗口来登录客户端。
mysql -u 用户名 -p密码
2、如何创建数据库:
create database 数据库名
注意:
1、MYSQL支持英文,大小写不敏感。
2、MYSQL中命名时中间以-来分隔。

例:创建一个学校的表格

create database school_test1;

3、查看创建好的数据库:
show databases;
输入该指令后会出现之前所有创建成功的数据库。
4、删除数据库:
drop database 数据库名
5、使用数据库:
use 数据库名
出现“Database changed”说明成功进入数据库。
6、存储信息:
(1)如何创建表:

create table tablename{
    属性名1 数据类型 完整性约束,
    属性名2 数据类型 完整性约束,
    属性名3 数据类型 完整性约束
};

注意:
1、不同属性之间需要用“,”进行分隔,最后一个属性除外
2、在创建表之前要注意先运行一下数据库。用“use 数据库名”来运行一次,再去创建表格。

例:按要求在之前创建的school_test1表中填入学生信息
要求:stu_id(主键+自增) class_id (班级号) name(唯一) 出生日期
age(默认0) sex(非空) score(小数)考试成绩

create table student{
    stu_id int primary key auto_increatement,
    class_id int,
    name varchar(20) uniqe,
    age int defualt 0,
    sex enum('男','女') not null,
    score dec(6,2)
}

注:给char和varchar之前加上n可以将编码方式转换为utf-8,使其便于储存汉字。

三、约束条件:

约束条件:为了使表内数据便于管理施加的一些约束,使该字段存储的值更加符合我们的预期。**
字段常用约束条件:
UNSIGNED :无符号,值从0开始,无负数
例:用UNSIGNED约束的tinyint的范围是0到256而不是-128到+127。
ZEROFILL:零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNED
NOT NULL:非空约束,表示该字段的值不能为空
DEFAULT:表示如果插入数据时没有给该字段赋值,那么就使用默认值
PRIMARY KEY:主键约束,表示唯一标识,不能为空,且一个表只能有一个主键。一般都是用来约束id
AUTO_INCREMENT:自增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,每次增长1
UNIQUE KEY:唯一值,表示该字段下的值不能重复,null除外。比如身份证号是一人一号的,一般都会用这个进行约束
FOREIGN KEY:外键约束,目的是为了保证数据的完成性和唯一性,以及实现一对一或一对多关系

四、MYSQL中的数据类型:

1、整型:
tinyint(m):1个字节 范围(-128~127)
smallint(m):2个字节 范围(-32768~32767)
mediumint(m):3个字节 范围(-8388608~8388607)
int(m):4个字节 范围(-2147483648~2147483647)
integer(m):4个字节 范围(-2147483648~2147483647)
bigint(m):8个字节 范围(±9.22*10的18次方)

m:显示宽度,M表示整数类型的最大显示宽度。最大显示宽度为255.显示宽度与类型可包含的值范围无关。
例:tinyint的表示范围是-128~127,符号位宽度为1,数字位宽度为3,所以tinyint的表示范围(m)是4。

2、浮点型:
浮点数用于将小数的近似值存储于数据库当中。

float(m,d):单精度浮点型 8位精度(4字节) 允许值是-3.402823466E+38 到-1.175494351E-38, 0以及1.175494351E-38 到3.402823466E+38, m总个数,d小数位
double(m,d):双精度浮点型 16位精度(8字节) 允许值是 -1.7976931348623157E+308到-2.2250738585072014E-308,0以及 2.2250738585072014E-308到 1.7976931348623157E+308。m总个数,d小数位
m是总位数,d是小数点后的位数。如果插入的数据长度超过规定的话四舍五入,不足规定长度的话就补零。
例:
将一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。整数部分最大是3位,如果插入数12.123456,存储的是12.1234,如果插入12.12,存储的是12.1200.

float与double可以储存小数但是有时会被大小更加灵活的定点数decimal/dec来替代。

3、定点数:
定点数也是用于将小数存储在数据库之中,但是与浮点数不同的是。定点数存储的是小数的精确值。
decimal/dec(m,d):常用于存储精确的小数,m是总位数,d是小数点后的位数。小数点和(负数) -符号不计入 m。如果 d为0,则值没有小数点或小数部分。最大位数(m)为 65. 最大支持小数(d)为30.如果d省略,则默认值为0.如果m省略,则默认值为10。m的范围是1到65。d范围为0到30,且不得大于m。
decimal/dec(m,d)的大小是可变的,其所占的字节数是m+2。

4、字符串:
char类型:
char(n):一个固定长度的字符串,在存储时始终用空格填充指定长度。 n表示以字符为单位的列长度。n的范围为0到255.如果n省略,则长度为1,存储时占用n个字节。
varchar(n):可变长度的字符串,n表示字符的最大列长度,n的范围是0到65,535,存储时占用L+1(L<=n,L为实际字符的长度)个字节。
例:建表时分别使用char(4)和varchar(4)时,如果用char来存储’ab’那么所占字节是4,用varchar储存的话,所占字节实际上是2+1=3。
所以如果我们需要存储的字符串大小相差很大的话varchar更能节省空间,如果相差很小的话,char更能节省空间。
在查询的效率方面char的查询效果要高于varchar。

text类型:
text类型只能保存字符数据。varchar可直接创建索引,text创建索引要指定前多少个字符。text系列的存储范围比varchar要大,当varchar不满足时可以用text系列中的类型。需要注意的是text系列类型的字段不能有默认值,在检索的时候不存在大小写转换,没有char和varchar的效率高。
tinytext:可变长度,最多255个字符,占据长度+2的字节数
text:可变长度,最多65535个字符,占据长度+2的字节数
mediumtext:可变长度,最多2的24次方-1个字符,占据长度+3的字节数
longtext:可变长度,最多2的32次方-1个字符,占据长度+4的字节数

enum类型:
enum类型就是建立一个表,能存入的值都必须是这个表里面的。enum类型的表最多能包含65535个元素
使用举例:

ENUM('值1','值2',......,'值n')

如果enum类型加上了NOT NULL约束的话那么默认插入第一个元素,如果没有NOT NULL约束的话那么enum就可以被NULL修饰,也可以默认存入NULL。

set类型:
set类型与enum类型类似,只不过set类型是可以从表中选取多个值存入,而且set类型的表中最多只能放置64个元素。

二进制类型:
binary和varbinary,binary和varbinary与char和varchar相似。
例:binary(50)与varbinary(50),前者是指定了占据的内存空间是50字节,后者实际占用的储存空间是实际存入的内容+1个字节。
bit(m):以二进制的方式存储m位数据,m最大为64。
例:bit(4)所能存储的最大的数据是1111也就是15,大于15的数据是不能存入bit(4)里边的。
blob类型:
blob;类型用于存储一些比较大的二进制数据,从小到大分别是tinyblob、blob、mediumblob、longblob;所占据的最大字节数分别是255字节、2的16次方-1、2的24次方-1、2的32次方-1。

5、时间与日期类型:
time:范围是’-838:59:59.000000’ 到’838:59:59.000000’,占3字节
date:支持的范围是 ‘1000-01-01’到 ‘9999-12-31’,占4字节
datetime:日期和时间组合。支持的范围是 ‘1000-01-01 00:00:00.000000’到 ‘9999-12-31 23:59:59.999999’,占8字节
timestamp:时间戳。范围是’1970-01-01 00:00:01.000000’UTC到’2038-01-19 03:14:07.999999’UTC,占4字节
year:范围是 1901到2155,占1字节

注意:
year如果超出范围的话会储存0000。如果将两位数存储位year类型的话,那么0到69会转换为2000到2069,70到99会转化为1970到1999。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值