数据库(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)

字符串类型

类型说明存储寻求
char0<=M<=255M字符
varchar0<=M<=65535M字符
tinytext微型文本串2^8-1 字节
text文本串2^16-1 字节

日期和时间型数值类型

类型说明应用
dateYYYY-MM-DD日期格式
timeHh:mm:ss时间格式
datetimeYY-MM-DDhh:mm:ss日期时间
timestampYYYYMMDDhhmmss时间戳
yearYYYY年份值

数据类型的属性

关键字含义
NULL理解为没有值或者未知值
null 进行算术运算,结果仍为null
mysql 中,0或者null都意味着为假,1为真
NOT NULL数据列不允许包含NULL值
DEFAULT默认值
PRIMARY KEY主键
AUTO_INCREMENT自动递增,适用于整数类型
UNSIGNED无符号的,声明该数据不允许负数
ZEROFILL0填充的,不足位数的用0来填充。如int(3),5 则为005
comment类型注释
CHARACTER SET name指定一个字符集
ENGINE设置表达数据类型,表的类型,InnoDB,MyLSAM,HEAP,BOB,CSV
常用的InnoDB 和 MyLSAM

MyLSAM

使用MyLSAM:节约空间及相应速度

InnoDB

适用InnoDB: 安全性,事物处理及多用户操作数据表

MyLSAN和InnoDB比较

名称MyLSANInnoDB
事物处理不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间大小较小较大,约2倍

2.数据库操作

启动mysql服务

sudo service mysql start

停止mysql服务

sudo service mysql stop

连接数据库

mysql -h 服务器主机地址 -u 用户名 -p 用户名密码

查看数据库

show databases;

使用数据库

use databases_name;

创建数据库

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 旧字段名 新字段名 列类型 [属性]

删除字段

alter table 表名 drop 字段名

删除表

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));

执行

source ./test.txt

mySql命令行中加载数据到表中

load data local infile '/path/pet.txt' info table  pet 
lines terminated by '\r\n'

注意:如果是在苹果系统中,你可能需要使用\r行终止符