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修改字符編碼