mysql
六、数据 库|表|行 的操作 ——(重点)
1)有约束
2)基于硬盘的存储 (就是将数据存储到硬盘上, 持久化 === 落地)
典型代表:
MySQL oracle(国企) sqlserver(微软) sqllite db2
2、非关系型数据
1)没有约束 (key--->value)
2)基于内存存储 (将数据放入到内存中)
典型代表:
MemCache, redis(微博), mongodb
三.、mySQL的架构:
客户端:
socket客户端, 连接服务端, 发送指令 (SQL语句)
服务端:
socket服务端, 接收客户端的指令, 并将结果返回给客户端
四、MySQL 的安装
1、版本: 5.5 以上 5.7 以下
1)可执行文件: .exe 或者 .msi文件 点击下一步
2)压缩包 解压, 进入目录 bin mysqld : 启动服务 mysql : 连接服务端
3)环境变量的配置 ps: 工作中, 线上的 MySQL 不需要开发自己装, 运维或者DBA装 练习中, 需要自己手动安装MySQL
五、初始化:
mysqld --initialise-secure 数据库 (文件夹): 表 (文件) 数据行 (文件中的一行内容)
六、数据 库|表|行 的操作: (重点)
1. 数据库:
增加
SQL语句:
create database 数据库名称;
例子:
create database db1;
删
drop database 数据库名称;
drop database db1;
修改
没有专门的修改指令 update
删了重新建
查询
show databases;
使用:
use 数据库名;
Eg:use db1;
2、数据表:
在哪个数据库下创建表
use db1;
新建数据表
SQL语句:
create table 表名 (
列名1 列类型
);
Eg:
create table t1 (
id int auto=increase primary key,
name char(32)
)engine=Innodb charset=utf8;
增加
insert into 表名 (列1, 列2) values (值1, 值2);
Eg:
insert into t1 (id, name) values (1, 'zekai');
insert into t1 (id, name) values (2, '你好');
改进1:
create table 表名 (
列名1 列类型
)engine=Innodb charset=utf8;
补充:
引擎: Innodb 和 MyIsam
5.5 版本以上 默认是Innodb ,5.3版本以下用 Myisam
Eg:
create table t2 (
id int auto=increase primary key,
name char(32)
)engine=Innodb charset=utf8;
insert into t2 (id, name) values (1, '你好');
insert into t2 (id, name) values (1, 'xxx');
改进2:
create table 表名 (
列名1 列类型 auto_increment primary key
)engine=Innodb charset=utf8;
Eg:
create table t4 (
id int auto_increment primary key,
name char(32) not null default ''
)engine=Innodb charset=utf8;
auto_increment : 自增
primary key : 主键索引 (作用: 加快查找的速度)
not null : 不能为空
default : 默认值
注意: 后面一列写完之后, 不能加逗号 (*********)
一种:
insert into t3 (id, name) values (1, '你好');
insert into t3 (id, name) values (2, 'xxx');
二种:
insert into t3 (name) values ('hello');
insert into t3 (name) values ('xxx');
最终的格式:
create table 表名 (
列1 列属性 [是否为null 默认值],
列2 列属性 [是否为null 默认值],
.....
列n 列属性 [是否为null 默认值]
)engine = 存储引擎 charset = 字符集
最终的例子:
create table t4 (
id int auto_increment primary key,
name char(32) not null default '',
pwd char(32) not null default ''
)engine=Innodb charset=utf8;
查看:
指令:
select 列名 from 表名;
Eg:
select * from t1;
类型
a、数值型
create table t4 (
id unsigned mediumint auto_increment primary key,
name char(32) not null default '',
pwd char(32) not null default ''
)engine=Innodb charset=utf8;
tinyint :
范围:
有符号: -128到127
无符号: 0 到 255 unsigned
smallint
范围:
有符号: -32768到32767
无符号: 0 到 65535 unsigned
mediumint
范围:
有符号: -8388608到8388607
无符号: 0 到 16777215 unsigned
int | bigint
区别:
A、取值范围不一样, 根据自己公司的业务来去选择
B、无符号和有符号的意思
float(M,D) 浮点型
decimal(M,D) 定点型 比float更加的精准
M:小数总共多少位 decimal(5, )
D:小数点后面几位 decimal(5, 2)
Eg:3.1415151519868789789
float: 3.141515000000000000
decimal : 3.1415151519868789789
使用场景:
Eg: 说存 salary 工资 : 6000.23 decimal(,2)
b、字符串类型
char : 定长 char(32)
这一列的值就是32 优点: 速度快 缺点: 浪费
varchar : 变长 varchar(32)
优点: 不浪费, 节省空间 缺点: 速度慢
根据自己公司的业务来去选择:
create table userinfo (
id unsigned mediumint auto_increment primary key,
name varchar(128) not null default '',
pwd char(32) not null default '',
create_time datetime not null default '1970-01-01 00:00:00'
)engine=Innodb charset=utf8;
一般情况下, 如果没有100%的把握, 都是用varchar()
text: 文本 范围比较大, 如果存储大量字符的话, 可以使用这个字段
c. 时间类型
date 2019-6-12
推荐使用datetime

浙公网安备 33010602011771号