了解MySQL的第一步

MySQL基本概念:

操作语句

1. 操作数据库:

    创建数据库: create database 数据库名 charset utf8;
    查看数据库: show databases;
    选择数据库: use 数据库名;
    删除数据库: drop 数据库名;
    修改数据库: alter database 数据库名 charset utf8;
复制代码

2. 操作表:

先切换到数据库下:
    创建:create table 表名(字段名1 类型(宽度) 约束条件,字段名1 类型(宽度) 约束条件);
    查看:show tables;
    修改:alter table 表名 modify 字段名 类型(宽度);
         alter table 表名 change 旧字段名 新字段名 类型(宽度);
    删除:drop table 表名;

复制代码

3. 操作表中的记录:

    插入:insert into 表名 values(值1,值2.....);
    查询:select * from 表名;
    修改:update 表名 set 字段名=值 where 条件;
    删除:delete from 表名 where 条件;
复制代码

约束

为了防止在数据表中插入错误的数据,在Mysql中定义了一些维护数据库完整性的规则,这个规则就是表的约束,通过这些约束我们可以保证数据的正确性。

主键约束: 当我们的数据库中保存了成千上万条数据时,如何能找到你需要的那条数据呢? MySQL提供的主键约束即可帮助我们快速的查询到我们想要的数据。 主键是唯一标识一条记录的,可以把它比喻为身份证号,尽管全世界有那么多人, 但只要知道了身份证号就可以很快的查找一个人的信息。

外键约束: 表的外键是另一表的主键, 外键可以有重复的, 可以是NULL,用来和其他表建立联系用的,一个表可以有多个外键。

非空约束: 非空约束所对应的列在插入数据时不允许为空,也就是必须为该字段赋值,MySQL中使用NOT NULL来表时非空约束其语法为:

create table money(time datatime,money int NOT NULL);
复制代码

唯一约束: 唯一约束用于保证数据表中字段的唯一性,即表中字段不可以出现重复的值, 唯一约束通过UNIQUE来指定,其语法格式为:

create table person(id int UNIQUE,age int);
复制代码

默认值约束: 在一些应用场景下,我们会希望对每一条数据中的某个字段赋予一个默认值, 例如:在一些游戏中,每个账号默认会赠送给用户一定数量的金币,此时金币这个数据就可以使用默认值约束了,MySQL中使用DEFALUT为字段指定默认值其语格式为:

create table user(account char(20),password char(6),money int DEFALUT 1000);
复制代码

基本数据类型:

整数

tinyint()    1字节
smallint()   2字节
mediumint()  3字节
int()        4字节
bigint()     8字节
对于整型而言,宽度用于控制显示的长度
例如 int(10) 则表示显示的时候,如果不足10位则补足到10位,默认用空格填充
ZEROFILL 设置以0填充
复制代码

浮点

float(m,d)   4字节
double(m,d)  8字节
decimal(m,d) 不固定
在浮点类型中,后面的m表示整体长度,d表示小数长度
注意:是长度和字节数无关
复制代码

字符串

char
    定长字符串,超出范围会报错,速度快
varchar
    可变长字符串,节省空间,速度慢
复制代码

时间

year
date
time
datetime
timestamp  自动更新
复制代码

建立表之间的关系

一对多关系:

1.创建表
创建主表(department)
create table department(id int primary key auto_increment,
department_name char(20) unique,
job char(50) not null);

创建从表(employee)
create table employee(id int primary key auto_increment,
employee_name char(20) not null,
gender char(20),
age int,
foreign key(id) references department(id));

2.插入表
插入主表
insert into department values(1,'市场部','宣传'),(2,'销售部','销售');

插入从表
insert into employee values(1,'jarvis','male',28),(2,'jasion','male',25);

*******
删除要先删除从表再删除主表
删除记录也一样,要先删从表再删主表
*******
级联:
on delete cascade 当主表删除记录时 从表相关联的记录同步删除
on update cascade 当主表id更新时 从表相关联的记录同步更新
主表变化操作从表,从表变化不会操作主表

#实例语句
create table employee(id int primary key auto_increment,
employee_name char(20) not null,
gender char(20),
age int,
foreign key(id) references department(id) on delete cascade);
复制代码

多对多关系:

多对多需要有一个中间表来存贮表的关联关系


1.创建表
创建主表(teacher)
create table teacher(id int primary key auto_increment,name char(25));
创建主表(student)
create table student(id int primary key auto_increment,name char(25));
创建从表(relation 关系表)
create table relation(id int primary key auto_increment,
t_id int,s_id int,
foreign key(t_id) references teacher(id),
foreign key(s_id) references student(id)
);
2.输入值
insert into teacher values
(1,"egon"),
(2,"jack");

insert into student values
(1,"uu"),
(2,"yy");
3.插入对应关系
insert into relation values
(null,1,1),
(null,1,2),
(null,2,2);
复制代码

一对一关系:

使用外键来关联,但是需要给外键加上唯一约束,也就是说两个一对一是有主从关系的

create table t1(id int primary key auto_increment,name char(20));
create table t2(id int primary key auto_increment,name char(20),
t1_id int UNIQUE,
foreign key(t1_id) references t1(id));
********
#垂直分表:
当一个表的字段太多,常用字段不多时,可以采取垂直分表的方式来提高效率
复制代码

转载于:https://juejin.im/post/5bf54fe5e51d4562e904c89f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值