MySql的学习
1:什么是数据库:用来存储数据,管理数据 (DB DataBase)
2:数据库的分类
(1)关系型数据库:MySql,SqlServer,DB2,就是表和表之间,行和列之间的关系进行数据存储
(2)非关系型数据库:json字符串,一般通过键值对的方式存储,Redis,MongDBM,通过对象的属性存储
3:什么是DBMS?:关系型数据库管理系统
4:MySql的简介:是一个关系型数据库管理系统,前世是瑞典MySqlAB公司,现在属于Oracle下的产品,MySql是最好的RDBSM(Relation Database Management System),体积小,速度快。
5:MySql的安装教程:摘抄自:https://blog.csdn.net/qq_59636442/article/details/123058454(比较全面)(注意:在安装之前确保电脑已经卸载干净mysql,否则会出现安装不成功的情况)
6:基本命令行的
(1)mysql -uroot -p:查看mysql的版本,输入命令后会让你输入密码,然后链接上mysql
(2)show databases;查看所有的数据库,注意分号必须加上
(3)切换数据库 use school:切换到school数据库
(4)show tables:查看数据库中所有的表
(5)describe student :查看当前表的所有信息
(6)exit;退出链接
7:操作数据库
(1)创建数据库的命令:CREATE DATABASE if NOT EXISTS web :创建一个web数据库
(2)删除数据库的命令:DROP DATABASE if EXISTS web:删除数据库web
(3)查看所有的数据库:show databases
8:列的数据类型的详细讲解(必须)
(1)数值类型
tinyint:十分小的数据,1个字节
smallint:较小的数据,2个字节
mediumint:中等大小的数据,3个字节
int:标准的整数,4个字节(常用)--对应java中的int
bigint:较大的数据 8个字节
float:浮点数 4个字节
double:浮点数,8个字节
decimal:字符串形式的浮点数类型,金融计算的业务一般用这个
(2)字符串类型
char:字符固定大小的0-255
varchar:可变的字符串,大小0-65535--对应java中的String
tinytext:微型文本:2^8-1
text:文本串 2^16-1
(3)时间日期(java中的是java.util.Date)
date:YYYY-MM-DD:时间格式
time:HH:MM:SS:时间格式
datetime:YYYY-MM-DD HH:MM:SS:最常用的时间格式
timestamp:时间戳,1970.1.1到现在的毫秒数
year:年份的表示
(4)null:空,不要使用null进行运算
9:简单的建表语句
CREATE TABLE IF NOT EXISTS `op` ( `id` INT ( 4 ) NOT NULL AUTO_INCREMENT COMMENT '学号', `name` VARCHAR ( 30 ) NOT NULL DEFAULT '匿名' COMMENT '姓名', `age` VARCHAR ( 20 ) NOT NULL DEFAULT '10' COMMENT '年龄', PRIMARY KEY ( `id` ) )
创建表的公式:
CREATE TABLE [IF NOT EXISTS] `表名`( `字段名` 列类型 [属性] [索引] [注释], `字段名` 列类型 [属性] [索引] [注释], )[表的类型][表的字符集]
10:MyISAM和InnoDB的区别:(数据库的引擎)
(1):InnoDB:是mysql默认使用的引擎,支持事务,支持数据行锁定,支持外键约束,不支持全文索引,表的空间较大
(2):MySAM:早期使用的,在mysql5.0版本以前使用的引擎,不支持事务,不支持数据行锁定,不支持外键约束,支持全文索引,表的空间大小
总结:MyISAM节约空间,速度较快,InnoDB:安全性高,支持事务的处理。
11:修改表和删除表字段的sql语句
-- 修改表名:ALTER op 旧表名 RENAME AS 新表名 ALTER TABLE op RENAME AS op1 -- 增加表的字段 ALTER TABLE 表名 ADD moneny INt(11) 列属性 ALTER TABLE op1 ADD money INT(11) -- 修改表的字段(重命名,修改表的约束) ALTER TABLE op1 MODIFY money VARCHAR(11) -- 修改约束 ALTER TABLE op1 CHANGE money money1 INT(1) -- 重命名
-- 删除表的字段
ALTER TABLE op1 DROP money1
12:数据库表中的外键:外键在数据库中的作用主要是起一个约束的作用,建立两个表之间的关系,外键表示一个表中的字段被另外一个表中的一个字段引用,
13:DDML语言(增删改)
(1)添加语句
-- INSERT INTO 表名 ('字段1','字段2','字段3') VALUES('值1','值2','值3') -- 插入多条数据 INSERT INTO 表名 ('字段1','字段2','字段3') VALUES ('值1','值2','值3'),('值1','值2','值3')
(2)修改语句
-- UPDATE 表名 SET '字段名1' = '值1','字段名2'='值2' WHERE id = '1' 修改id为1的数据,修改的sql语句记得加条件
where:条件运算符,大于等于小于,在某个区间中即可
(3)删除语句
-- DELETE FROM 表名 where id = '1'
TRUNCATE和delete的区别
(1)TRUNCATE:截断表会重新设置自增列,计数会归零,不会影响事务
(2)delete的删除问题:当用delete删除表的时候,重新启动数据库,如果是InnoDB:自增会从1开始(因为他是存在内存中的,断电即失),MyISAM:继续从上一个增量开始,因为他是存在文件中的,不会失去
14:DQL(数据库中的重点)
-- SELECT * FROM '表名' as 别名
mysql中常见的函数:
concat(a,b):链接字符串的函数
DISTINCT:去重,去除select查询结果中重复的数据 例如:select DISTINCT '字段名' from table
and(&&):逻辑与(两个为真,结果为真)
||(or):逻辑或(一个为真结果为真)
not(!):逻辑非(取反,真即假)
模糊查询
like关键字:a like b,like结合%(表示0-任意个字符)_(表示一个字符)
in:表示在一个范围内 a in (a1,a2,a3)
连表查询
15:mysql中常用的聚合函数
16:mysql中的事务(要么都成功,要么都失败)
(1)事务的ACID,原子性,一致性,隔离性,持久性
原子性:事务的原子性必须是一个原子的操作序列单元,事务中包含各项操作在一次执行过程中,只允许出现全部成功执行或者全部不执行
一致性:事务的一致性是指事务的执行不能破坏数据库的完整性和一致性,一个事务在执行前和执行后,数据库都必须保证一致性
隔离性:事务的隔离性发生在并发环境中,并发的事务是相互隔离互不干扰的,一个事务的执行不能被其他事务干扰。
持久性:事务的持久性也被称为永久性,是指一个事务一旦提交,它对数据库中对应的数据的更新状态变更就是永久性的。一旦事务成功结束,那么它对数据库所做的更新都会被用久保存下来。