操作数据库>操作数据库中的表>操作数据库中表的数据
mysql关键字不区分大小写
2.1操作数据库 []里可以不要
1.创建数据库
CREATE DATABASES [IF NOT EXISTS] ` 数据库名`
if note exists即如果不存在 (可以不要)
2.删除数据库
DROP DATABASE [IF EXISTS] westos;
3.使用数据库
--键盘tab上面,如果你的表名或者字段名是一个特殊字符就需要带着个``
USE `数据库名`;
比如就是创建一个user但是你在使用时输入user英文变大,此时用``和命令USER区分开
4.查看数据库
SHOW DATABASES; --查看所有的数据库
2.2数据库的列类型
tinyint :十分小的数据 1字节
smallint 2字节
mediumint 3字节
int 标准的字节 4字节 常用!
big 8个字节
float 4个字节
double 8个字节 (存在精度问题)
decimal 字符串形式的浮点数 ,金融技术的时候使用。
字符串
char 字符串 固定大小 0-255
varchar 可变字符串 0-65535 常用!
tinytext 微型文本 2的八次方-1
text 文本串 2的16次方-1 保存大文本
时间和日期
date 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填充的,不足的位数使用0来填充 int(3) ,5--005
自增:
通常理解为自增,自动在上一条记录的基础上+1默认
通常用来设计唯一的主键~,必须是整数
可以自定义设计主键自增的起始值和步长
非空:
Null not null
假设设置为not null,如果不给他赋值就会报错
Null如果不填写值,默认就是Null
默认
设置默认的值
sex,默认值为男,不然不指定该列的值,则会有默认的值。
扩展
每一个表都必须存在以下五个字段!未来做项目用的,表示一个记录存在的意义。
id 主键 version
乐观锁 is_delete 伪删除 gmt_create创建时间 gmt_update修改时间
2.4创建数据库用MySQL
注意点,使用英文(),表的名称和字段尽量使用`(飘)给括起来。
字符串使用单引号或者双引号括起来
所有的语句后面加逗号,最后一个不用加
AUTO_INCREMENT:自增
NOT NULL :不能为空
DEFAULT :默认值
PRIMARY KEY ()主键,一个表一般只有一个唯一的主键!
COMMENT 注释
创建一个表:
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 '1234' 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
格式:
CREATE TABLE [IF NOT EXISTS ] `表名`(
`字段名` 列类型[属性][索引][注释],
`字段名` 列类型[属性][索引][注释],
......
`字段名` 列类型[属性][索引][注释] -- 最后一个不加,
)[表类型][字符集设置][注释]
SHOW CREATE DATABASE 数据库名-- 查看创建数据库的语句
SHOW CREATE TABLE 表名 -- 查看student数据表的语句
DESC 表名-- 显示表的结构
2.5数据表的类型
默认使用的引擎(ENGINE):INNODB 和MYISAM区别
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为MYISAM的两倍 |
常规的使用操作:
MYISAM 节约空间,速度较快
INNODB 安全性高 事务的处理,夺标用户多操作
在物理空间存在的位置
所有数据库文件都存在data目录下,一个文件夹就对应一个数据库
本质还是文件的存储!
MySQL引擎在物理文件上的区别
-
innoDB在数据库表中只有一个*.form文件以及上级目录下的didata1文件
-
MYISAM对应的文件
*.form -表结构的基本文件
*.MYD 数据文件(data)
*.MYI 索引文件(index)
设置数据库表的字符集编码
CHARSET=utf8
不设置的话,会是mysql默认的字符集编码~(不支持中文)
mysql的默认编码是Latin1,不支持中文
还可以就是在my.ini中配置默认的编码,这样以后就不用写了。建议不配置,若给别人发送数据库,不能保证别人都配置。
character-set-server=utf8
2.6修改和删除表
修改
修改表名
ALTER TABLE 旧表名 RENAME AS 新表名
例如:ALTER TABLE teacher RENAME AS teacher1
增加表的字段
ALTER TABLE 表名 ADD 字段名 列属性
例如:ALTER TABLE teacher1 ADD age INT(11)
修改表的字段
修改约束:
modify不用来字段重命名,只能修改字段类型和约束
ALTER TABLE 表名 MODIFY 字段名 列属性[]
例如:ALTER TABLE teacher1 MODIFY age VARCHAR(11) : 改为varchar型
字段重命名:
change用来字段重命名,不能修改字段类型和约束
ALTER TABLE 表名 change 旧名字 新名字 列属性[]
例如:ALTER TABLE teacher1 CHANGE age age1 INT(1) : age改为age1
删除表的字段
ALTER TABLE 表名 DROP 字段名
例如:ALTER TABLE teacher1 DROP age1 :删除表teacher1里面的age1字段
删除表
-- 删除表,如果表存在再删除:if exists例如DROP TABLE IF EXISTS teacher1
---是他的创建和删除操作尽量加上判断,以免报错---
注意点:
字段名 用飘``包裹
注释-- /**/
sql关键大小写不敏感,建议使用小写
使用的符号全部用英文。