目录
DB/DBMS/的概念
DB和DBMS之间的关系
主流的关系型数据库管理系统DBMS
非关系型数据库(非RDBMS)
关系型数据库(RDBMS)
数据模型
SQL
SQL通用语言
SQL分类
❗DDL—数据库操作
查询SHOW
创建CREATE
删除DROP
使用(切换到指定数据库)USE / SELECT
❗DDL—表操作
查询当前数据库所有表SHOW
查询表结构DESC
查询指定表的建表语句
DDL—数据类型及案例
数值类型
字符串类型
日期时间类型
案例(创建表)
DDL—修改
添加字段ADD
修改数据类型
修改字段名和字段类型MODIFY/ 表名 CHANGE 旧 新
删除字段DROP
修改表名表名 RENAME TO 表名
删除表DROP 表名
️删除指定表,并重新创建该表
总结
DDL—数据库操作
DDL—表操作
DB:数据库
存储数据的"仓库",本质就是一个文件系统,它保存了一系列有组织的数据
DBMS:数据库管理系统
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
例如:
- word文件是xxx.doc,相当于数据库一样,是如何打开这个.doc文件,我们需要打开word或者wps,这个软件就相当于DBMS.
- 美图秀秀软件来打开.jpg照片一样的道理,这里的美图秀秀就是DBMS,.jpg照片是DB.
数据库系统(DBS)
通常是指带有数据库的计算机应用系统。 包括数据库、相应的硬件、软件和各类人员。
SQL:结构化查询语言(structured query language)
操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准,专门用来与数据库通信的语言,语言编写代码,将代码运行到BDMS中,进行操作。用SQL语言来体现。
DBMS可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库,为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体用户的数据
非关系型数据库,可看出传统关系型数据库的功能阉割版本,基于键值对存储数据,不需要经过SQL层的解析,性能非常高,同时,通过减少不常用的功能,进一步提高性能(舍得)
- 实质:关系型数据库模型是把复杂的数据结构归结为简单的二元关系(二维表格形式)
- 关系型数据库以行(row)和列(colunm)的形式存储数据,以便于用户理解,行和列组成一个表,一组表组成一个库DB
- 表与表之间的数据记录有关系,实体与实体之间的各种联系均用关系模型来表示,关系型数据库就是建立在关系模型基础上的数据库
- SQL就是关系型数据库的查询语言
特点:
如何存储数据?
通过客户端来连接mysql数据库管理系统DBMS,使用SQL语句通过DBMS来创建数据库。也可以用DBMS在指定的数据库来创建表。一个服务器中可以创建多个数据库,一个数据库中可以创建多张表,而这些表被数据存储的数据库,就被称为关系型数据库。
- 1.SQL语句可以单行或多行书写,以分号结尾
- 2.SQL语句可以使用空格/缩进来增强语句的可读性
- 3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.注释:
- 单行注释:--注释内容或者#注释内容(MySQL特有)
- 多行注释:/*注释内容*/
- DDL(Data Definition Language):数据定义语言,用来 定义数据库对象(数据库、表、字段)。
- DML(Data Manipulation Language):数据操作语言,用来 对数据库表中的数据进行增删改。
- DQL(Data Query Language):数据查询语言,用来 查询数据库中表的记录。
- DCL(Data Control Language):数据控制语言,用来 创建数据库用户、控制数据库的访问权限。
DDL(Data Definition Language):数据定义语言,用来 定义数据库对象(数据库、表、字段)。
SHOW DATABASES;
SELECT DATABASE();
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARTSET 字符集] [COLLATE 排序规则];([]中语句可以选择性写入,即可省略)
先创建数据库名字叫cl,然后展示数据库,可以看到新增了一个数据库cl.
先创建数据库名字叫cl,然后展示数据库,可以看到新增了一个数据库cl.
如果创建俩次同名数据库,就会报错,表示数据库已经存在。
creat DATABASE if not EXISTS cl;来判断是否存在cl,存在cl不会显示报错,之后展示数据库还是会显示cl.
如果不存在cl,会自动生成cl数据库。比如我想创建cll数据库,那么用这个语句直接生成这个cll数据库。
create DATABASE itheima DEFAULT CHARSET utf8mb4;创建一个数据库itheima并且指定了默认字符集为utf8mb4
DROP DATABASE [IF EXISTS] 数据库名;([]中语句可以选择性写入,即可省略)
这个和创建数据库一样的情况,如果删除不包含以上的数据库,就会报错,如果我们不想报错,那么就
drop database if exists 数据库名如果存在就删除,如果不存在就不删除,不会报错
- USE 数据库名;
- 查询当前数据库 SELECT DATABASE();
使用数据库名,会切换到指定数据库cll,如果想知道是否已经进入cll数据库,就用select database();可以查看到。
SHOW TABLES;
CREAT TABLE 表名( );
注意:不要再系统库/表里面执行任意的操作
注意事项:
- 每个字段之间用逗号隔开。最后一个字段不需要加逗号
DESC 表名;
SHOW CREATE TABLE 表名;
这个后续会进行讲解。
实例:123.45 整个数字有几个数字精度就是几(精度是5),标度指的小数位(标度是2)
- 精度:数字长度
- 标度:小数位数
实例:
age是int类型,是可以认可的,但是Int占用4个字节,并且相差的取值范围太大,占用比较大的空间
可以选择更好的类型,age TINYINT(tinyint)
年龄的大小不会出现负数,age TINYINT UNSIGNED 表示无符号整型0-255
实例:
score 小数,但是介于0-100之间
score double
double里面要指定俩个参数,第一个参数是数字的长度,第二个参数是几位小数(分数一般是一位小数)
score double(4,1)——4代表数字的长度,1表示小数点长度
char和varchar后面都有参数
char(10) varchar(10),10表示最多存储10个字符,超出10个字符就会报错。
- char(1) 如果char后面写1,但是系统默认10个字符,为占用的字符用空格补充,——定长字符串
- varchar(1)后面1,就占1个字符,参数是2,就占2个字符——不定长字符串
char和varchar的区别
- char(10)——性能好
- varchar(10)——性能较差——因为varchar会根据内容计算占用空间
举例子:
- 用户名 username(要求用户名的长度不超过50)——用char还是varchar更好?
这里使用varchar更好些,对于用户来说有些用户输入10位,有些用户输入的是20位,是变化的,用户输入2位那么就占用2位 (用户名是不定长)
- 性别 gender (男或者女一个汉字),这时候我们用char还是varchar?
推荐使用char 直接用char(1) 这样就可以直接占用一个字符空间就可以了,性能更高些。(性别是定长的)
描述一个人的生日,birthday date 2003-10-05
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
案例:为test表增加一个新的字段“昵称"为nickname,类型varchar(20)
ALTER TABLE 表名 MODIFY 字段名 类型(长度) [COMMENT 注释] [约束];
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
案例:为emp表的nickname字段修改为username,类型为varchar(30)
ALTER TABLE 表名 DROP 字段名;
案例:为emp表的username字段删除
ALTER TABLE 表名 RENAME TO 新表名;
案例:为emp表的表名修改为employee
说明test表名已经改变了,上面注释写上该test表名不存在。
DROP TABLE[IF EXISTS] 表名;
TRUNCATE TABLE 表名;
删除这个表的时候表里的所有数据都删除掉,然后再重新建个同名表,里面内容是空。
注意:在删除表时,表中的全部数据也会被删除
SHOW DATABASES; ————展示所有的数据库
CREATE DATABASE 数据库名; ————创建数据库
USE 数据库名; ————切换数据库(使用指定数据库)
SELECT DATABASE(); ————查看当前处于哪个数据库
DROP DATABASE 数据库名; ——————删除数据库
SHOW TABLES; ————展示所有的表
CREATE TABLE 表名; ————创建表(字段 字段类型,字段 字段类型)
DESC 表名; —————查看这张表有哪些字段
SHOW CREAT TABLE 表名————查询指定表的建表语句
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO....;
DROP TABLE 表名;——删除表
不给自己设限,人生没有天花板。