2.4 创建数据库表(重点)
-- 目标:使用SQLyog创建一个school数据库表
-- 在school数据库中创建学生表student(列、字段)
-- 属性:
-- 学号 id int(4)
-- 姓名 name varchar(20)
-- 登录密码 pwd varchar(30)
-- 性别 sex varchar(2)
-- 出生日期 birthday datetime
-- 家庭住址 address varchar(100)
-- 邮箱 email varchar(50)
-- 主键 PRIMARY KEY,一般一个表只有一个唯一的主键
-- 注意:使用英文(),表的名称和字段尽量使用``括起来,避免与关键字重复
-- 字符串使用英文\'\'括起来,所有的语句后面加上英文","表示结束
-- 最后一个语句没有",",字符集是utf8而不是utf-8
-- 实现代码如下:
CREATE DATABASE IF NOT EXISTS school
USE school
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`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
格式
CREATE TABLE IF NOT EXISTS `表名`(
`字段名` 列类型(长度) [属性] [索引] [注释],
`字段名` 列类型(长度) [属性] [索引] [注释],
......
`字段名` 列类型(长度) [属性] [索引] [注释],
)[表类型][字符集设置][注释]
附:MySQL中数据类型的长度问题总结YAruli的博客-CSDN博客mysql中数据类型的长度问题总结
https://blog.csdn.net/YAruli/article/details/79187814
常用命令
SHOW CREATE DATABASE school -- 查看创建school数据库的语句
SHOW CREATE TABLE student -- 查看创建student数据表的语句
右键可复制该语句内容:
可粘贴出的全部代码:
DESC student -- 显示表的结构
2.5 数据表的类型
关于数据库引擎
-
INNODB 现在默认使用的
-
MYISAM 早些年使用的(5.0之前的版本)
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为前者的两倍 |
数据行锁定是一行锁定,而不是表锁;
外键约束,在数据库级别关联另一张表
常规使用规则:
-
MYISAM 节约空间,速度较快
-
INNODB 安全性高,事物的处理,多表多用户操作
在物理空间存在的位置
所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库,本质还是文件的存储!
MySQL引擎在物理文件上的区别
-
INNODB在数据库表中只有一个*.frm文件,以及上级目录的ibdata1文件
-
MYSIAM对应文件
-
*.frm 表结构的定义文件
-
*.MYD 数据文件(data)
-
*.MYI 索引文件(index)
-
设置数据库表的字符集编码
CHARSET=utf8
-- 不设置的话,会是mysql默认的字符集编码(不支持中文)
-- MySQL的默认编码时Latin1,不支持中文
-- 在my.ini中配置默认的编码,不建议,最好在每个表中单独设置字符集编码utf8
charset-set-server=utf8
附: mysql默认字符编码设置教程:my.ini设置字符编码坚持是一种修行的博客-CSDN博客my.ini修改字符编码