操作数据库
操作库-操作表-操作表里的字段
mysql 的关键字不分大小写
2.1 操作数据库
-
创建数据库
CREATE DATABASE IF NOT EXISTS class
-
删除数据库
DROP DATABASE IF EXISTS class
-
使用数据库
USE school -- tab键的上面,如果你的表名或者字段名是一个特殊字符,就需要`` SELECT `user` FROM student
-
查看数据库
SHOW DATABASES --查看所有的数据库
2.2 列的数据类型讲解
数值
- tinyint 十分小的数据 一个字节
- smallint 较小的数据 两个字节
- mediumint 中等大小的数据 三个字节
- int 标准的整数 四个字节
- bigint 较大的数据 八个字节
- float 单精度浮点数 四个字节
- double 双精度浮点数 8个字节
- decimal 字符串形式的浮点数 金融电商计算的时候,一般是使用的decimal
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x5xpd85D-1628348731192)(C:\Users\Administrator\Desktop\微信图片_20210802151256.png)]
字符串
- char 字符串固定大小的 0~255
- varchar 可变字符串 0~65535 常用的 String
- tinytext 微型文本 2^8 -1
- text 文本串 2^16-1 保存大文本
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eQowI9eo-1628348731194)(C:\Users\Administrator\Desktop\微信图片_20210802151250.png)]
时间跟日期
java.util.Date
- date YYYY-MM-DD 日期格式
- time HH: mm : ss 时间格式
- datetime YYYY-MM-DD HH: mm :ss 最常用的时间格式
- timestamp 时间戳, 1970.1.1 到现在的毫秒数!也较为常用
- year 年份表示
null
- 没有值,未知
- == 注意,不要使用null进行运算,结果为null
字段属性(重点)
Unsigned:
- 无符号的整数——声明该列不能创建为负数
zerofill:
- 0填充的——不足的位数,使用0来填充,如int(3),5则为005
自增:
- 通常理解为自动在上一条的记录的基础上+1(默认)
- 通常用来设计唯一的主键~index,必须是整数类型
NULL 和 NOT NULL
- 默认为NULL , 即没有插入该列的数值
- 如果设置为NOT NULL , 则该列必须有值
DEFAULT
- 默认的
- 用于设置默认值
- 例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值
项目规范(每一个表,都必须存在一下五个字段)
未来做项目用的,表示一个记录存在的意义
id 主键
‘version’ 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
数据库表
/* 目标:
创建学生表(列,字段)使用SQL创建
学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datetime),家庭住址,emial
*/
-- 注意,使用英文(),表的名称和字段 尽量使用``括起来
-- AUTO_INCREMENT 自增
-- 字符串使用 单引号括起来!
-- 所有的语句后面加,最后一个字段不用加
-- PRIMARY KEY 主键 一般一个表只有唯一一个主键
CREATE TABLE IF NOT EXISTS `teacher`(
`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
格式
CCREATE TABLE [IF NO EXISTS] `students`(
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释],
......
'字段名' 列类型 [属性] [索引] [注释]
)[表的类型][字符集设置][注释]
mylsam 和 innodb
-- 查看数据库的定义
SHOW CREATE DATABASE school;
-- 查看数据表的定义
SHOW CREATE TABLE student;
-- 显示表结构
DESC student; -- 设置严格检查模式(不能容错了)SET sql_mode='STRICT_TRANS_TABLES'
关于数据库引擎
数据表的类型
CREATE TABLE 表名(
-- 省略一些代码
-- Mysql注释
-- 1. # 单行注释
-- 2. /*...*/ 多行注释
)ENGINE = MyISAM (or InnoDB)
-- 查看mysql所支持的引擎类型 (表类型)
SHOW ENGINE
MySQL的数据表的类型 : MyISAM(表锁), InnoDB(行锁) , HEAP , BOB , CSV等…
常见的 MyISAM 与 InnoDB 类型:
经验 ( 适用场合 ) :
- 适用 MyISAM : 节约空间及相应速度
- 适用 InnoDB : 安全性 , 事务处理及多用户操作数据表
数据表的存储位置
-
MySQL数据表以文件方式存放在磁盘中
-
- 包括表文件 , 数据文件 , 以及数据库的选项文件
- 位置 : Mysql安装目录\data\下存放数据表 . 目录名对应数据库名 , 该目录下文件名对应数据表 .
-
注意 :
-
- * . frm – 表结构定义文件
- * . MYD – 数据文件 ( data )
- * . MYI – 索引文件 ( index )
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KlwvVFYY-1628348731196)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210802214806862.png)]
设置数据库的字符集编码
CHARSET=utf8
我们可为数据库,数据表,数据列设定不同的字符集,设定方法 :
- 创建时通过命令来设置 , 如 : CREATE TABLE 表名()CHARSET = utf8;
- 如无设定 , 则根据MySQL数据库配置文件 my.ini 中的参数设定
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZLQ5ILW-1628348731197)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210802215018414.png)]
2.6 修改表
修改
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9svvpeRW-1628348731199)(E:\学习\开发学习\mysql\mysql02.assets\image-20210804153532944.png)]
-- 修改表 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1
-- 增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性
ALTER TABLE teacher1 ADD age INT(11)
-- 修改表的字段(重命名,修改约束!)
-- ALTER TABLE 表名 MODIFY 字段名 列属性
ALTER TABLE teacher1 MODIFY age VARCHAR(11) -- 修改约束
-- ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性
ALTER TABLE teacher1 CHANGE age age1 INT(3) -- 字段重命名
-- 删除表的字段
-- ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1
删除
-- 删除表(如果表存在再删除)
DROP TABLE IF EXISTS teacher1
所有的创建和删除操作尽量加上判断,以免报错
注意点:
- `` 点操作符 字段名使这个包裹!
- 注释 – /**/
- sql 关键字大小写不敏感,建议写小写
INT(3) – 字段重命名
– 删除表的字段
– ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1
> 删除
```sql
-- 删除表(如果表存在再删除)
DROP TABLE IF EXISTS teacher1
所有的创建和删除操作尽量加上判断,以免报错
注意点:
- `` 点操作符 字段名使这个包裹!
- 注释 – /**/
- sql 关键字大小写不敏感,建议写小写
- 所有符号全部用英文