数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
结构化查询语句分类
名称 | 解释 | 命令 |
---|
DDL(数据定义) | 定义和管理数据对象 如数据库,数据表 | create,drop,alter |
DML(数据操作) | 用于操作数据库对象中所包含的数据 | insert,update,delete |
DQL(数据查询语言) | 用于查询数据库数据 | select |
DCL(数据库控制) | 用来管理数据库的语言包括管理权限及数据更改 | grant,commit,rollback |
1.数据类型
数值类型
类型 | 说明 | 存储寻求 |
---|
tinyint | 非常小的数据 | 1字节 |
smallint | 较小的数据 | 2字节 |
mediumint | 中等大小的数据 | 3字节 |
int | 标准整数 | 4字节 |
bigint | 较大的整数 | 8字节 |
float | 单精度浮点数 | 4字节 |
double | 双精度浮点数 | 8字节 |
decimal | 字符串形式的浮点数 | decimal(m,d) |
字符串类型
类型 | 说明 | 存储寻求 |
---|
char | 0<=M<=255 | M字符 |
varchar | 0<=M<=65535 | M字符 |
tinytext | 微型文本串 | 2^8-1 字节 |
text | 文本串 | 2^16-1 字节 |
日期和时间型数值类型
类型 | 说明 | 应用 |
---|
date | YYYY-MM-DD | 日期格式 |
time | Hh:mm:ss | 时间格式 |
datetime | YY-MM-DDhh:mm:ss | 日期时间 |
timestamp | YYYYMMDDhhmmss | 时间戳 |
year | YYYY | 年份值 |
数据类型的属性
关键字 | 含义 |
---|
NULL | 理解为没有值 或者未知值 null 进行算术运算,结果仍为null mysql 中,0或者null都意味着为假,1为真 |
NOT NULL | 数据列不允许包含NULL值 |
DEFAULT | 默认值 |
PRIMARY KEY | 主键 |
AUTO_INCREMENT | 自动递增,适用于整数类型 |
UNSIGNED | 无符号的,声明该数据不允许负数 |
ZEROFILL | 0填充的,不足位数的用0来填充。如int(3),5 则为005 |
comment | 类型注释 |
CHARACTER SET name | 指定一个字符集 |
ENGINE | 设置表达数据类型,表的类型,InnoDB,MyLSAM,HEAP,BOB,CSV 常用的InnoDB 和 MyLSAM |
MyLSAM
使用MyLSAM:节约空间及相应速度
InnoDB
适用InnoDB: 安全性,事物处理及多用户操作数据表
MyLSAN和InnoDB比较
名称 | MyLSAN | InnoDB |
---|
事物处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约2倍 |
2.数据库操作
启动mysql服务
停止mysql服务
连接数据库
mysql -h 服务器主机地址 -u 用户名 -p 用户名密码
查看数据库
使用数据库
创建数据库
create database [if not exists] databases_name; --中括号部分可选,判断该数据不存在就创建
--建议这么写:
drop database if exists database_name;
create database database_name;
删除数据库
drop database [if exists] databases_name; --中括号部分可选,如果数据库不存在就退出
--建议这么写:
drop database if exists databases_name;
3.数据表操作
修改表名
alter table 旧表名 rename as 新表名
添加字段
alter table 表名 add 字段名 列类型 [属性]
修改字段
alter table 表名 modify '字段名' 列类型 [属性]
alter table 表名 change 旧字段名 新字段名 列类型 [属性]
删除字段
删除表
drop table [if exists] 表名
示例
--创建数据表 字段可以是中文
drop table if exists `table_name`;
creat table `table_name` (
`字段1` 列类型 [属性] [索引] [注释],
`字段2` 列类型 [属性] [索引] [注释],
`字段3` 列类型 [属性] [索引] [注释],
)[表类型] [表字符集] [注释];
--示例:
drop table if exists `student`;
creat table `student` (
`sid` int(11) not null auto_increment comment '学号',
`sname` varchar(32) uniqe(唯一) not null comment '姓名',
`sage` int(11) not null,
`sex` char(1) not null default '男',
primary key (`sid`)
)engine=InnoDB default charset=utf8;
--列类型 分为 '数值类型','字符串类型','日期和时间型数值类型','null'
4.执行sql脚本
mysql命名行中运行sql脚本
创建一个test.txt
use test
drop table if exists testTable;
create table testTable (name varchar(50), address varchar(50));
执行
mySql命令行中加载数据到表中
load data local infile '/path/pet.txt' info table pet
lines terminated by '\r\n'
注意:如果是在苹果系统中,你可能需要使用\r行终止符