启动/关闭
net start mysql //管理员身份
net stop mysql
登入/退出
mysql -hlocalhost -p3306 -uroot -p[密码] //密码可选
可以简写为:mysql -uroot -p //本机
exit //退出 或 ctrl c 或 quit
mysql服务器架构
- DBMS(数据库管理系统)管理服务器端的内容。
- DB(数据库),用于存储数据的仓库。
- Table(数据表),用于存储具体的实体数据。
- Filed(字段),用于某种类型存储数据
库操作
创建数据库
create database 数据库名称 [库选项]
- 库选项(数据库的相关属性):
- 字符集 :charset 字符集
- 校对集 :collate 校对集
create database text charset gbk;
查看数据库
- show databases; //查看所有数据库
- show databases like ‘ 匹配模式’ ; //模糊查看
- show create database 库名 //单个查看
- 字符集 :charset 字符集
选库与修改,删除
- use 数据库名字; //选择数据库
- alter database 数据库名字 charset gbk; //修改数据库的字符集为gbk
- drop database 数据库名字 ; 删除数据库
表操作
创建表
create table 表名(字段名1 字段类型1,字段名2,字段类型2,...)[表选项];
表选项:
- Engine : 存储引擎
- Charset : 字符集 (级别比数据库的字符集要高)
- Collate : 校对集
create table table1(
age int
)engine innodb charset gbk;
复制表
create table 表名 like 表名。 //只复制结构(空表)
设置表属性
drop table 表名1,表名2... | 删除表 |
rename table 原表名 to 现表名 | 修改表名 |
alter table 表名 add [column] 新增字段名 类型 [first / after...] | 新增字段 |
alter table 表名 change 旧字段名 新字段名 字段类型 [first /after] | 修改字段名字 |
alter table 表名 modify 字段名 新字段类型 [新属性] [新位置]; | 修改字段属性 |
alter table 表名 drop 字段名 | 删除字段 |
alter table 表名 表选项 | 修改表选项 |
查看表
- show tables; //查看所有的表
- show tables like ‘匹配模式‘ // 部分查看
- describe 表名; //查看表结构
简写: desc 表名;- show create table 表名; //查看表创建语句
数据操作
insert into 表名 (字段列表名) values(数据值列表) | 添加数据(部分) |
insert into 表名 values(值列表) | 向表中所有的字段添加数据 |
查询: | |
select * from 表名字 | 查询表中所有的数据 |
select 字段列表 from 表名 | 查询指定字段的数据(字段之间都好分隔) |
select 字段列表 from where 条件 | 条件查询 |
删除 | |
delete from 表名 [where 条件] | 没有条件,就默认删除表中所有数据 |
修改 | |
update 表名 set 字段名 = 新字段值 [where 条件] | 没有条件默认修改表中所有... |
字符集
set name 字符集 | 设置字符集(client server connection) |
show variables like ‘character_set%‘ | 查看 client server connection 的字符集 |
set character_set_client = ‘字符集’ | 修改clinet的字符集 |
set character_set_results = ‘字符集’ | 修改server的字符集 |
set character_set_connection = ‘字符集’ | 修改connection的字符集 |
列类型
范围 | ||
---|---|---|
整型 | ||
tinyint | 系统常用一个字节存储 | 0-255(-128 ~127) |
smallint | 两个字节 | 0-65535 ... |
mediumint | 三个字节 | |
int | 四个字节 | |
bigint | 八个字节 | |
浮点型 | ||
float | 四个字节 | 精度<=7,超过精度部分,四舍五入 |
double | 八个字节 | 精度<=16,同上 |
定点数 | ||
decimal | 整数部分一定精确 | decimal(总长度<=65,小数部分长度<=30) |
-
无符号设定 unsigned (默认无符号)
alter table xxx add age tinyint unsigned first;
- 显示长度 : tinyint(3)
零填充zerofill : alter table person modify age tinyint(2) unsigned zerofill after name; ||
日期类型
date | 格式YYYY-mm-dd | 初始值0000-00-00 |
time | 格式HH:ii:ss | |
datetime | 格式YYYY-mm-dd HH:ii:ss | |
timestamp | 格式YYYY-mm-dd HH-ii-ss | |
year | 一个字节 | 范围:1900-2155 |
- insert into times (datetime) values(‘2018-12-5 12:12:21‘);
字符类型
char(L) | L代表字符数 | 定长,查询效率比varchar高 |
varchar(L) | L<65535,会有额外的1-2字节的开销 | 变长,节约空间 |
text | 存储普通的文本 | 2^16 2字符数 |
tinytext | <=2^8 1字符数 | |
mediumtext | <=2^24 3字符数 | |
longtext | <=2^32 4字符数 | |
enum(数据值1,数据值2...) | 下标一1开始 | |
set(值1,值2,值3...) | 集合,可以将多个数据选项同时保存的类型 | 0表示没被选中,1表示被选中 |
列属性
null | 字段为空 | 默认为Yea |
default | 默认值 | 默认为null |
comment‘描述’ | 列描述 | 注释说明 |
[primary] key | 主键 | 一张表只允许有一个主键 |
unique [key] | 唯一键 | |
auto_inncrement | 自动增长 | |
create table text2(
name varchar(10) not null comment'dont arrow null' primary key ,
city varchar(20) default 'beijing'
);
主键 (PRI)
- 主键不允许为null
- 主键的数据不允许重复(唯一性)
- 添加主键
- alter table 表名 add primary key (字段)
- 删除主键
- alter table 表名 drop primary key
- 复合主键
- alter table 表名 add primary key(字段1,字段2)
自动增长
在没有提供具体的数据的时候,系统会根据原来的数据自动增长后,填充数据。
自动增长,只适用于数值类型。
一个表只能有一个自增长
- 添加自增长
alter table 表名 modify id int unsigned auto_increment key;
-
修改自增长
alter table 表名 auto_increment = 2; //设置自增长的(下一个)值
-
删除自增长
alter table 表名 modify 自增长字段名 类型。
-
查看步长(auto_increment_increment) , 初始值(auto_increment_offset)
show variables like ‘auto_increment%‘
唯一键(UNI)
- 用于保证数据的唯一性
- 唯一键在表中可以有多个
- 唯一键允许字段为null,null可以有多个(null不参与比较)
- 创建唯一键
alter table 表名 add unique(字段名1,字段名2...)
- 删除唯一键
alter table 表名 drop index 唯一键字段名