注意:mysql中,所有的命令都是以分号(;)结尾
DDL:数据库定义语言
DML:数据库操作语言
DQL:数据库查询语言
DCL:数据库控制语言
基本命令行操作
show databases; --查看所有数据库
use xxx --切换为xxx数据库
show tables; --查看数据库中所有的表
describe xxx; --显示xxx表中的所有信息
create database xxx; --创建一个数据库
show create database xxx; --查看创建数据库的语句
show create table xxx; --查看创建xxx数据表的定义语句
desc xxx; --显示表的结构
--单行注释
/*
多行注释
*/
操作数据库语句
mysql关键字不区分大小写
操作数据库 > 操作数据库中的表 > 操作数据库中表的数据
数据库的创建、删除和使用
CREATE DATABASE [IF NOT EXISTS] xxx; --创建数据库xxx,[]中的内容表示可选字段
DROP DATABASE [IF EXISTS] xxx; --删除数据库
USE `xxx`; --如果你的表名或者字段名是一个特殊字符,就需要加``
SHOW DATABASES; --查看所有数据库
数据库的列类型
-
数值
类型 描述 字节个数 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
创建数据库表
/*
目标:创建一个schoo1数据库
创建学生表(列,字段)使用SQL创建
学号int 登录密码varchar(20) 姓名,性别varchar(2) 出生日期(datatime) ,家庭住址, email
注意点使用英文(),表的名称和字段尽量使用``括起来
AUTO_INCREMENT自增
字符串使用 单引号括起来!
所有的语句后面加,(英文逗号)
PRIMARY KEY主键,一般一个表只有一个唯一的主键!
*/
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
数据表的类型
--关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年使用
*/
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表的空间大小 | 较小 | 较大,约两倍 |
对比:
- MYISAM 节约空间,速度较快
- INNODB 安全性高,支持事务的处理,多表多用户操作
在物理空间中存在的位置
所有的数据库文件都存在data目录下,一个文件夹就对应一个数据库
本质还是文件的存储
MySQL引擎在物理文件上的区别:
- INNODB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
- MyISAM对应文件
- *.frm 表结构的定义文件
- *.MYD 数据文件(data)
- *.MYI 索引文件(index)
设置数据库表的字符集编码
CHARSET=utf8
不设置的话,会是mysql默认的字符集编码(Latin1),不支持中文
也可以直接在my.ini中配置默认的编码character-set-server=utf8