1、操作数据库语句
操作数据库> 操作数据库中的表 >操作数据库中表的数据
MySQL数据库关键字不区分大小写
1、创建数据库
create DATABASE [IF NOT EXISTS] library;
[] 中括号代表可选
{} 大括号代表必选
2、删除数据库
DROP DATABASE [IF EXISTS] library 移除数据库
3、使用数据库
USE school
4、查看数据库
SHOW DATABASES
学习思路:
1、对照sqlyog可视化
2、固定的语法或关键字必须要强行记住!
2、数据库的列类型讲解
数值(从小到大)
整数
tinyint 十分小的数据 1字节
smallint 较小数据 2字节
mediumint 中等大小的数据 3字节
int 标准的整数 4字节 常用的
bigint 较大的数据 8个字节 对应Java中的Long
浮点数(小数)
float 浮点数 4个字节
double 浮点数 8个字节(精度问题)
decimal 字符串形式的浮点数 金融计算的时候,无损进行小数计算
字符串
char 字符串固定大小 0-255
varchar 可变字符串 0-65535 常用的变量 对应Java中String
tinytest 微型文本 2^8-1
test 文本串 2^16-1 保存大文本
时间日期
java.util.Date
date YYY-MM-DD 日期格式
time HH:MM:SS 时间格式
datetime YYY-MM-DD HH:MM:SS 最常用的时间格式
timestamp 时间戳 1970.1.1到现在的毫秒数 较常用
year 年份表示
null
- 空值
- 注意不要使用null进行计算,结果为都为null
3、数据库的字段属性(重点!)
Unsigned
- 无符号的整数
- 不能声明为负数
zerofill
- 0填充
- 不足位数,使用0填充 比如int(3) 显示005(3代表3个长度)
自增
- 通常理解为自增,自动在上一条记录的基础上+1(默认)
- 通常用来设计唯一的主键 ,可以理解为index(不能重复),必须是整数类型
- 可以自定义设计逐渐自增的起始值和步长。
非空(NULL 或 NOT NULL)
- 假设设置为not null,如果不给它赋值就会报错
- 如果不填值,默认就是Null
默认
- 设置默认的值
- 比如sex,默认值为男,如果不指定该列的值,则为默认的值
拓展:听听就好
/* 每一个表,都必须存在以下五个字段!未来做项目用的,表示一个记录存在的意义
id 主键
`version` 乐观锁
is delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
*/
4、创建数据库表(重点!)
4.1、目标:创建一个数据库
创建学生表(列,字段) 使用SQL创建
学号id(int),登陆密码password、姓名name、性别sex、家庭住址、email(varchar),出生日期(datetime),
-- 注意点:使用英文括号(),表的名称和字段尽量使用``括起来
-- AUTO_INCREMENT 自增
-- 字符串使用 单引号括起来
-- 所有语句加英文,最后一个不用加
-- PRIMARY KEY 主键,一般一个表只有一个唯一的主键,一般是id
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT'无' COMMENT'姓名',
`password` VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码',
`sex` VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性别',
`birthday` DATE DEFAULT NULL COMMENT'出生日期',
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',
`emaill` VARCHAR(50) DEFAULT null COMMENT'邮箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
- 格式
CREATE TABLE [IF NOT EXISTS] `表名`(
`字段名` 列类型 [属性] [索引:比如Index] [注释],
`字段名` 列类型 [属性] [索引:比如Index] [注释],
......
`字段名` 列类型 [属性] [索引:比如Index] [注释],
)ENGINE=INNODB DEFAULT CHARSET=utf8
[表类型][字符集设置][注释]
CREATE TABLE `student` (
`id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` varchar(30) NOT NULL DEFAULT '无' COMMENT '姓名',
`password` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
`sex` varchar(2) NOT NULL DEFAULT '男' COMMENT '性别',
`birthday` date DEFAULT NULL COMMENT '出生日期',
`address` varchar(100) DEFAULT NULL COMMENT '家庭住址',
`emaill` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
- 常用命令
SHOW CREATE DATABASE school -- 查看创建数据库的语句
SHOW CREATE TABLE student -- 查看student数据库表的定义语句
DESC student -- 显示表的结构
- 什么是主键(primary key)?
4.2、数据库表的类型
1、关于数据库引擎
INNODB 默认使用
MYSISAM 早些年使用
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 表锁 | 支持 行锁 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小(内存) | 较小 | 较大,约为MYISAM 2倍 |
- 常规使用操作:
1、MYISAM 节约空间,速度较快
2、INNODB 安全性高,支持事务处理,多表多用户操作
在物理空间存在的位置:
- 所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库
- 数据库本质还是文件的存储
MySQL引擎在物理文件上的区别
- INNODB 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
- MyISAM 对应文件
1、*.frm 表结构定义文件
2、*.MYD 数据文件(data)
3、*.MYI 索引文件(index)
- 设置数据库表的字符集编码
CHARSET =utf8
不设置的话,会是MySQL默认的字符集编码(不支持中文!)
MySQL的默认编码是Latin1,不支持中文。
- 设置中文的2种方式
1、创建数据库时加上CHARSET =utf8
2、在my.ini中配置默认的编码
character-set-server=utf8
4.3、修改删除表
修改
-- 修改表名: 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(11)
-- 删除表的字段:ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1
-
modify和change区别
同:均可用于alter语句中,修改字段属性;
异:change可用于字段重命名,句式与modify也不用(多输一个字段名):
alter table 表名 change 旧字段名 新字段名 字段属性;
alter table 表名 modify 字段名 字段属性;
删除
-- 删除表(如果存在再删除)
DROP TABLE IF EXISTS teacher1
所有的创建和删除操作尽量加上判断,以免报错
4.4、注意点
1、所有的字段名用``括起来
2、注释 – 、/**/
3、sql关键字大小写不敏感
4、所有符号用英文