MySQL数据库
关系型数据库
- 支持复杂的SQL语句的查询
- 支持事物
非关系型数据库
- NOSQL 不需要经过SQL层的处理 性能高
- 可扩展性 因为是键值对的形式 所以水平扩展非常的容易
mysql安装
- 如果端口被占用
First of all uninstall the previous version of mysql... in most of the cases it works. If it doesn't , open Run (win+R) and type "resmon.exe" .A window will be opened, now click on Listening ports .Now you can see port "3306" as mysqld.exe. Now, remember the PID of the mysqld.exe. Now, open cmd (as administrator) and type taskkill /F /PID 3306 (if your PID is 3306) .... That's it now you can reinstall mysql again with 3306 port
- 安装后将路径添加到系统变量
C:\Program Files\MySQL\MySQL Server 5.7\bin
一、进入到数据库
-h host 主机名
-u user 用户名
-p password 密码
net start 服务器名称
net start mysql57
mysql -hlocalhost -uroot -p
->密码
mysql -uroot -p
->密码
# 查看版本
select version();
# 显示当前时间
select now();
# 退出
quit或exit
net stop 服务名称
net stop mysql57
root超级管理员 可以创建和管理其他的用户root用户不可以远程登录
二、对于库的操作
CREATE 创建
DROP 删除
ALTER 修改
SHOW 展示
(1) 查看所有的数据库
show databases;
(2) 创建数据库
create database 库名;
create database if not exists 库名; 防止创建同名的库出现错误;
(3) 查看创库语句
show create database 库名;
(4) 使用数据库(进入到当前的库中)
use 库名;
(5) 查看当前所在的数据库
select database();
(6) 数据库的删除
drop database 库名;
drop database if exists 库名; 删除数据库如果该库存在 防止报错
(7) 创建数据库并设置字符集
create database 库名 character set utf8; charset=utf8
(8) 创建数据库 并设置字符集
alter database hzpython1803 character set 字符集;
(9) 查看字段字符集
show full fields from 表名
三、对于表的操作
- 查看所有的表
show tables;
-
创建表
mysql> create table if not exists fs( -> id int unsigned primary key auto_increment, -> username varchar(20), -> sex tinyint, -> age tinyint unsigned, -> info varchar(100) -> );
-
查看表结构
desc 表名
+----------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | username | varchar(20) | YES | | NULL | | | sex | tinyint(4) | YES | | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | | info | varchar(100) | YES | | NULL | | +----------+---------------------+------+-----+---------+----------------+
- 查看建表语句
show create table 表名字; - 重命名表名
rename table 原表名 to 新表名;
- 添加修改删除表中的某个字段
alter table 表名 add|modify|drop 字段名 类型...;
alter table newcar add isDelete bit default 0
- 删除表
drop table if exists 表名; 删除表如果该表存在
- 清空表
truncate 表名 设置auto_increment 为原位
- 删除表内容
delete from 表名 auto_increment 没复位
四、MySQL表的创建
字段类型
(1) 整型
类型 | 大小 | 范围 | 无符号范围 | 用途 |
---|---|---|---|---|
tinyint | 1字节 | -128,127 | 0,255 | 小整数值 |
smallint | 2字节 | -32768,32767 | 0,65535 | 大整数值 |
int | 4字节 | 2-》10位置 | 4... 10 位的 | 大整数值 |
float(m,n) | 4个字节 | 单精度浮点型 | ||
double(m,n) | 8个字节 | 双精度浮点型 | ||
decimal(m,n) | 根据存储的值 | 小数据值(更加精准) |
浮点数中的m代表当前存储的长度 n代表小数的位数 m-n代表整数的位数 超出则报错
整型后面的数字的意义:
- 整型后面给定数字 并不是限定当前存储值的长度 并没有任何的意义 除非配合可选参数 zerofill 零填充 才有意义
- 字符串类型后面给定的长度 则是限制当前存储数据的长度
- 整型默认长度会比本身长度大1,因为是符号位
(2) 字符串类型
类型 | 大小 | 用途 |
---|---|---|
char | 0-255 | 存储定长字符串 |
varchar | 0-255 | 存储不定长度字符串 |
text | 0-65535 | 长文本数据 |
blob(binary large object) | 0-65535 | 存储二进制的长文本数据 |
enum('w','m') 如男女 | 65535个成员 | 枚举:只能选取括号中的某一个值进行存储 |
set('dancing','playing') 如爱好 | 64个成员 | 集合:可以选择多个成员 |
char和varchar的相同和不同点 :
- char和varchar的存储长度都为0-255
- char的执行效率高于varchar
- varchar要比 char更节省存储空间
- 当char存储的值达不到指定的长度时 则使用空来占位
enum和set区别
- enum只能选择其中的一个值
- set可以选择多个值 多个值使用逗号来隔开
set的使用
- create table test(id int unsigned primary key auto_increment not null, choice set('a', 'b', 'c'));
- insert into test values(null, 'a, b, c');
(3) 时间和日期
类型 | 大小 | 范围 | 格式 | 用途 |
---|---|---|---|---|
date | 3 | 1000-01-01 - 9999-12-31 | YYYY-MM-DD | 日期 |
time | 3 | -838:59:59/838:59:59 | HH:MM:SS | 时间值或持续时间 |
year | 1 | 1901/2155 | YYYY | 年分值 |
datetime | 8 | 1000-01-01 00:00:00 /9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 存储时间和日期 |
五、字段约束
- unsigned 无符号 正数
只能用于数值类型 不允许出现负数 存储长度会扩大一倍
alter table myint add uage tinyint unsigned after age;
- zerofill 零填充
只能用于数值类型 当指定的位数不足的时候 零填充
alter table myint modify zid int(5) zerofill; (modify)
- default 默认值
如果当前字段没有传值 则值为默认值 (不设定默认值 默认为null)
alter table myint modify fmoney float(6,2) default 12;
- null 和 not null
默认为null 当不插入值则插入的为null,当设置当前字段为 not null的时候 则该字段必须传值
alter table mystring add notnull varchar(10) not null;
- comment 设置当前字段的说明
alter table mystring add address varchar(50) comment '备注:地址'
- auto_increment 自增
注意
- SQL 语句以分号作为结束
- SQL命令 不区分大小写
- 数据库的切换使用use
- c 撤销当前命令
- G 竖着查看
- 当遇到在终端中 不管怎样输入命令都不执行 name查看一下左侧 是否为->
- 在Windows下 不区分库,表名的大小写 但是在Ubuntu下区分
- 退出数据库的几种方式
q exit quit
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。