前言
终于放假了,前段时间一直忙着复习功课考试,也没时间更新博客,这就补上,暑假就复习巩固学过的知识吧,那就从Mysql开始吧
初识Mysql
mysql是啥呢
它是一个数据库,一个用来存储关系型数据的仓库
在现实生活中,它是怎么被运用的?
像下图这样,浏览器向服务器发送一个请求,服务器去访问数据库的内容,再给客户端以响应,这也就是我们所说的B/S模式(浏览器/服务器模式)
什么是数据库
数据库:DB:DataBase
概念:数据库软件安装在操作系统上的,可存储大量的数据
作用:存储数据,管理数据
分类:
>关系型数据库(SQL):由行(数据)和列(字段)组成,通过表与表之间,行和列之间的关系进行数据的存储
>非关系型数据库(NOSQL):以键值对存储,以对象的形式存储,通过对象的自身属性来决定
DBMS
DBMS:DataBase Management System:数据库管理系统
数据库的管理软件,科学有效的管理我们的数据,维护和获取数据
Mysql的本质就是数据库管理系统
Mysql是一种关系型数据库,将数据存储在不同的表中,以便更加方便的管理数据
Mysql所使用的的SQl语言是用于访问数据库的最常用的标准化语言
操作数据库
基本操作
1.创建数据库
语法:CREATE DATABASE [IF NOT EXISTS] 数据库名;
[IF NOT EXISTS]为可选项,不加上的话,如果你表中已经有这个数据库了,就会报错
eg:创建一个xsgl数据库
create database `sxgl`;
注意:MYSQL中不区分大小写
数据库名,数据表名,字段名尽量加上``包裹上以标识
2.使用数据库
语法:USE DATABASE 数据库名;
eg:使用sxgl数据库
use database `sxgl`;
3.查看所有的数据库
语法:SHOW DATABASES;
eg:查看所有的数据库
4.删除数据库
语法:DROP DATABASE [IF EXISTS]数据库名;
eg:删除xsgl数据库
drop database xsgl;
数据库中的数据类型
1.数值
类型 | 用途 | 占用内存 |
---|---|---|
tinyint | 十分小的数据 | 1个字节 |
smallint | 较小的数据 | 2个字节 |
mediumint | 中等大小的数据 | 3个字节 |
int | 标准大小的数据 | 4个字节 |
bigint | 较大的数据 | 8个字节 |
float | 单精度数据 | 4个字节 |
double | 双精度数据 | 8个字节 |
decimal(M,D) | 字符串形式的浮点数 | 不知道(我查了可多资料,还是不太懂,知道的可以跟我说一下哈) |
DECIMAL
decimal(5,2)表示小数的取值范围是-999.99~999.99
5代表一共5个数,2代表的是小数点后有两位小数
2.字符串
类型 | 用途 | 占用内存 |
---|---|---|
char | 定长字符串 | 0~255字节 |
varchar | 可变长字符串 | 0~65536字节 |
tinytext | 微型文本 | 28-1字节 |
text | 长文本 | 216-1字节 |
3.时间日期
类型 | 用途 | 占用内存 |
---|---|---|
date | YYYY-MM-DD,日期格式 | 3个字节 |
time | hh:mm:ss,时间格式 | 3个字节 |
datetime | YYYY-MM-DD hh:mm:ss,年月日时分秒 | 8个字节 |
timestamp | 时间戳,1970-1-1到现在的毫秒数 | 4个字节 |
year | 年份 | 1个字节 |
操作数据表
列的一些其他属性
1.NULL
没有值,未知
注意:NULL不等于空值
2.NOT NULL
声明该列不能为空,不赋值会报错
3.UNSIGNED
无符号的整数,声明该列不能为负数
4.Zerofill
不足的位用0来填充
eg:int(5) 5—>00005
5.auto_increment
自增序列,通常会在上一条记录的基础上加1,可以自定义自增的其实质和步长
该列需为一个整数序列,必须具备唯一索引,每张表最多一个自增序列
6.DEFAULT
给该列设置一个默认值
eg:sex字段默认值设为男,如果不指定该字段的值,则默认为男
7.PRIMARY KEY
主键约束,用于唯一的标识表中的每一条记录
每张表有且仅有一个主键
数据表的引擎
MYISAM | INNODB | Memory | |
---|---|---|---|
事务支持 | 不支持 | 支持 | 不支持 |
数据行锁定 | 不支持 | 支持 | 不支持 |
外键约束 | 不支持 | 支持 | 不支持 |
全文索引 | 支持 | 不支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为MYISAM的2倍 | 内存使用较高,空间使用较少(它使用存在于内存中的内容来创建表,并没有实际写入磁盘,重启会丢失) |
特点 | 节约空间,速度快,对事务完整性不要求,适用于以SELECT/INSERT为主的表 | 事务性数据库的首选引擎,具有提交、回滚、崩溃恢复能力的安全存储引擎,处理能力相对差些,占用磁盘空间较大 | 插入数据快、空间和内存使用较低、效率高,对事务不要求 |
除了这三个主要的引擎,还有例如BDB、Merge、Archive、CSV、BlackHole等,这里不做太多讨论
基本操作
创建一张数据表
语法:
CREATE TABLE table_name(
column_name1 data_type [constant_expression][NULL|NOT NULL],
column_name2 data_type [constant_expression][NULL|NOT NULL]
…
);
eg:在xsgl数据库中创建一张student表,字段如下:sno(设为主键),sname,sgender(默认值为男),sbirthday,sdept,引擎为INNODB,字符集为UTF8
修改表名
语法:ALTER TABLE 旧表名 RENAME AS 新表名;
eg:将student表改名为studentDemo
增加表的字段
语法:ALTER TABLE 表名 ADD 字段名 列属性;
eg:向studentDemo表中添加saddress字段,字段属性为varchar(20)
修改表的字段:change和modify
语法:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性;
ALTER TABLE 表名 MODIFY 字段名 列属性;
modify只能改字段数据类型完整性约束,不能改字段名,但是change都可以(亲测有效,但是我看网上说change不能改属性,我也不知道怎么回事)
eg:修改sname字段属性为char(20),修改saddress字段名为address,字段属性为char(25)
删除表的字段
语法:ALTER TABLE 表名 DROP 字段名;
eg:删除studentDemo表中的address字段
删除数据表
语法:DROP TABLE [IF EXISTS] 表名;
eg:删除studentDemo表
drop table if exists `studentDemo`;
注意:
1.所有的符号要用英文符号
2.Mysql不区分大小写
3.字段名,数据表名,数据库名尽量加上``来包裹上
4.Mysql的注释为- -,在Navicat中#也可以作为注释,最好用Mysql的原生注释符"- -"
总结
开始我们知道了什么是mysql,什么是数据库,还有DBMS数据库管理系统,接下来又学习了数据库的基本操作,创建数据库,使用数据库,查看数据库,删除数据库,数据库中的一些基本数据类型,数值类型、时间类型、文本类型,又学了数据表的基本操作,创建数据表,为数据表添加字段,修改字段名,属性,删除表,还了解了三个常见的数据表的引擎MYISAM,INNODB,MEMORY,还有列的一些其他属性,像NULL空值,DEFAULT默认值,AUTO_INCREMENT自增序列等等
先学到这吧,你学会了吗,哈哈下次见