目录
1.数据库的简介
2.数据库分类
2.1关系型数据库
2.2 非关系型数据库
3.mysql的数据类型
3.1 常用的数据库类型
4.mysql的数据库结构
4.1 查看库信息
4.2 查看表信息
5.SQL 语句
5.1 SQL语言分类:
1.数据库的简介
数据库(database)是用来组织、存储和管理数据的仓库
数据库管理系统(DBMS):用户可以通过DBMS或应用程序来操作数据库
1>接受应用程序的数据请求和处理请求
2>将用户的数据请求(高级指令)转换为复杂机器代码(底层指令)
3>实现对数据库的操作
4>从数据库的操作中接受查询结果
5>对查询结果进行处理(格式转换)
6>将处理结果返回给用户
2.数据库分类
数据库可分为两大类:关系数据库(SQL)和非关系数据库(NO SQL)
2.1关系型数据库
- 关系数据库的存储结构是二维表格 ,表是有行和列。行称为记录,是用来描述一个对象的信息。列称为字段,是用来描述对象的一个属性
- 关系性数据库常见的有:MYSQL ,Oracle,SQL-Server,MariaDB, postgreSQL
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
2.2 非关系型数据库
- 缓存性数据库: redis Memcache
- 索引型数据库: ES(Elasttic search)
- 时序型数据库:Prometheus
- 文档型数据库:MongoDB
非关系型数据库:是键对值的存储结构 ,key (键)---- Value(数值),简称KV结构
非关系型数据库的存储结构理论上来说不属于数据库的类型,因为非关系型数据库是多种数据结构存储的方式(海量的数据在内存数据库引擎中,把符合条件的数据,筛选写入到磁盘中)
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:nosql数据库部署简单,基本都是开源软件。缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠。
4、好多数据写在内存中
3.mysql的数据类型
3.1 常用的数据库类型
CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
字节大小:
char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是n字节。
varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一(n+1)个字节。
优劣比较:
varchar比char节省磁盘空间。
但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,而varchar在多次增删改查中会产生一些磁盘空间碎片
4.mysql的数据库结构
4.1 查看库信息
## 查看数据库信息
show database
4.2 查看表信息
查看数据库中的表信息
use 数据库名 #切换到书库中
show tables
show tables in LAKERS;
显示数据表的结构(字段)
describe user;
显示数据表的结构(字段)
describe user;
#############
Field:字段名称
type:数据类型
Null :是否允许为空
Key :主键
Type:数据类型
Null :是否允许为空
key :主键
Default :默认值a :扩展属性,例如:标志符列(标
Extr识了种子,增量/步长)1 2
id:1 3 5 7
5.SQL 语句
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
5.1 SQL语言分类:
- DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
-
create drop alter 创建新的数据库 CREATE DATABASE 数据库名; 创建新的表 CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]); #主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。 CREATE DATABASE kgc_school; USE kgc_school; CREATE TABLE KY13 (id int NOT NULL,name char(10) NOT NULL,score decimal(5,2),passwd char(48) DEFAULT'', PRIMARY KEY (id)); DESC KY13; #NOT NULL 不允许为空值 #DEFAULT'' 默认值为空 PRIMARY KEY :主键一般选择没有重复并且不为空值的字段 删除指定的数据表 use 数据库名 DROP TABLE 表名 DROP TABLE [数据库名.] 表名; #如不用USE进入库中,则需加上数据库名 删除指定的数据库 DROP DATABASE 数据库名;
- DML:数据操纵语言,用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据
insert
update
delete
格式:
INSERT INTO 表名(字段1,字段2[,...]) VALUES (字段1的值,字段2的值,...);
示例:
INSERT INTO KY13 (id,name,score,passwd) values(1,'zhangsan',70.5,PASSWORD('123456'));
#PASSWORD('123456'):查询数据记录时,密码字串以加密形式显示:若不使用PASSWORD(),查询时以明文显示。
INSERT INTO zzz VALUES(2,'lisi',90.5,654321) ;
SELECT * FROM zzz ; #查询表的数据记录
----------------------------------------------------------------------------------------
#修改、更新数据表中的数据记录
格式:
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
示例:
UPDATE zzz SET passwd=PASSWORD('') WHERE name='zhangsan';
UPDATE zzz SET name='wangxiaoer',passwd='' WHERE id=3;
在数据表中删除指定的数据记录
格式:
DELETE FROM 表名 [WHERE 条件表达式];
示例:
DELETE FROM zzz WHERE id=4;
- DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
select
格式:
SELECT 字段名1,字段名2[,...] FROM 表名[WHERE 条件表达式];
示例:
SELECT * FROM zzz;
SELECT id,name,score FROM zzz WHERE id=2;
select name from zzz\G #以列表方式竖向显示
select * from info limit 2; #只显示头2行
select * from info limit 2,3; #显示第2行后的前3行
#修改、更新数据表中的数据记录
格式:
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
示例:
UPDATE zzz SET passwd=PASSWORD('') WHERE name='zhangsan';
UPDATE zzz SET name='wangxiaoer',passwd='' WHERE id=3;
数据表高级操作
扩展
在数据表中删除指定的数据记录
格式:
DELETE FROM 表名 [WHERE 条件表达式];
示例:
DELETE FROM zzz WHERE id=4;
- DCL:数据控制语言,用于设置或者更改数据库用户或角色权限(数据控制语句,用于控制不通数据段直接的许可和访问级别的语句,这些语句定义了数据库、表、字段、用户的访问权限 和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE)
ALTER TABLE 旧表名 RENAME 新表名;
例:
ALTER TABLE zzz RENAME yyy;
ALTER TABLE yyy RENAME zzz;
扩展表结构(增加字段)
ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
#default '地址不详':表示此字段设置默认值为地址不详,可与NOT NULL配合使用
ALTER TABLE yyy ADD address varchar(50) NOT NULL default '地址不详';
修改字段(列)名,添加唯一键
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
unique key:唯一键(特性:唯一,但可以为空,空值只允许出现一次)
Primary key:唯一且非空(主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。)
ALTER TABLE yyy CHANGE name user_name varchar(10) unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。
ALTER TABLE 表名 modify column 字段名 类型。
数据库中表 字段是varchar(30),修改类型可以用(谨慎修改类型,可能会导致原有数据出错)
删除字段
格式:
ALTER TABLE 表名 DROP 字段名;
示例:
ALTER TABLE yyy DROP passwd;