命令行连接
mysql -u root -p123456 --连接数据库 show databases; --查看所有数据库 use school --切换到某个数据库 show tables; --查看数据库中所有的表 describe student; --查看某个表中的所有数据 create database westos; --创建一个数据库wetos exit; -- 退出连接 -- SQL的单行注释 SQL的多行注释数据库语言
DDL定义
DML操作
DQL查询
DCL控制
操作数据库→操作数据库中的表→操作数据库中的表的数据
mysql关键字不区分大小写
1.创建数据库
CRTEATE DATAbase [IF NOT EXISTS] westos;
2.删除数据库
DROP DATAbase [IF EXISTS] westos
3.使用(切换)数据库
USE `school`
4.查看数据库
SHOW DATAbaseS --查看所有数据库
遇到不会的命令可以通过SQLyog可视化操作学习
2.2、数据库的数据类型数值
tinyint 十分小的数据 1个字节
smallint 较小的数据 2个字节
mediumint 中等大小的数据 3个字节
int 标准大小的整数 4个字节
bigint 较大的数据 8个字节
float 浮点数 4个字节
double 浮点数 8个字节
decimal 字符串形式的浮点数 金融计算的时候一般是使用decimal
字符串
char 字符串固定大小的 0~255
varchar 可变字符串 0~65535 常用的变量对应java里的 String
tintxet 微型文本 2^8-1
text 文本串 2^16-1 保存大文本
时间日期
java.until.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
假设设置为not null,如果不给它赋值就会报错。
NULL,如果不填写值,默认就是null
默认:
设置默认的值
sex,默认值为男,如果不指定该列的值,则会有默认的值
拓展:
每一个表都必须存在以下五个字段!未来做项目用的,表示一个记录存在意义! id 主键 `version` 乐观锁 is_delete 伪删除 gmt_create 创建时间 gmt_update 修改时间2.4、创建数据库表(重点)
用SQL语句创建学生表
1.选中school数据库
2.输入命令行
-- 目标:使用SQL创建学生表(列,字段) -- 学号int ,登录密码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` DATETIME DEFAULT NULL COMMENT '出生日期', `address` VARCHAr(100) DEFAULT NULL COMMENT '家庭住址', `email` VARCHAr(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY(`id`)
格式
CREATE TABLE [IF NOT EXISTS] `表名`( `字段名` 列类型 [属性] [索引] [注释], `字段名` 列类型 [属性] [索引] [注释], `字段名` 列类型 [属性] [索引] [注释], ,,,,,, `字段名` 列类型 [属性] [索引] [注释] )[表类型][字符集设置][注释]
SQLyog可视化转化成SQL语句的命令
SHOW CREAT DATAbase school --查看创建数据库的语句 SHOW CREAT TABLE student --查看student数据表的定义语句 DESC student --显示表的结构2.5、数据表的类型
关于数据库的引擎:
INNODB 在如今默认使用的
MYISAM 早些年使用的
| MYISAM | INNODM | |
|---|---|---|
| 事务支持 | 不支持 | 支持 |
| 数据行锁定 | 不支持 | 支持 |
| 外键约束 | 不支持 | 支持 |
| 全文索引 | 支持 | 不支持 |
| 表空间的大小 | 较小 | 较大,约为2倍 |
常规使用操作:
MYISAM 节约空间,书读较快
INNODB 安全性高,支持事务的处理,多表多用户操作
数据库文件在物理空间存在的位置
所有的数据库文件都存在data目录下,一个文件夹对应一个数据库
本质还是文件的存储!
InnoDB 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件 MYISAM 对应文件 *.frm 表结构的定义文件 *.MYD 数据文件(data) *.MYI 索引文件(index)
设置字符集编码
1.CHARSET=utf8 不设置的话,会是mysql默认字符集编码(不支持中文) MySQL默认编码是Latin1,不支持中文 2.在my.ini中配置默认的编码 character-set-server=utf8(不建议,将代码移植到没有配置过的电脑无法正常编码)



