MySQL笔记2:数据库的列类型、字段属性、表的创建删除和修改

2. 操作数据库

sqlyog操作命令:选中命令行,点击执行图标

操作数据库 > 操作数据库中的表 > 操作表中的数据

mysql关键字不分大小写

2.1 操作数据库(了解)

  1. 创建数据库
CREATE DATABASE [IF NOT EXISTS] westos -- 中括号,可选
  1. 删除数据库
DROP DATABASE [IF EXISTS] westos 
  1. 使用数据库
USE `school` -- 如果表明或字段是特殊字符,需要带``
  1. 查看数据库
SHOW DATABASES -- 查看所有数据库

对比SQLyog的可视化操作

学习思路:

  • 对照SQLyog可视化历史记录查看sql语句
  • 固定的语法和关键词强行记忆

2.2 数据库的列类型

数值

  • 整数:
    • tinyint:十分小的数据,1字节
    • smallint:较小的数据,2字节
    • mediumint: 中等大小的数据,3字节
    • int:标准的整数,4字节,常用,设置的长度是最大有效显示宽度
    • bigint:较大的数据,8字节(long)
  • 浮点数:
    • float:单精度,4字节
    • double:浮点数,8字节(存在精度问题
    • decimal:字符串形式的浮点数,金融计算时使用,精确

字符串

  • char:字符串固定大小的字符串,0~255
  • varchar:可变性字符串,0~65535,常用(String)
  • tinytext:微型文本,2^8-1
  • text:文本串,2^16-1,保存大文本

时间日期

java.util.Date

  • data:YYYY-MM-DD, 日期格式
  • time:HH: mm: ss,时间格式
  • datetime:YYYY-MM-DD HH: mm: ss,最常用的时间格式
  • timestamp:时间戳,从1970.1.1到现在的毫秒数,也较为常用
  • year:年份表示

null

  • 没有值,未知
  • 注意不要使用null进行运算,结果为null

2.3 数据库的字段属性(重要)

Unsigned:

  • 无符号整数
  • 声明该列不能声明为负数

zerofill:

  • 0填充的
  • 不足的位数,使用0来填充,int(3): 5 -> 005

自增:

  • 通常理解为自增,自动在上一条记录的基础上+1(1是默认值)
  • 通常用来设计唯一的主键(index),必须是整数类型
  • 可以自定义设置自增的起始值和步长(高级中)

非空 NULL/not null:

  • 设为not null时,如果不复制会报错
  • 设为NULL时,如果不填写值,默认为null

默认:

  • 设置默认的值
  • 如果不指定该列的值,则会有默认的值

每张表需要拥有的属性

做项目用,表示一个项目存在的意义

id:主键
`version` :乐观锁
is_delete:伪删除
gmt_create:创建时间
gmt_update:修改时间

2.4 创建数据库表

-- 创建一个school数据库
-- 创建学生表(列,字段) 使用SQL创建
-- 学号int 登陆密码varchar(20) 姓名,性别varchar(2),出生日期datatime,家庭住址,email

-- 注意:使用英文(),表的名字 和 字段 尽量用``括号起来
-- AUTO_INCREMENT 自增
-- 字符串使用''单引号包裹
-- 所有语句后面加英文逗号 , 最后一个不用加
-- PRIMARY KEY 主键,一般一张表只有一个
CREATE TABLE IF NOT EXISTS `student2` (
    `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
    `name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',
    `pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',
    `sex` VARCHAR(3) NOT NULL DEFAULT '保密' COMMENT '性别',
    `birthday` DATETIME DEFAULT NULL COMMENT '生日',
    `address` VARCHAR(100) DEFAULT NULL COMMENT '地址',
    `email` VARCHAR(50) DEFAULT NULL COMMENT 'email',
    PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

创建格式:

CREATE TABLE [IF NOT EXISTS] `表名` (
    '字段名' 列类型 [属性] [索引] [注释],
    '字段名' 列类型 [属性] [索引] [注释],
    ......
    '字段名' 列类型 [属性] [索引] [注释]
)[表类型] [字符集设置] [注释]

常用命令:

SHOW CREATE DATABASE school -- 查看创建数据库的语句
SHOW CREATE TABLE student2 -- 查看创建表的语句
DESC student2 -- 显示表的结构

2.5 数据表的类型

数据库引擎:

  • InnoDB 默认使用
  • MYISAM 早些年使用
MyISAM InnoDB
事务支持(执行时同时成功或同时失败 不支持 支持
数据行锁定(锁定一行 不支持(表锁定 支持
外键约束(在数据库内关联另一张表 不支持 支持
全文索引 支持 不支持(MySQL 5.6.4后支持
表空间大小 较小 较大,约为MyISAM2倍

常规操作使用:

  • MyISAM:节约空间,速度较快
  • InnoDB:安全性高,事务支持,多表多用户操作(外键约束)

物理空间存储位置

所有的数据库文件都存在于data目录下(8.0默认在隐藏文件Programdata下),本质还是文件的存储

MySQL引擎在物理文件上的区别

  • InnoDB在数据库中有一个*.frm文件(8.0为idb文件),以及上级目录下的ibdata1文件
  • MyISAM:
    • *.frm:表结构的定义文件
    • *.MYD:数据文件(Data)
    • *.MYI:索引文件(Index)

设置数据库表的字符集编码

自己设置编码可以保证安全在不同的地方运行

CHARSET=utf8mb4

不设置会使用默认的字符编码,MySQL的默认编码是Latin1,不支持中文

可在my.ini文件中设置为utf-8

character-set-server=utf8

2.6 修改、删除表

所有的创建和删除操作尽量加上判断,避免报错

修改表

  • 修改表名
-- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE student RENAME AS student1
  • 增加表的字段
-- 增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性
ALTER TABLE student1 ADD sex VARCHAR(2)
  • 修改表的字段(重命名,修改约束)
-- 修改表的字段(重命名,修改约束)
ALTER TABLE student1 MODIFY sex INT(2) -- 修改约束
ALTER TABLE student1 CHANGE sex sex1 VARCHAR(2) -- 重命名字段,可以修改约束
  • 删除表的字段
-- 删除表的字段
ALTER TABLE student1 DROP sex1

删除表

-- 删除表(如果存在
DROP TABLE  IF EXISTS student1

注意

  • 所有字段名使用反引号``包裹
  • 注释 -- /**/
  • sql大小写不敏感,建议写成小写
  • 所有符号都使用英文的
posted @ 2022-05-08 17:45  chachan53  阅读(143)  评论(0编辑  收藏  举报