数据库
概念
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
数据库和文件存储的区别
- 文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。
- 数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库系统提供数据安全性,完整性,并发控制和恢复力。支持远程访问。
数据库和文件存储的联系
- 均为数据组织的管理技术。
- 均由数据管理软件管理数据,程序与数据之间用存取方法进行转换。
- 数据库系统是在文件系统的基础上发展而来的。
数据库的基本增删改查
1.数据库中关于库的基本操作
1.数据库的创建
create database (if not exists) 库名; //括号里面的可有可无,写上如果在出现库名重复时不会报错
2.库名的查询
show databases;
3.库的删除
drop database 库名;
4.库的使用(在库中创建表需要先使用该库)
use 库名;
5.查询当前正在使用哪一个数据库
select database();
6.查看该库的创建信息
show create table 库名;
2.关于数据库中表格的基本操作
1.表格的创建
create table (if not exists) 表名(表属性,,,,); //括号里的可有可无,写上如果在出现表名重复时不会报错
2.显示数据库下所有的表
show tables; //查看库该下所有的表名
show create table 表名; //查看该表的创建信息
3.数据的插入
<1> 指定列插入
insert [into] 表名 (表属性,,,,) values (参数,,,,);
<2> 全列插入
insert [into] 表名 values (参数,,,,);
<3> 多行插入
insert [into] 表名 values (参数,,,,,),(参数,,,,);
4.表的删除
drop table 表名;
5.修改表的结构
<1> 修改列类型
alter table 表名 modify 列名 列类型;
<2> 增加列
alter table 表名 add 列名 列类型;
<3> 删除列
alter table 表名 drop 列名;
<4> 修改列名
alter table 表名 change 旧列名 新列名 列类型;
<5> 更改表名
alter table 表名 rename 新表名;
rename table 表名 to 新表名;
<6> 复制表的结构
create table 新表名 like 原表名;
create table 新表名 select *from 原表名;
6.查数据
<1> 全表查
select *from 表名;
<2> 指定列
select 表属性 from 表名;
<3> 排序查询(默认是 asc(升序)/desc (降序))
select *from 表名 order by 表属性 [desc/asc];
<4> 查询表中前n条数据(通常搭配排序使用)
select *from 表名 limit n;
<5> 从表的第m条开始向下查n条数据
select *from 表名 limit m offset n;
<6>查询字段为表达式
select (表属性name,math + english) from 表名;
<7>字段别名的使用
select name,math + english [as] total from 表名;
<8>数据去重
select distinct 表属性 from 表名;
<9> 条件查询
1. 基础的比较运算符
<,>,=,!=,>=,<=,<>,<=>(针对NULL的等于)
2.NULL的比较
IS NULL/IS NOT NULL
3.IN,判断查询的数据是否符合给与的多个选项数据中的一个
select *from 表名 where name in ("张三","李四");
4.BETWEEN ...AND,查询范围是否介于两值之间,是则反真
select *from 表名 where math between 50 and 80;
5.LIKE,模糊匹配
select *from 表名 where name like("张%");
<10> 逻辑运算符
1.and,逻辑与
select *from 表名 where math > 50 and math < 80;
2.or,逻辑或
select *from 表名 where name = "张三" or math > 80;
3. not,逻辑非
select *from 表名 whret not name in("张三","李四");
3.表中数据的基本操作
1.数据的修改
update 表名 set 表属性 = 新参数 where pos(要修改的位置)
update tab set name = "哈塞给",age = 22,math = 60 where id = 2(第二行数据) [(name = "张三")] (这样就是修改名字为张三的所有人的信息)
2.数据的删除
delete from 表名 where pos;
delete from 表名 where name = "李四";
4.创建索引
1、创建普通索引
1.创建普通索引
alter table 表名 add index 索引名 (字段名column);
create index 索引名 on 表名 (column(length))
create index index_name on Stu (name);
2.创建表的时候同时创建索引
CREATE TABLE index1(id INT,
name VARCHAR(20),
sex BOOLEAN,
INDEX(id)
);
create table if not exists 表名(
stu_name varchar(5),
stu_id bigint,
sex boolean,
index(stu_id));
2、创建唯一索引
1.创建唯一索引
alter table 表名 add unique 索引名 (column);
create unique index 索引名 on 表名 (column(length))
2.修改表结构
alter table 表名 add unique index 索引名 on (column(length))
3.创建表时同时创建索引
CREATE TABLE index2(id INT UNIQUE,
name VARCHAR(20),
UNIQUE INDEX 索引名 (id ASC)
);
create table if not exists 表名(
stu_name varchar(5),
stu_id bigint,
sex boolean,
unique index index_id(stu_id));
3.创建主键索引
alter table 表名 add primary key 索引名 (column);
4.创建全文索引
alter table 表名 add fulltext 索引名 (column);
5、创建组合索引
alter table 表名 add index 索引名(column1, column2, column3);
6、删除/查询 索引
drop index 索引名 on 表名 删除索引
show index form 表名 查询索引
5.MySQL中常见数据类型介绍
一、MySQL的数据类型主要包括以下五大类:
整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT
浮点数类型:FLOAT、DOUBLE、DECIMAL
字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY
BLOB、BLOB、MEDIUM BLOB、LONG BLOB日期类型:Date、DateTime、TimeStamp、Time、Year
其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等
1.整形
MySQL数据类型 | 字节数 | M(默值) | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|---|
tinyint [M] | 1 | 4 | -2⁷ ~ 2⁷-1 | 0 ~ 2⁸-1 | 非常小整数值 |
smallint [M] | 2 | 6 | -2¹⁵ ~ 2¹⁵-1 | 0 ~ 2¹⁶-1 | 较小整数 |
mediumint [M] | 3 | 9 | -2²³ ~ 2²³-1 | 0 ~ 2²⁴-1 | 中等大小整数 |
int [M] | 4 | 11 | -2³¹ ~ 2³¹-1 | 0 ~ 2³²-1 | 标准整数 |
integer [M] | 4 | 11 | -2³¹ ~ 2³¹-1 | 0 ~ 2³²-1 | 标准整数(同 int) |
bigint [M] | 8 | 20 | -2⁶³ ~ 2⁶³-1 | 0 ~ 2⁶⁴-1 | 较大整数 |
2.浮点型
其中的(M,D) 表示总共M位,D个小数位,D包含于M中。浮点类型不能是unsigned的。
对每种浮点类型,可指定一个最大的显示尺寸M和小数位数D。M的值应该取1到255。D的值可为0到30,但是不应大于M-2。M和D对float和double都是可选的,但对于decimal是必须的,在选项M和D时,如果省略了它们,则使用缺省值,如果D被省略,它被设置为0。如果M被省掉,它被设置为10。
MySQL数据类型 | 字节数 | 用途 |
---|---|---|
float (M,D) | 4 | 单精度浮点型,8位精度;参数m只影响显示效果,不影响精度,d却不同,会影响到精度;m是十进制数字的总个数,d是小数点后面的数字个数 |
double(M,D) | 8 | 双精度浮点型,16位精度;参数m只影响显示效果,不影响精度,d却不同,会影响到精度 |
decimal(M,D) | 4 | decimal(m,d) 定点类型浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。参数m是定点类型数字的最大个数(精 度),范围为0 ~ 65,d小数点右侧数字的个数,范围为0 ~ 30,但不得超过m。对定点数的计算能精确到65位数字。DECIMAL 数据类型用于精度要求非常高的计算中,这种类型允许指定数值的精度和计数方法作为选择参数。精度在这里指为这个值保存的有效数字的总个数,而计数方法表示小数点后数字的位数。比如语句 DECIMAL(7,3) 规定了存储的值不会超过 7 位数字,并且小数点后不超过 3 位 |
设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。整数部分最大是3位,如果插入数12.123456,存储的是12.1234,如果插入12.12,存储的是12.1200.
3.字符类型
数据类型 | 用途 |
---|---|
char | 定长字符串;CHAR 类型可以使用 BINARY 修饰符。当用于比较运算时,这个修饰符使 CHAR 以二进制方式参于运算,而不是以传统的区分大小写的方式。CHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词 |
varchar | 变长字符串;VARCHAR 类型在使用 BINARY 修饰符时与 CHAR 类型完全相同 |
4.日期类型
类型 | 范围 | 格式 | 用途 |
---|---|---|---|
year | 1901 – 2155 | YYYY | YYYY |
date | 1000-01-01 – 9999-12-31 | YYYY-MM-DD | 日期值 |
time | -838:59:59 – 838:59:59 | HH:MM:SS | 时间值或持续时间 |
datetime | 1000-01-01 00:00:00 – 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |