MySQL数据存储资料.docx
- 文档编号:28951147
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:13
- 大小:29.48KB
MySQL数据存储资料.docx
《MySQL数据存储资料.docx》由会员分享,可在线阅读,更多相关《MySQL数据存储资料.docx(13页珍藏版)》请在冰豆网上搜索。
MySQL数据存储资料
MySQL
1、常用的MySQL命令
1,列举出数据库
showdatabases;
2,进入/切换数据库
use数据库名;
3,列举出表
showtables;
4,查看表结构
desc表名
2、MySQL简介
MySQL是一款开源的关系型数据库,目前有Oracle公司来开发。
目前为止在数据库排行榜上位于第三位。
MySQL数据库有多重版本:
windows,linux,Mac。
关系型数据库:
数据库是用来存放数据的,还要存放数据和数据之间的关系。
这个关系在数据库看来也是数据。
3、数据库SQL语句
SQL语法属于第四代语法,自然语言。
编程的规则就和人说话一样。
主谓宾定状补
1,数据库管理
--创建数据库
createdatabased_name;
在mysql中有数据引擎的概念,默认情况下是InnoDB引擎,这个引擎可以支持关系数据。
--删除数据库
dropdatabased_name;
--备份数据库
--还原数据库
2,执行外部的.txt/.sql文件来执行
source文件路径(不能加;)
4、常用的数据类型
int:
整型
char(n):
字符类型,固定长度
char(10):
只能放10的英文字符或者5个汉字。
‘aa’,如果没有用完指定长度,则用空格填满。
查询速度快,浪费空间。
如果是定长数据,则使用char,比如性别,手机号,身份证号码。
varchar(n):
字符类型,可变长度
varchar(10)
‘aa’,如果没有用完指定长度,则用空格填满。
查询速度慢,不浪费空间。
姓名,简介,地址等等。
text:
字符类型
存放的字符数量比较大。
DATETIME:
时间类型,时间类型也是字符类型,只不过它有自己的格式。
Date:
日期类型。
,时间类型也是字符类型,只不过它有自己的格式。
在MySql中提供了几个时间函数:
now():
返回当前的日期+时间
curDate():
返回当前的日期
curTime():
返回当前的时间
DATEDIFF(exp1,exp2):
计算两个日期之间的天数
date(‘YYYY-MM-DDhh:
mm:
ss’):
得到指定时间的日期部分
1,表的创建
数据库中是存放数据的,但是数据真正存储在表中,表在数据库中。
在数据库中可有很多的对象:
表对象,触发器对象,存储过程对象等等。
最重要的是表对象。
createtablet_name(
字段列表
);
字段类表:
规定这一列是用来存储什么数据的额,数据的类型是什么,数据的约束是什么。
表和表之间的关系就可以用数据来表示出来。
在数据报表中很多可能出现重复数据,重复数据称之为垃圾数据(冗余数据),应该避免这些垃圾数据。
通过具体的分析来创建表。
表的约束:
约束数据必须是符合规则的。
1、主键约束
通过设置某个字段作为主键,用来唯一标示这条数据。
primarykey
还可以设置字段的auto_increment来设置该字段是自动增长。
注意:
设置为自动增长之后,在插入数据的时候,需要把该类的值设置为null
insertintoemployeevalues(null,’张三’,89);
2、检查约束
在插入数据的时候,数据库会自动的检测数据是否合法
在mysql中check约束不起作用,但是不会导致语法错误,数据库引擎会解析,但是不执行。
在mysql中使用set,enum来实现相同的功能。
在使用set或者enum的时候,不需要给该字段定义类型,应为后面的值已经确定了该字段的类型。
CreateTableA(
sexSet('男','女')
)
/*
CreateTableA(
sexenum('男','女')
)*/
insertintoAvalues('男')
insertintoAvalues('女')
insertintoAvalues('妖')
3、默认值
当插入数据的时候,可以不指定该字段的值,由默认值来代替。
default默认值
createtableB(
idint,
namevarchar(32)default'张三'
);
insertintoB(id)values
(1)
insertintoBvalues(1,default)
这样在插入数据的时候,会使用默认值。
4、非空约束
不允许该字段为null。
一般情况习惯性的都写上notnull,该空不是’’。
一般情况下null值几乎没有任何的作用,只有在联合查询的时候,null值才有作用。
CreateTableC
(
idintnotnull,
namevarchar(32)notnull
)
insertintoCvalues(null,null)
insertintoCvalues(1,'')
5、唯一约束
主键约束也是一种唯一约束,要求该字段的值不能重复,但是主键是用来唯一标示一条记录的,除此之外还可能要求其他的字段的值也不能重复,此时就需要唯一约束。
CreatetableD(
idintprimarykey,
namevarchar(32)unique
)
insertintoDvalues(1,'宿舍')
insertintoDvalues(2,'宿1舍')
6、复合主键
两个或两个以上的字段作为主键,此时只有这几个字段的值不一样,才可以表示为一条记录。
通常情况下,复合主键(联合主键)用于关系表中。
7、外键
关系型数据库,数据和数据之间是有关系,这个关系需要通过外键来描述。
常见的关系:
1:
1
1:
n
n:
n
Demo:
部门和员工之间的关系就是1:
n
Demo:
老师和学生n:
n
在创建表和表之间关系的时候,通过foreignkey(外键)referencest_name(主键)。
需要另起一行
---创建部门主键表
createtabledepartment
(
dnovarchar(32)primarykey,
dnamevarchar(64)
)
---外键表
createtableemployee
(
eidintauto_incrementprimarykey,
enamevarchar(32)notnull,
esexset('男','女'),
ebirthdatetime,
etelchar(11)notnull,
eaddressvarchar(256)notnull,
esalarydoublenotnull,
dnovarchar(32),
foreignkey(dno)referencesdepartment(dno)
)
5、SQL语句
1,插入语句
insertinto表名(字段名类表)values(值类表)
insertintoemployee(eid,ename,esex,eage)values(1,’张三’,’男’,34);
如果说要插入全部数据
insertintoemployeevalues(1,’张三’,’男’,34);
2,修改语句
update表名set修改的字段列表【where更新条件】
updateemployeesetesalary=1000跟新的所有的记录
通常情况下,使用条件来更新
updateemployeesetesalary=esalary+1000whereeid=1
3,删除语句
deletefrom表名【where删除条件】
deletefromemployee---删除了全部记录了
通常情况下,使用条件来删除
deletefromemployeewhereeid=1
4,where语句
where语句是条件语句,可以用于select,update,delete.用来过滤数据的。
where布尔表达式。
=,>,<,>=,<=,!
=,<>,not,isnot,in,notin,like,&&,And,||,or,between..and..(>=and<)
5,查询语句
1,简单查询
select查询字段列表from表名
where条件
groupby分组依据
having分组过滤
orderby排序
模糊查询:
字段like‘值’,可以使用通配符来表示,%,_
%:
代表0个或多个字符
_:
代表一个字符。
分组查询:
select分组字段,聚合函数from表
groupby分组字段
having布尔表达式
2,联合查询
链接查询主要解决的就是一个笛卡尔积的问题,通过连接条件来取消笛卡尔积。
innerjoin:
内联,A表的外键和B表的主键完全相等才能匹配
(1)selecta.*.b.*fromainnerjoinbon连接条件
(2)selecta.*,b.*froma,bwhere连接条件
leftjoin:
左联,把左表和右表匹配的记录查询出来之外,还要把左表中没有匹配的也查询出来。
rightjoin:
右联,把右表和左表匹配的记录查询出来之外,还要把右表中没有匹配的也查询出来。
在多对多关系中,使用单独的一张表用来存放数据的关系。
此时的链接查询称之为多表链接。
---多对多
createtablestudent(
sidintprimarykey,
snamevarchar(32)
);
insertintostudentvalues(1,'张三')
insertintostudentvalues(2,'李四');
insertintostudentvalues(3,'王五');
insertintostudentvalues(4,'马六');
createtableteacher(
tidintprimarykey,
tnamevarchar(32)
);
insertintoteachervalues(1,'贝吉塔');
insertintoteachervalues(2,'超级塞牙人');
createtablestudent_teacher(
sidint,
tidint,
foreignkey(sid)referencesstudent(sid),
foreignkey(tid)referencesteacher(tid),
primarykey(sid,tid)
)
insertintostudent_teachervalues(1,1);
insertintostudent_teachervalues(1,2);
insertintostudent_teachervalues(2,2);
insertintostudent_teachervalues(3,1);
insertintostudent_teachervalues(4,1);
insertintostudent_teachervalues(4,2);
select*fromstudent;
select*fromteacher;
select*fromstudent_teacher;
selecta.*,c.*fromstudentasa
innerjoinstudent_teacherasb
ona.sid=b.sid
innerjointeacherasc
3,子查询
嵌套在查询中的查询称之为子查询,子查询的作用是为父查询提供查询依据的。
子查询可以出现在父查询中的任意位置。
---子查询
---1,查看一下工资最高的员工信息
selectmax(esalary)fromemployee
select*fromemployeewhereesalary=(selectmax(esalary)fromemployee)
---2,查看一下工资最低的员工信息
selectmin(esalary)fromemployee
select*fromemployeewhereesalary=(selectmin(esalary)fromemployee)
---3,查询一下工资大于本部门平均工资的人
selectavg(esalary)fromemployeegroupbyeaddress
select*fromemployeeasa
whereesalary>(selectavg(esalary)fromemployeeasbgroupbyeaddresshavinga.eaddress=b.eaddress)
--4,查询员工的姓名和总工资
selectenamefromemployee
selectsum(esalary)fromemployee
select*,(selectsum(esalary)fromemployee)fromemployee
--5,查询部门平均工资大于5000的部门员工信息
selecteaddressfromemployeegroupbyeaddresshavingavg(esalary)>5000
select*fromemployeewhereeaddressin(selecteaddressfromemployeegroupbyeaddresshavingavg(esalary)>5000)
4,limit查询
分页查询,limitindex,count
select*fromemployeelimit0,3
从索引为0的记录开始查,每次查3条数据
分页的公式:
limit(pno-1)*pagesize,pagesize
注意:
limit语句只能出现在select语句的最后。
6、常用函数
length(字符串):
得到字符串的字节数
count(*):
统计记录数
sum(字段):
求指定字段的总和
avg(字段):
求指定字段的平均值
max(字段):
求指定字段的最大值
min(字段):
求指定字段的最小值。
7、起别名
1,给字段起别名
selectnameas‘姓名’
selectname‘姓名’
2,给表起别名
在表的后面加上asa或者不加as
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MySQL 数据 存储 资料