SHOW DATABASES -- 查看所有数据库 USE school -- 切换数据库 SHOW TABLES -- 查看数据库内所有表 DESCRIBE student -- 显示数据库表中所有信息 CREATE DATABASE westos; -- 新建数据库 EXIT -- 退出连接 -- 单行注释 /* 多行注释 */ -- 删除 DROP DATABASE IF EXISTS westos -- 删除数据库,如果该数据库存在 -- 建立 CREATE DATABASE IF NOT EXISTS westos -- 建立数据库,如果数据库不存在 -- 关键字使用飘``` USE `westos` -- 查看数据库 SHOW DATABASES -- 查看所有数据库 涉及到多个数据库时database后加s
数据库××语言
DDL 定义
DML 操作
DQL 查询
DCL 控制
数值
tinyint 十分小的数据 1个字节
smallint 较小的数据 2个字节
mediumint 中等大小的数据 3个字节
int 标准的整数 4个字节
bigint 较大的数据 8个字节
float 浮点数 4个字节
double 浮点数 8个字节(存在精度问题)
decimal 字符串形式的浮点数 金融计算
字符串
char 字符串固定大小 0-255
varchar 可变字符串 0-65535(常用的变量)
tinytext 微型文本 2^8-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
unsigned:
无符号的整数
声明了该列不能声明为负数
zerofill:
0填充
不足的位数,使用0来填充,int(3),5->005
自增
通常理解为自增,自动再上一条记录的基础上+1(默认)
通常用来设计唯一的主键 index,必须时整数类型
可以自定义设置主键自增的起始值和步长(高级->自动增量,默认为1)
非空
NULL nut null
设置为not null时,不给它赋值,就会报错
null,如果不填写值,默认为null
默认
设置默认值
sex,默认值为男,如果不指定该列的值,则有默认值
(拓展)
每个表,都必须存在一下五个字段做项目时表示一个记录的健壮性和安全性
id 主键
version 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
列名``
类型 int(), varchar(), datetime()
是否为空 not null
默认值 default'默认内容'
自加(主键或其它)auto_increment
注释 comment'注释内容'
-- 创建数据库 CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号', -- 1.类型为int类型展示4位 2.设置不为空 3.设置自增 4.设置注释,使用单引号 5.所有语句最后加,最后一句不用加 `name` VARCHAR(30) NOT NULL DEFAULT'匿名' COMMENT'姓名', -- 1.类型为varchar类型30位 2.设置不为空 3.设置默认值'匿名' 4.设置注释 `pwd`VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码', -- 1.类型为varchar类型20位 2.设置不为空 3.设置默认值'123456' 4.设置注释 `sex`VARCHAR(2) NOT NULL DEFAULT'男' COMMENT'性别', `birthday` DATETIME DEFAULT NULL COMMENT'出生日期', -- 1.类型为datetime时间类型 2.设置默认值NULL 3.设置注释 `address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址', -- 1.类型为varchar类型100位 2.设置默认值NULL 3.设置注释 `email` VARCHAR(50) DEFAULT NULL COMMENT'邮箱', -- 1.类型为varchar类型50位 2.设置默认值NULL 3.设置注释 PRIMARY KEY(`id`) -- 设置主键,一般一个表只有一个放到最后 )ENGINE=INNODB CHARSET=utf8 -- 1.设置引擎innodb 2.设置编码utf8
关于数据库引擎
innodb 默认使用
myisam 早些年使用
区别:
myisam | innodb | |
---|---|---|
事物支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约为两倍 |
常规使用操作:
myisam:节约空间,速度快
innodb:安全性高,事物的处理,多表多用户操作
在物理空间存在的位置
所有的数据库文件都存在data目录下
本质还是文件的存储
MySQL引擎在物理文件上的区别
innodb 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
myisam对应文件
*.frm 表结构的定义文件
*.MYD 数据文件 (data)
*.MYI 索引文件(index)、
设置数据库表的字符集编码
charset=utf8
不设置的话,会是mysql默认的字符集编码(不支持中文)
MySQL默认的编码是latin1,不支持中文
在my.ini中配置默认的编码
character-set-server=utf8
修改
-- 修改表名字 ALTER TABLE student RENAME AS students -- 添加表字段 ALTER TABLE students ADD `age` INT(11) NOT NULL DEFAULT'27' COMMENT'年龄' -- 查看表 SHOW KEYS FROM `school`.`students` -- 修改表字段(重命名,修改约束)modify:修改 ALTER TABLE students MODIFY age VARCHAR(11) -- 修改类型 ALTER TABLE students CHANGE age1 age VARCHAR(11) -- 修改字段名 要加上类型
删除
-- 删除表的字段 ALTER TABLE students DROP age -- 删除表(如果存在便删除) drop table if exists students
所有的创建删除操作尽量加上判断,以免报错
注意点:
字段名使用``包裹
注释 -- /**/
sql关键字大小写不敏感,建议小写
P13
数据库意义:数据存储,数据管理
DML语言:数据操作语言
insert
update
delete
添加
修改
删除