甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
mysql基础
发布日期:2020-08-05 18:24:29阅读次数:

目录
一. 基础概念

关系型数据库
行式存储
二. 基础命令

命令分类
基础命令
数据库中常用的数据类型
修改数据基本命令
三. MySQL建表约束

主键约束
自增约束
外键约束
唯一约束
默认约束
非空约束
四. MySQL查询

一. 基础概念
1. 关系型数据库
关系型数据库又称为关系型数据库管理系统(RDBMS),它是利用数据概念实现对数据处理的算法,达到对数据及其快速的增删改查操作。

既然被称为关系型数据库,那么它的关系在哪里体现呢?

比如有表单A 和 表单B

其中:

表单A 中有一个名为user_id的字段

表单B 中也有一个名为user_id的字段

可以将他们建立一种联系,当修改表单A的user_id的值时,表单B 中的user_id的值也会自动进行修改,因为他们建立的关系,使得数据具有一致性。这就是所谓的关系型

非关系型数据库正如它的名字,每条数据间都是独立存在的,没有什么关系。

2. 行式存储
name age sex
二. 基础命令
1. 命令分类
DML|数据库操控语言|对表中的数据进行增删改|insert delete update
DQL|数据库查询语言|对表中的数据进行查询|select
DDL 数据库定义语言|对数据库,数据表结构进行处理|create alter drop
2. 基础命令
创建数据库:
create database yolanda;
查看数据库:
show databases;
引用数据库:
use yolanda;
创建表:
create table stu(name varchar(10),age int);
描述表的结构:
desc stu;
查看创建了多少张表:
show tables;
删除表:
drop table stu;
修改表:
加一列:alter table 表名 add 列名
修改列名:alter table 表名 change 列名
删除列:alter table 表名 drop 列名
3. 数据库当中常用的数据类型
char/varchar:字符串
int:整型
float:浮点型
date:yyyy-mm-dd 日期值
year:年份
char和varchar

char的长度是不可变的,而varchar的长度是可变的

字段b:类型char(10),值为:abc,存储为:abc (abc+7个空格)

字段d:类型varchar(10),值为:abc,存储为:abc (自动变为3个的长度)

超出长度自动截取

字段c:类型char(3),值为:abcdefg,存储为:abc(defg自动删除)

字段e:类型varchar(3), 值为:abcdefg,存储为:abc (defg自动删除)

var(10)和char(10),都表示可存10个字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放10个

char最多可以存放255个字符
varchar的最大长度为65535个字节,varchar可存放的字符数跟编码有关
字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766个字符
字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845个字符

char和varchar的最大长度限制是mysql规定的

4. 修改数据基本命令
增加 insert
删除 delete
修改 update
查询 select
三. MySQL建表约束
1. 主键约束
能唯一确定一张表中的一条数据,给某个字段添加约束,使得该字段不重复且不为空。
创建一张表table:
create table user(id int primary key #在id添加主键约束,name varchar(20));
插入数据:
insert into user values(1,‘xiaoming’);
再插入
insert into user values(1,‘xiaoming2’);
报错:因为我们设置了主键,可以使这个字段不重复
在id和name上添加主键:
create table user2(id int ,name varchar(20),passwd varchar(20),primary key(id,name))
插入数据:
insert into user2 values(1,‘xiaoming’,‘123’);
再插入数据:
insert into user2 values(2,‘xiaoming’,‘234’);
不报错:因为这个叫做联合主键,只要联合的主键加起来不重复即可,它可以唯一确定一条数据,所以不报错
2. 自增约束
创建一张表:
create table user3(id int primary key auto_increment,name varchar(20));
插入数据:
insert into user3(name)values(‘zhangsan’);
select * from user3;
没有指定id的情况下会自动加上id
自增约束和主键约束联合起来用,会自动的去管控主键的值,使主键的值不唯一。

3. 外键约束
涉及到两个表:父表,子表,父表中没有的数据不能在子表中使用
创建两个表:
create table classes(id int primary key,name varchar(20));
create table students(id int primary key,name varchar(20),class_id int,foreign key(class_id)references classes(id));
在父表插入数据:
insert into classes values(1,‘yiban’);
insert into classes values(2,‘erban’);
insert into classes values(3,‘sanban’);
insert into classes values(4,‘siban’);
在子表插入数据:
insert into students values(1001,‘aa’,1);
insert into students values(1002,‘bb’,2);
insert into students values(1003,‘cc’,3);
insert into students values(1004,‘dd’,4);
再插入以下数据
insert into students values(1005,‘ee’,5);
报错,因为父表中没有5这个class id
父表中的记录如果被子表引用,是不能被删除的。

4. 唯一约束
修饰的字段的值不可以重复
创建一张表
create table user5(id int,name varchar(20)unique/unique(name));
添加唯一性约束:
alter table user5 add unique(name);
通过修改字段的方式添加唯一性约束:
alter table user5 modify name varchar(20) unique;
插入内容
insert into user5 values(1,‘zhangsan’);
insert into user5 values(1,‘lisi’);
再插入以下内容
insert into user5 values(2,‘zhangsan’);
报错:因为这个名字已经有了,不可以重复。
如何删除唯一性约束?
alter table user5 drop index name;
5. 默认约束
当我们插入字段值的时候,如果没有设置,就会使用默认值
创建一张表
create table user6(id int,name varchar(20),age int default 10);
插入数据
insert into user6(id,name) values(1,‘aa’);
查看表
select * from user6;
会发现age有默认的值
6. 非空约束
修饰的字段不能为空
创建表
create table user7(id int not null,name varchar(20));
id字段不能为空
四. MySQL查询
创建以下两张表

学生表:stuinfo
ssno:学号
sname:姓名
sage:年龄
create table stuinfo(ssno int primary key,sname varchar(20),sage int);

分数表:score
sno:学号
cno:课程编号
score:分数
create table score(sno int primary key,cno int,score int);

给学生表中插入数据
insert into stuinfo values(1001,‘aa’,12);
insert into stuinfo values(1002,‘bb’,15);
insert into stuinfo values(1003,‘cc’,13);
insert into stuinfo values(1004,‘dd’,14);
insert into stuinfo values(1005,‘ee’,16);

给分数表中插入数据
insert into score values(1001,2003,59);
insert into score values(1002,2003,53);
insert into score values(1003,2004,78);
insert into score values(1004,2004,90);
insert into score values(1005,2003,87);

查出选修了2003这门课(score),不及格的同学的名字(stuinfo)
sname------>ssno------>sno
A.查出选修了2003这门课不及格的学生的学号(score)
select sno from score where cno=‘2003’ and score<60;
B.查出学生姓名
select sname from stuinfo where ssno=‘sno’;
C.查出选修了2003这门课,不及格的同学的名字
select sname from stuinfo where ssno in(select sno from score where cno=‘2003’ and score<60);
————————————————
想了解更多IT知识,推荐您访问腾科教育