操作数据库

操作数据库

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

MySQL关键字不区分大小写

操作数据库

  1. 创建数据库

    CREATE DATABASE [IF NOT EXISTS] westos # 中括号的意思是可选,整句话意为如果这个数据库不存在,就创建这个数据库
    
  2. 删除数据库

    DROP DATABASE [IF EXISTS] westos
    
  3. 使用数据库

    -- tab键上面的符号 ` ,如果表名或者字段名是一个特殊字符,就需要加上这个符号
    USE `school`
    
  4. 查看所有的数据库

    SHOW DATABASES -- 查看所有的的数据库
    
  • 不会的时候可以对比一下可视化操作和SQL语句(SQLyog历史记录)
  • 固定的语法和关键字需要记住

数据库的数据列类型

  1. 数值

    • tinyint 十分小的数据 1个字节
    • smallint 较小的数据 2个字节
    • mediumint 中等大小的数据 3个字节
    • int 标准的整数 4个字节 对应Java中的int(常用)
    • bigint 较大的数据 8个字节
    • float 浮点数 4个字节
    • double 浮点数 8个字节
    • decimal 字符串形式的浮点数 金融计算的时候一般使用decimal
  2. 字符串

    • char 保存固定长度的字符串(可包含字母、数字以及特殊字符) 0~255字符
    • varchar 可变字符串 最多255个字符,如果值的长度大于255,则被转换为TEXT类型,对应Java中的String,是最常用的变量
    • tinytext 微型文本 存放最大长度为 255个字符的字符串
    • text 文本串 存放最大长度为65,535个字符的字符串
  3. 日期

    java.util.Date

    • date:yyyy-MM-dd 日期格式(大写MM是为了区分“分钟”和“月份”)
    • time:HH:mm:ss 时间格式(大写HH是为了区分“12小时制”还是“24小时制”,大写为24小时制,小写为12小时制)
    • datetime YYYY-MM-DD HH:mm:ss 最常用的时间格式
    • timestamp 时间戳 全球唯一 指1970.1.1到现在的毫秒数
    • year 年份表示
  4. null

    • 没有值,未知
    • 不要使用null计算,不然结果一定为null

数据库的字段属性(重点)

  1. UNsigned:
    • 无符号的整数
    • 声明了该列不能为负数
  2. zerofill:
    • 用0填充不足的位数
    • 比如int长度为3,这时输入5会变为005
  3. 自增(autoincrement):
    • 自动在上一条的记录的基础上+1(默认)
    • 通常用来设计唯一的主键 index 必须是整数类型
    • 可以自定义设计主键自增的起始值和步长
  4. 非空:
    • null和not null
    • 假设设置为not null,如果不给它赋值,就会报错!
    • 不勾选此选项,如果不填写值,默认值为null
  5. 默认(default):
    • 设置默认的值
    • 如sex,默认值设置为男,如果不指定该列的值,默认值就是 男

拓展:常用的字段(每一个表都必须存在以下五个字段,未来做项目用的,表示一个记录存在的意义):

  • id 主键 自增
  • version 版本 乐观锁
  • is_delete 伪删除
  • gmt_create 创建时间
  • gmt_update 修改时间

创建数据库表(SQL语句)

-- 注意点:使用英文括号,表的名称和字段尽量用``括起来
-- AUTO_INCREMENT 自增
-- 字符串使用英文单引号括起来
-- 所有的语句后面加英文逗号,最后一个字段不加
-- PRIMARY KEY 主键,一般单独一行方便查看,而且一个表只有一个唯一的主键
CREATE TABLE IF NOT EXISTS `studnet` (
`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(2) NOT NULL DEFAULT '女' COMMENT '性别',
`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',
`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
)ENGINE = INNODB DEFAULT CHARSET = utf8

格式总结:

CREATE TABLE [IF NOT EXISTS] `表名`(
	`字段名` 列类型 [属性] [索引] [注释],
    `字段名` 列类型 [属性] [索引] [注释]......
    `字段名` 列类型 [属性] [索引] [注释]
)[ENGINE=引擎 DEFAULT CHARSET=字符集]

常用命令(究极偷懒):

SHOW CREATE DATABASE student -- 查看创建数据库的语句
SHOW CREATE TABLE student -- 查看创建表的语句
DESC student -- 查看表的具体结构

数据表的类型

目前只需要记住其中两个:

  1. InnoDB
    • 默认使用
  2. MyISAM
    • 早些年使用
MyISAMInnoDB
事务支持不支持支持
数据行锁定不支持(是整个表锁定)支持(只会把行锁定)
外键约束不支持支持
全文索引支持不支持(5.6.4版本提供了英文支持)
表空间的大小较小较大(约为MyISAM的两倍)

注意:InnoDB 在 MySQL 5.6 版本开始支持全文索引。原因是InnoDB 从1.2.x 开始才增加了全文索引支持。而MySQL5.6版本中InnoDB 的版本才升级到 1.2.x。所以,MySQL 5.5版本的InnoDB 不支持全文索引。

常规使用操作:

  1. MyISAM 节约空间,速度较快
  2. InnoDB 安全性高,事务的处理,支持外键,多表多用户操作

数据库在物理空间存在的位置:

  • 所有的数据库文件都存在data目录下
  • 本质还是文件的存储

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

  • InnoDB 在数据库表中只有一个.frm文件,以及上级目录下的ibdata文件夹(MySQL在8.0取消了.frm文件,元数据都存储在表空间)
  • MyISAM对应文件
    • .frm文件:表结构的定义文件
    • .MYD文件:数据文件(表具体的data)
    • .MYI文件:索引文件(index)

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

CHARSET=utf8

不设置的话,回事MySQL默认的字符集编码~(不支持中文),MySQL默认的编码是Latin1。这个编码是可以修改的。

  1. 在创建数据库的时候就声明编码

  2. 在my.ini中配置默认的编码(通用性很低,不推荐,换个没有配置过的电脑就没用了)

    charset-set-server=utf8
    

修改和删除数据表字段

  1. 修改表

    -- 修改表 
    -- ALTER TABLE 旧表名 RENAME AS 新表名
    ALTER TABLE student RENAME AS student1
    -- 增加表的字段 
    -- ALTER TABLE 表名 ADD 字段名 列属性
    ALTER TABLE student1 ADD age INT(11)
    -- 修改表的字段(重命名,修改约束)
    -- MODIFY 能修改字段类型和约束,不能用来重命名 
    -- ALTER TABLE 表名 MODIFY 字段名 列属性(约束)
    ALTER TABLE student1 MODIFY age VARCHAR(11)
    -- CHANGE 可以用来重命名字段,也可以用来修改约束,但是要加上新字段名,故一般不用CHANGE修改约束
    -- ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性
    CHANGE TABLE studnet1 CHANGE age age1 INT(1)
    -- 删除表的字段 
    -- ALTER TABLE 表名 DROP 字段名
    ALTER TABLE student1 DROP age1
    
  2. 删除表

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

所有的创建和删除操作,尽量加上判断,防止报错。

注意点:

  • 字段名,使用反引号``包裹
  • 注释用 – 或者 /* */ 少用 #
  • SQL关键字大小写不敏感,看个人喜好
  • 符号用英文
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Luck1y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值