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,原子性,一致性,隔离性,持久性

  原子性:事务的原子性必须是一个原子的操作序列单元,事务中包含各项操作在一次执行过程中,只允许出现全部成功执行或者全部不执行

  一致性:事务的一致性是指事务的执行不能破坏数据库的完整性和一致性,一个事务在执行前和执行后,数据库都必须保证一致性

  隔离性:事务的隔离性发生在并发环境中,并发的事务是相互隔离互不干扰的,一个事务的执行不能被其他事务干扰。

  持久性:事务的持久性也被称为永久性,是指一个事务一旦提交,它对数据库中对应的数据的更新状态变更就是永久性的。一旦事务成功结束,那么它对数据库所做的更新都会被用久保存下来。

 

posted @ 2022-10-16 14:49  程序员XiaoXie  阅读(41)  评论(0编辑  收藏  举报