MySQL 初识

关系型数据库

  1. 支持复杂的SQL语句的查询
  2. 支持事物(一系列操作的集合。也可理解为集合中的一系列操作协作完成事务)

非关系型数据库

  1. NOSQL 不需要经过SQL层的处理 性能高
  2. 可扩展性 因为是键值对的形式 所以水平扩展非常的容易

使用管理员身份:net start mysql57
MySQL57 服务正在启动 .
MySQL57 服务已经启动成功。


一、进入到数据库

-h host 主机名
-u user 用户名
-p password 密码

1
2
3
4
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. 创建表

1
2
3
4
5
6
7
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降序

1
2
3
4
5
6
7
8
9
+----------+---------------------+------+-----+---------+----------------+
| 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代表整数的位数 超出则报错

整形后面的数字的意义:
  1. 整形后面给定数字 并不是限定当前存储值的长度 并没有任何的意义 除非配合可选参数 zerofill 零填充 才有意义
  2. 字符串类型后面给定的长度 则是限制当前存储数据的长度
  3. 整形默认长度会比本身长度大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的相同和不同点 :
  1. char 和 varchar 的存储长度都为0-255
  2. char 的执行效率高于 varchar
  3. varchar 要比 char 更节省存储空间
  4. 当 char 存储的值达不到指定的长度时 则使用空来占位
enum和set区别
  1. enum只能选择其中的一个值
  2. set可以选择多个值 多个值使用逗号来隔开
1
2
3
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 自增


六、注意

  1. SQL 语句以分号作为结束

  2. SQL命令 不区分大小写

  3. 数据库的切换使用use

  4. \c 撤销当前命令

  5. \G 竖着查看

  6. 当遇到在终端中 不管怎样输入命令都不执行 name 查看一下左侧 是否为->

  7. 在Windows下 不区分库,表名的大小写 但是在Ubuntu下区分

  8. 退出数据库的几种方式

    \q exit quit