初识数据库

数据库相关概念

数据库管理软件: 本质就是一个C/S架构的套接字程序
服务端套接字 客户端套接字
操作系统: Linux 操作系统: 随意
计算机(本地文件) 计算机硬件 应用流程: 服务端发送请求语句给服务端. 服务端从本地文件中读取数据返回给客户端 例如:
关系型数据库管理软件: 优点是表之间有关系
mysql Oracle
非关系型数据库管理软件: 一般都是以key: value格式储存数据. 所以查询较快. 储存在内存中
redis memcache mongodb sql语句: 套接字管理软件的作者为使用者规定的命名规范 数据库核心概念:
数据: 事物的状态
记录: 文件中的一条信息
表: 一个文件
库: 文件夹
数据库管理软件: 套接字程序: 服务端-mysqld 客户端-mysql
数据库服务器: 运行mysqld的计算器

初识sql语句

1. 库 -> 文件夹

create database day01 charset utf8mb4;

alter database day01 charset gbk;

show databases;
show create database day01;

drop database day01;
creat database day01; 2. 表 -> 文件
use day01;
select database(); 增
create table t1(id int, name varchar(16));

alter table t1 rename t2;
alter table t1 modify name varchar(10);

show tables;
desc t2;

drop table t2; 3. 记录 -> 文件中的每一行内容
create database day02;
use day02;
create table t1(id int, name varchar(16)); 增
insert t1 values
(1, "Maxs_hu"),
(2, "Mokeke"),
(3, "xiaoergu")

update t1 set name = "lili" where id = 2;

select * from t1;
select name from t1;
select name from t1 where id >= 2;

delete from t1 where id = 2; 了解知识点. sql语句分三种:
1. DDL语句 数据库定义语言: 数据库. 表. 视图. 索引. 储存过程. 例如: create drop alter
2. DML语句 数据库操纵语言: 插入数据insert. 删除数据delete. 更新数据update. 查询数据select
3. DCL语句 数据库控制语言: 例如控制用户的访问权限grant. revoke

数据库表的详细操作

表的详细操作(增删改查)

表----------------文件
储存引擎engine -> show engines; myisam 数据存在硬盘中
innodb 数据存在硬盘中(default)
blackhole 黑洞. 不存数据
memory 数据存在内存中. 关闭服务器数据就消失了 create table t1(id int)engine=innodb;
innodb储存引擎: 本质就是一段处理程序 1. 创建表
create table t1(
id int,
name varchar(8) not null
); 注意: 1. 在同一张表中. 字段名不能相同
2. 宽度和约束条件可选
3. 字段名和数据类型是必须的
4. 表的最后一个字段不要加逗号 2. 修改表
1. 修改表名
alter table t1 rename t2;
2. 增加字段
alter table t1 add age int [完整性约束条件...], -> 可以添加多条字段
sex varchar(10) [完成性约束条件...]; alter table t1 add age int [完整性约束条件...] first; -> 将字段添加至第一位 alter table t1 add age int [完整性约束条件...] after name; -> 将字段添加在某个字段后面 3. 删除字段
alter table t1 drop age; 4. 修改字段
alter table t1 modify name varchar(10) [完整性约束条件...] -> modify不能修改字段名字 alter table t1 change 旧字段名 新字段名 新数据类型 [完整性约束条件...] -> 可以修改任何条件 3. 复制表
create table t2 select id, name, age from test.t1; -> 将t1中查看的数据复制给t2
create table t2 select id, name, age from test.t1 where 1 < 0; -> 只创建字段名. 没有数据 表字段之数据类型:
create table t3(id int); -> 整型 create table t10(x float(255, 30)); -> 常用
create table t11(y double(255, 30)); -> 常用
create table t12(z decimal(65, 30)); -> 最精准 insert into t10 values(1.11111111111111111111111111111111)
insert into t11 values(1.11111111111111111111111111111111)
insert into t12 values(1.11111111111111111111111111111111) 时间类型:
create table student(
id int,
name varchar(16),
birth date,
class_time time,
reg_time datetime,
born_year year
); insert student values
(1, 'egon', '1993-01-23', '08:30:00', "2020-3-23 09:30:21", "1993") -> 一一对应 create table t13(x datatime); -> 范围广
create table t14(y timestamp); -> 节省空间. 且不传值会自动更新current_timestamp
create table t15(
id int,
name varchar(16),
commit_time timestamp
); 枚举和集合:
create table t18(
id int,
name varchar(16),
gender enum("男", "女", "未知"), -- 选一个插入. 如果插入值不在列表中. 则会显示报错
hobbies set("play", "music", "read", "movie") -- 可以多选插入. 如果插入在列表中不存在.则会报错
); insert into t18 values (1, "Maxs_hu", "男", "play,music,movie,program") -- set传入数据逗号后面不可加空格 补充:
char和varchar的区别:
1.char储存字符串会以固定长度储存(长度不足补空格). 而varchar则会以字节宽度+1(头)去储存. -> varchar减小io
相比俩说更加节省空间. 但是当字符串长度等于字符长度的时候. varchar会因为头占一个字节比char多一个字节
2. select name.char_length from t18; -- 查看字符数
3. 使用where查询的时候. 不会在意字符后面跟的空格. 而使用like模糊查询的时候严格按照字符查询 _: 任意字符 %:任意个数字符

表的约束条件和表关系的建立

1. 表的约束条件:
# primary key: 不为空且唯一
create table t5(
id int,
name varchar(10),
primary key(id, name) -- 联合主键: 不能重复
); insert into t5 values(1, "Maxs_hu");
insert into t5 values(1, "tom");
insert into t5 values(1, "Maxs_hu"); -- 会报错. 因为主键不能重复 # auto_increment: 自增
set global auto_increment_increment = 5; -- 设置全局自增步长
set global auto_increment_offset = 3; -- 设置开始第一个id为3 create table t6(
id int primary key auto_increment,
name varchar(16)
); # not null 和 default组合: 将没有传值的默认为0
create table t7(
id int not null default 0,
name varchar(16)
); # unique: 唯一的 uni
create table t8(
id int unique,
name varchar(16)
); # not null 和 unique 组合的化学反应: 变成主键pri
create teble t9(
id int not null unique,
name varchar(16)
); desc t9; 2. 表关系建立
---------------多对一: 强耦合
# foreign key: 外键 create table department( -- 先创建父表
id int primary key,
name varchar(20) not null
);
create table employee( -- 关联父表(department主键id), 同步更新, 同步删除
id int primary key,
name varchar(20) not null,
dpt_id int,
foreign key(dpt_id) references department(id)
on delete cascade
on update cascade
);
insert into department values -- 先往父表department中插入记录
(1, "叙利亚战区"),
(2, "俄罗斯战场"),
(3, "东部战场");
insert into employee values -- 再往字表employee中插入记录
(1, "Maxs_hu", 1),
(2, "Mokeke", 2),
(3, "longge", 2),
(4, "xiaoergu", 3),
(5, "alex", 3); delete from department where id = 3; -- 删除父表department. 字表employee中对应的记录会跟着删除
select * from employee; update department set name = "东部战区" where id = 2; -- 修改父表中department. 表employee中记录也会跟着改变
select * from employee; --------------多对多: 常用底层架构 create table book( -- 先创建book父表
id int primary key,
name varchar(20) not null
);
create table author( -- 先创建author父表
id int primary key,
name varchar(16) not null
); create table author2book( -- 在创建关联表
id int primary key auto_increment,
author_id int not null,
book_id int not null,
foreign key(book_id) references book(id) -- 关联book表格
on delete cascade
on update cascade,
foreign key(author_id) references author(id) -- 关联author表格
on delete cascade
on update cascade
);
insert into book values -- 先向父表中插入数据
(1, "葵花宝典"),
(2, "九阴白骨抓"),
(3, "轻功水上漂"),
(4, "辟邪剑法"),
(5, "九阴真经"),
(6, "掏奶龙抓手");
insert into author values -- 先向父表中插入数据
(1, "Maxs_hu"),
(2, "mary"),
(3, "Mokeke"),
(4, "tom");
insert into author2book(author_id, book_id) values
(1, 6),
(3, 5),
(2, 4),
(1, 2),
(4, 3),
(3, 1),
(2, 6),
(3, 1),
(4, 5); 可以通过update来操作多对多表格去联动数据 建立表关系顺序: 多对多 > 多对一 > 一对一

表详细操作知识点总结

总结:
1.约束条件
not null
default
unique primary key
auto_increment unsigned -- 写在int后面. 确保数值大于0 foreign key -- 外键 2. 表之间建立关系
---多对多
emp dep
emp2dep -- 建立中间表存父表id emp2dep: fk(dep_id) -> dep(id) fk(emp_id) -> emp(id)
---多对一
emp: fk(emp_id) -> dep(id)
dep -> 父表 ---一对一
fk(dep_id)+uk

数据库基础操作 part1的更多相关文章

  1. Mysql数据库基础操作

    Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...

  2. C# IV: 数据库基础操作2

    需上一篇C# III:数据库基础操作 另外一个经常碰到的数据库操作是,单次执行多个SQL语句,譬如,一次性插入多条数据. 方法一,拼凑长SQL语句 拼凑长SQL语句实际上是String的操作.如下示例 ...

  3. MySQL数据库----基础操作

    一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...

  4. MySQL关系型数据库基础操作

    MySQL基础 一.MySQL常用数据类型 1.常用数值类型(INT,DOUBLE,FLOAT) ① int 或者 integer 类型: 大小(字节):4字节: 范围: (有符号: -2147483 ...

  5. MySQL数据库基础操作语句

    SQL语言主要用于存取数据.查询数据.更新数据和管理关系数据库系统,分为3种类型: 1.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储过程,例如CREATE DROP ALTER 2.DM ...

  6. mysql 数据库基础操作

    一 知识储备 MySQL数据库基本操作知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student, ...

  7. python---基础知识回顾(八)数据库基础操作(sqlite和mysql)

    一:sqlite操作 SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是C写的,而且体积很小,所以,经常被集成到各种应用程序中,甚至在iOS和Android的App中都可以 ...

  8. 数据库基础操作-part2

    单表和多表查询 单表查询 记录详细操作: 增 insert into t1(字段1, 字段2, 字段3) values (值1, 值2, 值3), (值1, 值2, 值3), (值1, 值2, 值3) ...

  9. 10月16日上午MySQL数据库基础操作(创建、删除)

    以前用的是鼠标在界面上手动创建,这样创建会比较麻烦,而且还会经常出问题.在其它电脑上要用的话还需要重复操作.所以要使用程序代码操作,能通过代码的就不用手动操作. 在数据库界面选择要用的数据库,双击打开 ...

随机推荐

  1. 关于个人项目(臻美MV【仿抖音App】)滑动切换视频的分析(前端角度)

    我们知道你天天刷抖音的时候可以上滑切换视频,互不影响.那么我们站在前端的角度能否可以实现这种效果呢?这是我的个人项目:臻美MV 下面我是用Vue写的,现在我把它开源. Vue: 初始界面 <te ...

  2. Java基础-并发篇

    3.1. JAVA 并发知识库 3.2. JAVA 线程实现/创建方式 3.2.1. 继承 Thread 类 ​ Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例. ...

  3. 【Java面试】Kafka 怎么避免重复消费

    Hi,大家好,我是Mic 一个工作5年的粉丝找到我. 他说: "Mic老师,你要是能回答出这个问题,我就佩服你" 我当场就懵了,现在打赌都这么随意了吗? 我问他问题是什么,他说&q ...

  4. SAP FICO 常用table

    Table 描 述 "Table Type" "Application Class" "Data Class" Description &q ...

  5. 搭建zabbix及报错处理

    搭建ZABBIX服务器准备工作 1.需要服务器是LAMP 或 LNMP 环境 2.主机名和IP要写在HOST文件里 3.iptables 和 selinux 必须关闭 一.先用最简单的方式搭建lamp ...

  6. Multiparty Cardinality Testing for Threshold Private Set-2021:解读

    本文记录阅读该论文的笔记. 本文基于阈值加法同态加密方案提出了一个新的允许\(N\)方检查其输入集的交集是否大于\(n-t\)的IPSI方案,该协议的通信复杂度为\(O(Nt^2)\). 注意:\(N ...

  7. DBSync新增对MongoDB、ES的支持

    数据库同步工具DBSync近日进行了升级,最新版本为V1.9,新增了对MongoDB.Elasticseach(ES)的支持,具体情况:1.支持同型库之间的同步,如:MongoDB至MongoDB,E ...

  8. labview从入门到出家4--用事件结构实现运算功能

    使用事件结构可以快速定位响应界面的操作事件,如按下,拖动,双击的事件.基本上我们所要实现的所有功能,都可以通过条件结构+事件结构去实现,比如后面进阶篇将会讲到的状态机就是通过条件结构和事件结构组成的. ...

  9. 004 SpringSecurity验证规则

    SpringSecurity验证规则 SpringSecurity框架登录后,==在userDetails对象中,一定会有一个权限列表 == 登录用户对象的值可能是: {"authoriti ...

  10. 云表平台VS永中office,谁更胜一筹?

    20年前,永中软件在国外办公软件独霸江山以及盗版软件肆意横行的夹缝中呱呱坠地. 经过永中人日日夜夜的不懈奋斗,永中Office V1.0面世. 永中科技 从创立之初永中软件便预见了独立创新.自主可控的 ...