数据库:

概念:长期存在计算机内,有组织,可共享的大量的数据的集合,是一个数据”仓库“

作用:保存、管理数据(保证数据的完整性,减少冗余)

数据库分为:

数据库管理系统DBMS(Database Management System):数据库管理工具


数据库 -- MySQL

结构化查询语句SQL:


MySQL数据管理

一、数据库(DataBase)的操作:

//创建数据库
create database [if not exists] 数据库名;//删除数据库
drop database [if not exists] 数据库名;//查看数据库
show databases;//使用数据库
use 数据库名;

二、数据表(table)操作:

数值类型:

字符串类型:

时间和时间数值类型:

数据字段属性:

(1)UNSIGNED

  • 无符号的
  • 声明该数据列不允许负数

(2)ZEROFILL

  • 0填充的
  • 不足位数的用0来填充,如int(3),5则为005

(3)AUTO_INCREMENT

  • 自动增长的,每添加一条数据,自动在上个记录数上加1
  • 通常用于设置主键,且为整数类型
  • 可定义起始值和步长
//查看数据库的定义
show create database 库名;//查看数据表的定义
show create table 表名;//显示表结构
desc 表名;

MySQL数据表的类型:(MyISAM、InnoDB、 HEAP、 BOB、 CSV等)

设置数据表字符集:

数据表的存储位置:

修改数据表:

/*修改表名*/
alter table stu1 rename  stu2;
/*添加新的字段*/
alter table stu2 add sex int not null;
/*修改表字段*/
alter table stu2 MODIFY sex varchar(10) DEFAULT NULL;
alter table stu2 CHANGE sex sex1 int(2) NOT NULL;
/*删除表的字段*/
alter table stu2 drop sex1;
/*删除数据表*/
drop table stu2;

删除数据表:

数据表的主键与外键:

(1)添加主键约束:

//grade表添加主键约束
USE MySchool;
alter table `grade` add constraint pk_gradeID
primary key `grade` (gradeID);

(2)添加外键约束:

//为student表gradeid字段添加外键约束
use Myschool;
alter table `student6` add constraint fk_student_grade
foreign key(`gradeId`)
references `grade`(`id`);

(3)创建主键约束法:

//创建主键约束语法,主键列可以是int,也可以是varchar类型,
//主键唯一标识一条记录,不允许有重复值,主键列不能为空,
//可以使用AUTO_INCREMENT设置自动递增
ALTER table `表名` add constraint 主键名称
primary key `表名`(`设置主键的列`)

(4)创建外键约束法:

//创建外键约束语法,外键关联的字段在参考表中必须是主键列,参考与被参考的列属性、类型必须保持一致
alter table `表名` add constraint 外键名称
foreign key(`作为外键的列`)
REFERENCES `参考表`(`参考的列`)

(5)删除外键:

//删除外键
ALTER TABLE student DROP FOREIGN KEY FK_ gradeid;
ALTER TABLE student DROP INDEX FK_ gradeid;

表添加内容:

//使用语句如何增加数据
INSERT INTO 数据表 (gradename) VALUES ('内容') ;
INSERT INTO 数据表 VALUES(2,'内容');
INSERT INTO 数据表 (gradename) VALUES('内容'), ('内容');

表修改数据:


三、DQL语言:

SELECT的使用:

//查看表
select 列名 from 表名;

1、DISTINCT关键字的使用:

2、在SQL语句中使用表达式:

3、满足条件的查询(where)

[ WHERE ... ]        //指定结果须满足的条件,简单理解为:有条件的从表中筛选数据

where条件语句:

逻辑操作符:

运算符:

查询(案例):

//精确查询
SELECT studentno, studentresult
FROM result
WHERE studentno= 1000 ;
//或者写成&&
SELECT studentno, studentresult
FROM result
WHERE studentresult>=95 && studentresult<= 100;

比较运算符(模糊查询):

注意:

  1. 数值数据类型的记录之间才能进行算术运算
  2. 相同数据类型的数据之间才能进行比较

模糊查询(案例):

//查询姓李的同学的学号及姓名
//like结合使用的: % (0到任意个字符)_ (一个字符)
SELECT studentno, s tudentname
FROM student
WHERE studentname LIKE'李%' ;//姓李的,但是名字中只有一一个字
SELECT studentno, studentname
FROM student
WHERE studentname LIKE'李_';//姓李的,但是名字中只有两个字
SELECT studentno, studentname
FROM student
WHERE studentname LIKE'李__';

(1)between and 查询:

(2)模糊查询之 like 和 通配符 :

//查询学员姓名中有“%”这个字的同学学号、姓名   转义符
SELECT studentno, studentname FROM student
WHERE studentname LIKE' % \%%' ;
SELECT studentno, studentname FROM student
WHERE studentname LIKE' %\_ %';//转义符\能不能使用我自 己的转义符呢? (:)
SELECT studentno, studentname FROM student
WHERE studentname LIKE' %:%%' ESCAPE':';

(3)模糊查询之 innull :

//in
SELECT studentno, studentname
FROM student
WHERE studentno IN (1000, 1001, 1002, 1003) ;

//区别空字符串与null
SELECT * FROM student;
//查询家庭住址没有写的同学
SELECT studentname FROM student
WHERE address=' 'OR address IS NULL;

select语法

连接查询(多表查询):

(1)inner join内连接查询:

/*使用inner join内连接查询*/
select s. studentNo, s.StudentName , g.gradeName from student s
inner join grade g on s. gradeId=g.idselect s.studentNo, s.studentName , g.gradeName from student
s,grade g
where s.GradeId=g. id;

(2)out join外连接查询:

  • inner join:查询两个表中的结果中的交集
  • left join:以左表作为基准,右边表来一一匹配, 匹配不上的,返回左表的记录,右表以null填充
  • right join:以右表作为基准,左边表来一一匹配, 匹配不上的,返回右表的记录,左表以null填充

/*查询Logic Java课程的考试成绩,并按照成绩降序排列*/
select DISTINCT r. studentResult, C. subjectName from result r
inner join subject C
on r. subjectNo=c. subjectNo and C. subjectName= 'Logic Java'
order by r. studentResult desc;
/*按照成绩进行升序排列,asc升序也是默认值,desc降序*/
select studentResult from result order by studentResult asc;

limit 分页:

/*分页查询
select * from result limit pageIndex, pageSize
pageIndex(当前页面第一条记录的索引值, 索引从0开始)=( 当前页码-1)*pageSize
pageSize:页面大小(自定义)
*/
select * from result limit 5;
select * from result limit 0,5;

查询(案例):


MySQL的事务处理


1、事务的特性:

事务必须具备以下四个属性,简称ACID属性

  • 原子性( Atomicity )
  • 一致性 ( Consistency )
  • 隔离性( Isolation )
  • 持久性( Durability )

2、事务的实现方法:

(1)SET AUTOCOM MIT

  • 使用SET语句来改变自动提交模式

注意:

  • MySQL中默认是自动提交
  • 使用事务时应先关闭自动提交

(2)STARTTRANSACTION

  • 开始一一个事务,标记事务的起始点

(3)COMMIT

  • 提交一个事务给数据库

(4)ROLLBACK

  • 将事务回滚,数据回到本次事务的初始状态

(5)SET AUTOCOMMIT= 1;

  • ■开启MySQL数据库的自动提交

3、事务处理步骤:

4、数据库索引:

(1)主键索引(PRIMARY KEY):

(2)唯一索引(UNIQUE):

(3)常规索引(INDEX):

(4)全文索引(FULLTEXT):

5、管理索引:

(1)创建(添加)索引

创建索引注意事项:

  1. 选择合适的列创建索引可以提高表的执行效率(经常使用该列作为条件,如检索、删除、修改等操作),不合理的索引会影响表的执行效率
  2. 在WHERE、ORDER BY子句中经常使用的字段
  3. 字段的值是多个(例如性别字段则不适合)
  4. 字段内容不是经常变化的
  5. 经常变化的字段,添加索引反而降低性能
  6. 不宜过多添加索引
  7. 每添加一条索引都会占用磁盘空间

(2)删除索引

//删除索引
drop index 索引 on 表名;
alter table 表名 drop index 索引;//删除主键索引
alter table 表名 drop primary key;

(3)查看索引

//查看索引
show index from 表名;

索引准则:

  • 索引不是越多越好
  • 不要对经常变动的数据加索引
  • 小数据量的表建议不要加索引
  • 索引一般应加在查找条件的字段

6、MySQL的备份

(1)mysqldump数据库备份

(2)mysqldump常用选项

(3)mysqldump数据库备份

7、MySQL数据库的恢复

(1)利用SQL语句导出、导入数据


帮助:

  • MySQL--菜鸟教程:https://www.runoob.com/mysql/mysql-tutorial.html
  • Navicat Premium 12解决方案:https://blog.csdn.net/weixin_40845165/article/details/84076958
  • 使用Navicat连接数据库:https://www.cnblogs.com/bfz50/p/9717419.html
  • 数据库常用命令单词:https://blog.csdn.net/weixin_41540362/article/details/103614154
  • 常用MySQL函数:https://blog.csdn.net/weixin_41540362/article/details/103642652
  • 添加外键引用:https://www.cnblogs.com/msi-chen/p/10189532.html

共勉:明日复明日,明日何其多。我生待明日,万事成蹉跎。

数据库--MySQL相关推荐

  1. linux笔记本没有insert,无法在Linux中将UTF8插入数据库MySQL(Can not insert UTF8 to Database MySQL in Linux)...

    无法在Linux中将UTF8插入数据库MySQL(Can not insert UTF8 to Database MySQL in Linux) 当创建表时,我已经设置了charset = utf8. ...

  2. 数据库MYSQL学习系列三

    数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...

  3. mysql数据库64免安装_MYSQL数据库mysql 5.7.18 winx64 免安装 配置方法

    <MysqL数据库MysqL 5.7.18 winx64 免安装 配置方法>要点: 本文介绍了MysqL数据库MysqL 5.7.18 winx64 免安装 配置方法,希望对您有用.如果有 ...

  4. mysql 分区指定路径_[数据库]MySQL 指定各分区路径

    [数据库]MySQL 指定各分区路径 0 2016-11-08 18:00:44 介绍 可以针对分区表的每个分区指定各自的存储路径,对于innodb存储引擎的表只能指定数据路径,因为数据和索引是存储在 ...

  5. mysql利用触发器删除数据库_[数据库]mysql 触发器的创建 修改 删除

    [数据库]mysql 触发器的创建 修改 删除 0 2015-12-16 23:00:04 //做一个简单的练习,创建一个简单的触发器 完成添加文章的时候,自动加上时间,默认作者 为 '日记本的回忆' ...

  6. 解决向数据库mysql插入double数据小数点不显示问题

    解决向数据库mysql插入double数据小数点不显示问题 参考文章: (1)解决向数据库mysql插入double数据小数点不显示问题 (2)https://www.cnblogs.com/sovi ...

  7. mysql存储的判断if_if在数据库mysql存储中判断

    我们经常会对一个事物作出选择,就如屏幕前的小伙伴们选择继续浏览本篇文章,或者关闭这个界面,这就是我们所说的判断.当然看文章的判断条件是,文章的内容是否符合小伙伴们的兴趣.今天我们就数据库mysql存储 ...

  8. mysql数据库可以升级吗_[数据库]MySQL升级

    [数据库]MySQL升级 0 2016-08-16 22:00:18 MySQL的升级相对来说还是比较简单的. 它支持两种方式的升级: 原地升级(In-place Upgrade) 关闭数据库,替换旧 ...

  9. 数据库MYSQL学习系列一

    数据库MYSQL学习系列一 一.MYSQL数据库基础 1.1-认识MYSQL 什么是数据库 计算机处理和存储的一切信息都是数据 计算机系统中一种用于存取数据的程序 一种: 计算机系统中有很多种能够存取 ...

  10. 大数据之数据库mysql优化实战(一)

    2019独角兽企业重金招聘Python工程师标准>>> :facepunch: 大数据之数据库mysql优化实战(一) 首先你要有数据,不然怎么测试,几百条就算了,还没跑就完了. 本 ...

最新文章

  1. Webwork 学习之路【08】结合实战简析Controller 配置
  2. Elasticsearch 架构原理
  3. 数据库-事务并发操作问题及并发的控制
  4. Haproxy+多台MySQL从服务器(Slave) 实现负载均衡
  5. 设计模式之Builder (创建者模式)的一些个人理解(转)
  6. 实验五 数据结构综合应用 20162305
  7. C# Combobox可输入+自动完成
  8. python导入random模块_python random模块(随机数)详解
  9. 公司因为薪资问题,走了一个各方面都不错的老工人,花更多的钱招来一个跨行业新手,这是为什么?
  10. 单位人勾心斗角,我是老实人该怎么办?
  11. FISCO BCOS Solidity 智能合约 接收数组参数
  12. php 匹配标签内的文本内容 preg_match_all strip_tags
  13. JAVA NP插件,特定的宽度600,插件就不显示
  14. memset初始化值的效率秒杀for循环
  15. EPC901安装XP
  16. 【二级等保】二级等保怎么做?价格怎么样?贵吗?
  17. 【前端】html+css实现鼠标悬浮变色的按钮 hover【HTML+CSS+JavaScript(JS)】
  18. PowerPoint中插入视频无法播放的问题
  19. 2017cad光标大小怎么调_如何更改CAD光标大小及颜色?
  20. c学习笔记 文件输入/ 输出 20210314

热门文章

  1. 台式计算机怎么截屏,台式电脑怎么截屏
  2. mysql 多表查询
  3. 基于SSM实现的儿童疫苗信息管理系统设计与实现 毕业设计-附源码311930
  4. 2022-2028年中国太阳能发电系统市场调查与市场需求预测报告
  5. 将博客搬至CSDN_拔剑-浆糊的传说_新浪博客
  6. TP5源码分析-执行应用【initialize方法分析】
  7. 15款android设备上的代码编辑器
  8. c语言大战二十四祖冲之,18祖冲之
  9. 简单工厂模式在Logback源码以及JDK源码中的应用
  10. 项目管理(五):WBS