数据库操作

数据库操作

1、结构化查询语句分类

名称解释命令
DDL(数据定义语言) 定义和管理数据对象,如数据库、数据表等 CREATE、DROP、ALTER
DML(数据操作语言) 用于操作数据库对象中所包含的数据 INSERT、UPDATE、DELETE
DQL(数据查询语言) 用于查询数据库数据 SELECT
DCL(数据控制语言) 用于管理数据库的语言,包括管理权限及数据更改 GRANT、commit、rollback

?>具体的数据库sql教程:(菜鸟教程)https://www.runoob.com/mysql/mysql-tutorial.html


2、数据库列类型

?> 数值类型

类型说明范围(有符号)范围(无符号)存储需求
tinyint 非常小的数据 (-128,127) (0,255) 1字节
smallint 较小的数据 (-32 768,32 767) (0,65 535) 2字节
mediumint 中等大小的数据 (-8 388 608,8 388 607) (0,16 777 215) 3字节
int 标准整数 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 4字节
bigint 较大的整数 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 8字节
float 单精度浮点数 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 4字节
double 双精度浮点数 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 8字节
decimal 字符串形式的浮点数 依赖于M和D的值 依赖于M和D的值 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

?>字符串类型

类型大小用途
CHAR 0-255 bytes 定长字符串
VARCHAR 0-65535 bytes 变长字符串
TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65 535 bytes 二进制形式的长文本数据
TEXT 0-65 535 bytes 长文本数据
MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295 bytes 极大文本数据

?>日期和时间型数值类型

类型大小 ( bytes)范围格式用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2038结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

?> NULL值

  • 理解为 "没有值" 或 "未知值"

  • 不要用NULL进行算术运算 , 结果仍为NULL

!>注意: char(n) 和 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数,比如 CHAR(30) 就可以存储 30 个字符。

CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。

BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。

有 4 种 TEXT 类型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。对应的这 4 种 BLOB 类型,可存储的最大长度不同,可根据实际情况选择。


3、数据字段属性

UnSigned

  • 无符号的

  • 声明该数据列不允许负数 .

ZEROFILL

  • 0填充的

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

Auto_InCrement

  • 自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)

  • 通常用于设置主键 , 且为整数类型

  • 可定义起始值和步长

    • 当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表

    • SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局)

NULL 和 NOT NULL

  • 默认为NULL , 即没有插入该列的数值

  • 如果设置为NOT NULL , 则该列必须有值

DEFAULT

  • 默认的

  • 用于设置默认值

  • 例如,性别字段,默认为"男" , 否则为 "女" ; 若无指定该列的值 , 则默认值为"男"的值

以Navicat for MySQL为例:

 

 DROP TABLE IF EXISTS `sys_job`;
 CREATE TABLE `sys_job` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '岗位ID',
   `name` varchar(255) NOT NULL COMMENT '岗位名称',
   `enabled` bit(1) NOT NULL COMMENT '岗位状态',
   `job_sort` int(5) DEFAULT NULL COMMENT '排序',
   `is_deleted` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '逻辑删除 1(true)已删除, 0(false)未删除',
   `create_time` datetime NOT NULL COMMENT '创建日期',
   `create_by` varchar(20) NOT NULL COMMENT '创建人',
   `update_time` datetime NOT NULL COMMENT '更新时间',
   `update_by` varchar(20) NOT NULL COMMENT '更新人',
   `version` bigint(32) NOT NULL COMMENT '版本',
   PRIMARY KEY (`id`) USING BTREE,
   UNIQUE KEY `uniq_name` (`name`),
   KEY `inx_enabled` (`enabled`)
 ) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='岗位';

 


4、数据表的类型

?>设置数据表的类型

 CREATE TABLE 表名(
    -- 省略一些代码
    -- Mysql注释
    -- 1. # 单行注释
    -- 2. /*...*/ 多行注释
 )ENGINE = MyISAM (or InnoDB)
 ​
 -- 查看mysql所支持的引擎类型 (表类型)
 SHOW ENGINES;

MySQL的数据表的类型 : MyISAM , InnoDB , HEAP , BOB , CSV等...

常见的 MyISAM 与 InnoDB 类型:

名称MyISAMInnoDB
事务处理 不支持 支持
数据行锁定 不支持 不支持不支持支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约2倍!

经验 ( 适用场合 ) :

  • 适用 MyISAM : 节约空间及相应速度

  • 适用 InnoDB : 安全性 , 事务处理及多用户操作数据表

 

?>数据表的存储位置

  • MySQL数据表以文件方式存放在磁盘中

    • 包括表文件 , 数据文件 , 以及数据库的选项文件

    • 位置 : Mysql安装目录\data\下存放数据表 . 目录名对应数据库名 , 该目录下文件名对应数据表 .

  • 注意 :

    • * . frm -- 表结构定义文件

    • * . MYD -- 数据文件 ( data )

    • * . MYI -- 索引文件 ( index )

    • InnoDB类型数据表只有一个 *.frm文件 , 以及上一级目录的ibdata1文件

    • MyISAM类型数据表对应三个文件 

?>设置数据表字符集

我们可为数据库,数据表,数据列设定不同的字符集,设定方法 :

  • 创建时通过命令来设置 , 如 : CREATE TABLE 表名()CHARSET = utf8;

  • 如无设定 , 则根据MySQL数据库配置文件 my.ini 中的参数设定

 

posted @ 2021-10-14 14:41  梅子猪  阅读(138)  评论(0编辑  收藏  举报