数据库--MySQL
数据库:
概念:长期存在计算机内,有组织,可共享的大量的数据的集合,是一个数据”仓库“
作用:保存、管理数据(保证数据的完整性,减少冗余)
数据库分为:
数据库管理系统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;
比较运算符(模糊查询):
注意:
- 数值数据类型的记录之间才能进行算术运算
- 相同数据类型的数据之间才能进行比较
模糊查询(案例):
//查询姓李的同学的学号及姓名
//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)模糊查询之 in 和 null :
//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)创建(添加)索引
创建索引注意事项:
- 选择合适的列创建索引可以提高表的执行效率(经常使用该列作为条件,如检索、删除、修改等操作),不合理的索引会影响表的执行效率
- 在WHERE、ORDER BY子句中经常使用的字段
- 字段的值是多个(例如性别字段则不适合)
- 字段内容不是经常变化的
- 经常变化的字段,添加索引反而降低性能
- 不宜过多添加索引
- 每添加一条索引都会占用磁盘空间
(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相关推荐
- 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. ...
- 数据库MYSQL学习系列三
数据库MYSQL学习系列三 三.MYSQL事务与存储引擎 3.1-数据库事务 什么是事务 一系列有序的数据库操作: o要么全部成功 o要么全部回退到操作前的状态 o中间状态对其他连接不可见 事务的 ...
- mysql数据库64免安装_MYSQL数据库mysql 5.7.18 winx64 免安装 配置方法
<MysqL数据库MysqL 5.7.18 winx64 免安装 配置方法>要点: 本文介绍了MysqL数据库MysqL 5.7.18 winx64 免安装 配置方法,希望对您有用.如果有 ...
- mysql 分区指定路径_[数据库]MySQL 指定各分区路径
[数据库]MySQL 指定各分区路径 0 2016-11-08 18:00:44 介绍 可以针对分区表的每个分区指定各自的存储路径,对于innodb存储引擎的表只能指定数据路径,因为数据和索引是存储在 ...
- mysql利用触发器删除数据库_[数据库]mysql 触发器的创建 修改 删除
[数据库]mysql 触发器的创建 修改 删除 0 2015-12-16 23:00:04 //做一个简单的练习,创建一个简单的触发器 完成添加文章的时候,自动加上时间,默认作者 为 '日记本的回忆' ...
- 解决向数据库mysql插入double数据小数点不显示问题
解决向数据库mysql插入double数据小数点不显示问题 参考文章: (1)解决向数据库mysql插入double数据小数点不显示问题 (2)https://www.cnblogs.com/sovi ...
- mysql存储的判断if_if在数据库mysql存储中判断
我们经常会对一个事物作出选择,就如屏幕前的小伙伴们选择继续浏览本篇文章,或者关闭这个界面,这就是我们所说的判断.当然看文章的判断条件是,文章的内容是否符合小伙伴们的兴趣.今天我们就数据库mysql存储 ...
- mysql数据库可以升级吗_[数据库]MySQL升级
[数据库]MySQL升级 0 2016-08-16 22:00:18 MySQL的升级相对来说还是比较简单的. 它支持两种方式的升级: 原地升级(In-place Upgrade) 关闭数据库,替换旧 ...
- 数据库MYSQL学习系列一
数据库MYSQL学习系列一 一.MYSQL数据库基础 1.1-认识MYSQL 什么是数据库 计算机处理和存储的一切信息都是数据 计算机系统中一种用于存取数据的程序 一种: 计算机系统中有很多种能够存取 ...
- 大数据之数据库mysql优化实战(一)
2019独角兽企业重金招聘Python工程师标准>>> :facepunch: 大数据之数据库mysql优化实战(一) 首先你要有数据,不然怎么测试,几百条就算了,还没跑就完了. 本 ...
最新文章
- Webwork 学习之路【08】结合实战简析Controller 配置
- Elasticsearch 架构原理
- 数据库-事务并发操作问题及并发的控制
- Haproxy+多台MySQL从服务器(Slave) 实现负载均衡
- 设计模式之Builder (创建者模式)的一些个人理解(转)
- 实验五 数据结构综合应用 20162305
- C# Combobox可输入+自动完成
- python导入random模块_python random模块(随机数)详解
- 公司因为薪资问题,走了一个各方面都不错的老工人,花更多的钱招来一个跨行业新手,这是为什么?
- 单位人勾心斗角,我是老实人该怎么办?
- FISCO BCOS Solidity 智能合约 接收数组参数
- php 匹配标签内的文本内容 preg_match_all strip_tags
- JAVA NP插件,特定的宽度600,插件就不显示
- memset初始化值的效率秒杀for循环
- EPC901安装XP
- 【二级等保】二级等保怎么做?价格怎么样?贵吗?
- 【前端】html+css实现鼠标悬浮变色的按钮 hover【HTML+CSS+JavaScript(JS)】
- PowerPoint中插入视频无法播放的问题
- 2017cad光标大小怎么调_如何更改CAD光标大小及颜色?
- c学习笔记 文件输入/ 输出 20210314