关系型数据库
- 支持复杂的SQL语句的查询
- 支持事物
非关系型数据库
- NOSQL 不需要经过SQL层的处理 性能高
- 可扩展性 因为是键值对的形式 所以水平扩展非常的容易
一、进入到数据库
-h host 主机名
-u user 用户名
-p password 密码
mysql -hlocalhost -uroot -p
-》密码
mysql -uroot -p
->密码
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;
(8) 创建数据库 并设置字符集
alter database hzpython1803 character set 字符集;
三、对于表的操作
-
查看所有的表
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 | | +----------+---------------------+------+-----+---------+----------------+
-
删除表中的某个字段
alter table fs drop 字段名;
-
删除表
drop table if exists 表名; 删除表如果该表存在
四、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 | 0-65535 | 存储二进制的长文本数据 |
enum('w','m') | 65535个成员 | 枚举:只能选取括号中的某一个值进行存储 |
set('w','m') | 64个成员 | 集合:可以选择多个成员 |
char和varchar的相同和不同点 :
- char和varchar的存储长度都为0-255
- char的执行效率高于varchar
- varchar要比 char更节省存储空间
- 当char存储的值达不到指定的长度时 则使用空来占位
enum和set区别
- enum只能选择其中的一个值
- set可以选择多个值 多个值使用逗号来隔开
(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 无符号 正数
只能用于数值类型 不允许出现负数 存储长度会扩大一倍
-
zerofill 零填充
只能用于数值类型 当指定的位数不足的时候 零填充
-
default 默认值
如果当前字段没有传值 则值为默认值 (不设定默认值 默认为null)
-
null 和 not null
默认为null 当不插入值则插入的为null,当设置当前字段为 not null的时候 则该字段必须传值
-
comment 设置当前字段的说明
-
auto_increment 自增
注意
-
SQL 语句以分号作为结束
-
SQL命令 不区分大小写
-
数据库的切换使用use
-
\c 撤销当前命令
-
\G 竖着查看
-
当遇到在终端中 不管怎样输入命令都不执行 name查看一下左侧 是否为->
-
在Windows下 不区分库,表名的大小写 但是在Ubuntu下区分
-
退出数据库的几种方式
\q exit quit
网友评论