关系型数据库
- 支持复杂的SQL语句的查询
- 支持事物(一系列操作的集合。也可理解为集合中的一系列操作协作完成事务)
非关系型数据库
- NOSQL 不需要经过SQL层的处理 性能高
- 可扩展性 因为是键值对的形式 所以水平扩展非常的容易
使用管理员身份:net start mysql57
MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。
一、进入到数据库
-h host 主机名
-u user 用户名
-p password 密码
mysql -h localhost -u root -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 字符集;
三、对于表的操作
1. 查看所有的表
show tables;
2. 创建表
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)
-> );
3. 查看表结构
desc 表名 : descend降序
+----------+---------------------+------+-----+---------+----------------+
| 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 | |
+----------+---------------------+------+-----+---------+----------------+
4. 删除表中的某个字段
alter table fs drop 字段名;
5. 删除表
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个成员 | 集合:可以选择多个成员 |
Field | Type | Null | Key | Default | Extra |
---|---|---|---|---|---|
id | int(11) | YES | NULL | ||
num | smallint(6) | YES | NULL | ||
age | tinyint(4) | YES | NULL | ||
fmoney | float(6,4) | YES | NULL | ||
dmoney | decimal(6,2) | YES | NULL |
int、smallint、tinyint 后面搜加一位:符号位
char和varchar的相同和不同点 :
- char 和 varchar 的存储长度都为0-255
- char 的执行效率高于 varchar
- varchar 要比 char 更节省存储空间
- 当 char 存储的值达不到指定的长度时 则使用空来占位
enum和set区别
- enum只能选择其中的一个值
- set可以选择多个值 多个值使用逗号来隔开
create table mystring(....)
select * from mystring
该语句为查询表或视图中的所有字段,* 表示所有字段
(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 | 存储时间和日期 |
五、字段约束
1. unsigned 无符号 正数
只能用于数值类型,不允许出现负数,存储长度会扩大一倍
2. zerofill 零填充
只能用于数值类型,当指定的位数不足的时候,零填充
3. default 默认值
如果当前字段没有传值,则值为默认值(不设定默认值 默认为null)
4. null 和 not null
默认为null,当不插入值则插入的为null,当设置当前字段为 not null 的时候,则该字段必须传值
5. comment 设置当前字段的说明
6. auto_increment 自增
六、注意
-
SQL 语句以分号作为结束
-
SQL命令 不区分大小写
-
数据库的切换使用use
-
\c 撤销当前命令
-
\G 竖着查看
-
当遇到在终端中 不管怎样输入命令都不执行 name 查看一下左侧 是否为->
-
在Windows下 不区分库,表名的大小写 但是在Ubuntu下区分
-
退出数据库的几种方式
\q exit quit