Mysql学习01

数据库:数据的仓库,主要解决数据存储和管理的问题,实现数据的持久化。

管理数据:能够非常方便的实现对数据的CRUD。
C - Create - 新增数据
R - Read - 读取数据
U - Update - 编辑数据
D - Delete - 删除数据

持久化:把数据从不能长久保存数据的存储介质转移到可以长久保存数据的存储介质中,
简单的说,就是把数据从内存转移到硬盘。

数据库的分类:

关系型数据库

  • 1970s - Codd - 关系模型
  • 特点:
    1. 理论基础:关系代数和集合论
    2. 具体表象:用二维表保存数据
      行:记录(record)
      列:字段(field)
    3. 编程语言:SQL(结构化查询语言)
      DDL(数据定义语言):create / drop / alter
      DML(数据操作语言):insert / delete / update
      DQL(数据查询语言):
      DCL(数据控制语言):
      注:SQL不区分大小写!!!
  • 产品:
    Oracle
    MySQL(*)
    PostgreSQL
    SQL Server
    DB2
    SQLite

NoSQL(非关系型数据库)—> 更符合大数据时代的需求

NewSQL

2008 - 去IOE运动

普通Linux —> IBM小型机

MySQL集群 —> Oracle数据库

FastDFS(分布式文件系统) —> EMC存储设备

使用MySQL

MySQL的配置文件:/etc/my.cnf

客户端(命令行工具):
mysql -u root -h 服务器的IP地址 -p

显示所有数据库:
show databases;

创建数据库(DDL)
create database school default charset utf8mb4;

删除数据库
drop database if exists school;

修改数据库
alter database school default charset utf8mb4;

切换数据库上下文环境
use school;

显示数据库下的所有表
show tables;

创建二维表(DDL)
create table tb_student
(
stuid integer not null comment ‘学号’,
stuname varchar(20) not null comment ‘姓名’,
stusex boolean default 1 comment ‘性别’,
stubirth date comment ‘出生日期’,
primary key (stuid)
);
~ auto_increment 编号自动增长,必须是主键也必须是integer类型(整形)

innodb - 支持行级锁,能够应对高并发访问;支持事务,保证数据的强一致性,
所以这个引擎最适合今天的互联网应用。

主键列(primary key):一张表中能够唯一确定一条记录的列我们可以将其设置为主键列,
主键列不能重复,主键列也不允许为空值。
? data types;
? int;

显示表结构
desc tb_student;

显示建表语句
show create table tb_student;

删除表
drop table if exists tb_student;

修改表
alter table tb_student add column stuaddr varchar(200);
alter table tb_student drop column stuaddr;
alter table tb_student modify column stusex char(1) default ‘男’;
alter table tb_student change column stusex stugender char(1) default ‘M’;
修改表的字符集:
alter table tb_student convert to charset utf8mb4;

flush privileges; 修改的立即生效!!!

插入数据
insert into tb_student values
(1001, ‘骆昊’, ‘M’, ‘1980-11-28’, ‘四川成都’);
insert into tb_student (stuid, stuname) values
(1002, ‘王大锤’);
insert into tb_student (stuid, stuname, stugender) values
(1003, ‘孙小美’, ‘F’),
(1004, ‘白元芳’, default),
(1005, ‘武则天’, ‘F’);

删除数据
delete from tb_student where stuid=1005;
delete from tb_student where stuname=‘白元芳’;

删全表:
truncate table tb_student;

更新操作
update tb_student
set stubirth=‘1992-2-2’, stuaddr=‘河北保定’
where stuid=1002;

查询数据
select * from tb_student;
select * from tb_student\G

文本编辑神器:

Visual Studio Code

Sublime

Atom —> Miku

TextMate

Notepad++

latin1 —> iso-8859-1 —> 中文全部变成? —> 编码黑洞

row - 行
column - 列

数据库设计:
指导理论:范式理论(Normal Form)—> 规范程度
  • 1NF
  • 2NF
  • 3NF
--------------------------------------------
    - BCNF
    - 4NF
    - 5NF
~ ER图(实体关系图)
    E:实体(Entity,二维表)---> 矩形框
    实体的属性 ---> 椭圆框
    R:关系(Relationship)---> 菱形框
    关系的重数
        - 1:1
        - 1:N
        - M:N
    ~ 外键(foreign key)约束:
        alter table tb_student add constraint fk_student_collid 
        foreign key (collid) references tb_college (collid);

create table tb_teacher
(
teaid integer not null comment ‘工号’,
teaname varchar(20) not null comment ‘姓名’,
teasex char(1) default ‘M’ comment ‘性别’,
teabirth date comment ‘出生日期’,
teatitle varchar(10) default ‘讲师’ comment ‘职称’,
collid integer not null comment ‘所属学院’,
primary key (teaid),
foreign key (collid) references tb_college (collid)
);

create table tb_teacher
(
teaid integer not null comment ‘工号’,
teaname varchar(20) not null comment ‘姓名’,
teasex char(1) default ‘M’ comment ‘性别’,
teabirth date comment ‘出生日期’,
teatitle varchar(10) default ‘讲师’ comment ‘职称’,
collid integer not null comment ‘所属学院’,
primary key (teaid)
);

– 添加外键约束
alter table tb_teacher add constraint fk_teacher_collid
foreign key (collid) references tb_college (collid);

– 删除外键约束
alter table tb_teacher drop foreign key fk_teacher_collid;

外键约束建立了两张表之间的参照完整性,有外键约束的存在无效的数据就无法录入,
但是外键约束对性能有明显的影响,所以实际项目中有可能会根据需要去掉外键约束。

MySQL图形化客户端工具:
MySQL Workbench
Navicat for MySQL(导航猫)
SQLyog CE / EE(海豚)
Toad for MySQL(蛤蟆)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值