2、操作数据库

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

2.1、操作数据库(了解)

1、创建数据库

CREATE DATABASE IF NOT EXISTS 数据库名;
CREATE DATABASE 数据库名;


2、删除数据库

DROP DATABASE IF EXISTS 数据库名;
DROP DATABASE 数据库名;
#删除该数据库


3、使用数据库

USE 数据库名;
尽量使用英文符号表和字段的名称尽量用``括起来
注意: 如果你的表名或者字段名是一个特殊字符、就要带 ’ '再查询 如: USE ‘数据库名’ ;


4、查看数据库

SHOW DATABASES;
#查看所有数据库


2.2、数据库的列类型

![image.png](https://img-blog.csdnimg.cn/img_convert/f88af77108a0529cc5ef520824a76be8.png#clientId=ua85a533b-f44a-4&from=paste&height=174&id=njLXI&margin=[object Object]&name=image.png&originHeight=213&originWidth=517&originalType=binary&ratio=1&size=9246&status=done&style=none&taskId=u371b8358-4951-404f-b3df-fdd26cc146e&width=422.5)

数值

整数
①tinyint 十分小的数据 1个字节
②smallint 较小的数据 2个字节
③mediumint 中等大小的数据 3个字节
④int 标准的整数 4个字节
⑤bigint 较大的数据 8个字节

浮点数
①float 浮点数 4个字节
②double 浮点数 8个字节(精度更高)
③decimal 字符串形式的浮点数 一般用于金融计算

字符串

①char 字符串固定大小 0~255
②varchar 可变字符串 0~65535
③tintext 微型文本 2^8-1(255)
④text 文本串 2^16

时间日期

java.util.Date

①data YYYY-MM-DD 日期
②time HH: mm: ss 时间格式
③datatime YYYY-MM-DD HH: mm: ss 时间日期格式
④timestamp 时间戳 1970年.1.1到现在都毫秒数!
⑤year 年份表示

null

①没有值, 未知
②注意不要使用NULL进行运算, 因为结果肯定是NULL 无意义

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

Unsigned(无符号)

①无符号的整数
②声明了该列不能为负数

zerofill(填充零):

①0填充的
②不足的位数用0来填充, int (3) , 5 — 005

自增(自动递增):AUTO_INCREMENT

①通常了解为自增, 自动在上一条的记录的基础上+1(默认)
②通常用来设计唯一主键~ index、必须是整数类型
③可以自定义设计主键自增的起始值和步长(自动递增)

NULL 、NOT NULLl(非空、不是null)

①假设设置为 not null , 如果不给它赋值, 就会报错
②NULL , 如果不填写值默认就是null

默认:DEFAULT

①设置默认的值
②sex默认为男 , 如果不填写值默认就为男

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

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


2.4、创建数据库表


/*
目标: 再已经创建一个school数据库下
用SQL创建学生表(列字段) 
学号int(3)、登陆密码varchar(20)、姓名varchar(20)、性别varchar(2)、出生日期(datatime)、
家庭住址、email
 
注意点, 使用英文符号表和字段的名称尽量用``括起来
AUTO_INCREMENT 自增
字符串用单引号括起来
所有语句后面加, (最后一句不用)
PRIMARY KEY 主键, 一般一个表里面只有一个主键
 
*/

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` VARCHAR(30) 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] `表名`(
`字段名` 列类型 [属性] [索引] [注释],
`字段名` 列类型 [属性] [索引] [注释],
  ……
`字段名` 列类型 [属性] [索引] [注释]  
PRIMARY KEY(`id`)
)[表类型] [字符集设置] [注释]

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

2.5、数据表的类型

数据库引擎

INNODB 默认使用
MYISAM 早些年使用

MYISAMINNODB
事物支持不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间大小较小较大(大约是MYISAM的2倍)

物理空间存在的位置

所有数据库文件都存在data目录下, 一个文件夹就对应一个数据库
本质还是文件的存储

MySQL引擎在物理文件上的区别
①INNODB在数据库表中只有一个*.frm文件, 以及上级目录下的ibbata1文件
②MYISAM对应文件:
frm 表结构文件
.MYD 数据文件
*.MYI 索引文件
![image.png](https://img-blog.csdnimg.cn/img_convert/5e46f2dd3bcc680eec46b9a50e004fca.png#clientId=u5c48cd57-0919-4&from=paste&height=268&id=u7f0bf12c&margin=[object Object]&name=image.png&originHeight=247&originWidth=572&originalType=binary&ratio=1&size=71459&status=done&style=none&taskId=uf7187be2-ab1c-4f94-9cc0-ad455eacd31&width=620)

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

1、在创建表后设置
CHARSET=utf8
不设置的话, 会是mysql默认的字符集编码~(不支持中文)
MySQL的默认编码是Latin1, 不支持中文

2、在my.ini中配置默认的编码
character-set-server=utf8

2.6修改、删除表

--创建一个teacher表
CREATE TABLE IF NOT EXISTS`teach`(
`id` INT,
PRIMARY KEY(`id`)
)DEFAULT CHARSET=utf8;

--修改表名: ALTER TABLE 旧表名 RENAME AS 新表名;
ALTER TABLE teach RENAME AS teacher;

--增加表的字段: ALTER TABLE 表名 ADD 字段名 列属性;
ALTER TABLE teacher ADD ag INT(21);

--修改表的字段: (重命名、修改约束)  约束就是新列属性
--ALTER TABLE 表名 MODIFY 字段名 新列属性; 
ALTER TABLE teacher MODIFY ag VARCHAR(11); #修改约束(不能该字段名)
--ALTER TABLE 表名 CHANGE 原字段名 新字段名 新列属性;
ALTER TABLE teacher CHANGE ag age INT(3); #字段重命名 (重命名字段,也能该约束)

--删除表中字段  ALTER TABLE 表名 DROP 字段名;
ALTER TABLE teacher DROP age;

--删除表 
DROP TABLE IF EXISTS teacher;


注意: ①字段名用``包裹
②注释: – /**/
③sql对关键字大小写不敏感, 建议用小写
④所有符号用英文!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值