二、数据库

2-1、操作数据库(了解)

1、创建数据库

CREATE DATABASE [IF NOT EXIST] myDatabase;

2、删除数据库

DROP DATABASE `myDatabase`; -- 加反引号,表示字符串,防止和 mysql 关键字冲突

3、使用数据库

USE myDatabase;

4、查看数据库

SHOW myDatabase;

2-2、数据库的列类

数值

  • tinyint 十分小的数据 1个字节

  • smallint 较小的数据 2个字节

  • mediumint 中等大小的数据 3个字节

  • int 标准的整数 4个字节 (常用的java中的int)

  • bigint 较大的数据 8个字节

  • 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 填充。例如: int(3) , 5 — 005

自增:

  • 自动在上一条记录的基础上加1(默认)
  • 通常用于设计唯一的主键 id,必须是整数类型
  • 可以自定义主键自增的起始值和步长

非空:

  • 设置了非空 not null,则意味着不给赋值,会报错
  • null,不写默认是null

默认:

  • 设置默认的值
  • 例如性别:不指定的话,给个默认的性别

2-4、数据库表的创建(DDL)

-- 注意事项:表的名称 和 字段,尽量用反引号 `` 包起来,防止和mysql 关键字冲突,也方便自己阅读
-- auto_increment 自增 , not null 不为空,default 默认值 , comment 注释
-- 字符串使用 单引号 \'\' ,和java不同 
-- primary key (\'id\') 写在最后,可读性高
CREATE TABLE IF NOT EXISTS `student`(
	`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 -- 使用 innodb引擎,utf-8字符集

格式

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

常用命令

SHOW CREATE	DATABASE `数据库名` -- 显示创建语句

SHOW CREATE	TABLE `表名` -- 显示创建语句

DESC `表` -- 查看表的具体结构

2-5、数据库表的类型

-- 关于数据库引擎
	-- MYISAM 早期
	-- INNODB 现在默认使用
MYIAM INNODB
事务 支持(以前不支持) 支持
数据行的锁定 不支持(表级锁) 支持(行级锁)
外键 不支持 支持
全文索引 支持 支持(从MySQL5.6版本开始支持)
表空间大小 较小 较大,约为MYISAM的两倍

常规使用操作:

  • ​ MYISAM : (1)做很多count的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。
  • ​ INNODB : (1)可靠性要求比较高,或者要求事物;(2)表更新和查询都相当频繁,并且行锁定的机会比较大的情况。

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

  • 建表的时候,CHARSET=UTF8(推荐,通用性高)
  • 在 my.ini 中设置默认的字符集编码

2-6、数据库表的修改

-- 修改表名    ALTER TABLE `旧表名` RENAME AS `新表名`
ALTER TABLE `STUDENT` RENAME AS `STUDENT1`

-- 表中添加字段   ALTER TABLE `表名` ADD 字段名 列属性(约束)
ALTER TABLE `STUDENT` ADD age INT(10)

-- 修改表 约束  ALTER TABLE `表名` MODIFY 字段名 列属性(约束)
ALTER TABLE `STUDENT` MODIFY age VARCHAR(10)

-- 修改表 字段名,约束  ALTER TABLE `表名` CHANGE 旧字段名 新字段名 [列属性(约束)]
ALTER TABLE `STUDENT` CHANGE age age1 INT(10)

-- 删除表 字段名 :  ALTER TABLE `表名`  DROP 字段名
ALTER TABLE `STUDENT`  DROP age1

CHANGE 既可以改字段名又可以改约束,MODIFY 只能改约束!

2-7、数据库表的修改

删除

DROP TABLE IF EXIST `表名`

注意点:

  • 字段名,表名,最好用 “ 包裹
  • 删除,创建操作,尽量加上 IF EXIST ,防止报错,类似于Java的 if ( xxx != null )
  • sql 关键字不区分大小写,但是我们用小写,还是一眼能认识
  • 所有符号用英文,同Java

版权声明:本文为xitingfeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xitingfeng/p/12797105.html