什么是数据库
存储数据的仓库
MySQL特点
1、关系型数据库
1、数据以 行和列(表) 的形式去存储的
2、表中行:一条记录 列:一个字段
3、表和表之间的逻辑关联叫关系
2、示例
1、关系型数据库存储
表1、学生信息表
姓名 年龄 班级
星矢 25 三班
水冰月 23 六班
2、非关系型数据库存储
{"姓名":"星矢","年龄":25,"班级":"三班","班主任":"大空翼"}
{"姓名":"水冰月","年龄":23,"班级":"六班","班主任":"松人"}
2、MySQL安装
1、Ubuntu安装MySQL服务
1、安装服务端
sudo apt-get install mysql-server
2、安装客户端
sudo apt-get install mysql-client
3、Ubuntu安装软件
1、sudo apt-get install update
2、sudo apt-get -f install
作用 :修复依赖关系
4、更改库的默认字符集
1、方法 :更改配置文件
2、步骤
1、获取root权限
sudo -i
2、cd /etc/mysql/mysql.conf.d
3、cp mysqld.cnf mysqld.cnf.bak
4、subl mysqld.cnf
5、在[mysqld]下的tmpdir = /tmp添加
character_set_server = utf8
6、/etc/init.d/mysql restart
默认初始账户root,密码为空
3、启动和连接MySQL服务
1、服务端启动
1、查看服务状态
sudo /etc/init.d/mysql status
sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql restart
sudo /etc/init.d/mysql reload
2、客户端连接
1、命令格式
mysql -h主机地址 -u用户名 -p密码
mysql -hlocalhost -uroot -p123456
# 本地登录可省略 -h 选项
mysql -uroot -p
4、基本SQL命令
1、SQL命令的使用规则
1、每条命令必须以 ; 结尾
2、SQL命令不区分字母大小写
3、使用 \c 终止当前命令的执行
2、库的管理
1、库基本操作
1、查看所有库
show databases;
2、创建库(指定字符集)
create database 库名 character set utf8;
3、查看创建库的语句(查看字符集)
show create database 库名;
4、查看当前所在库
select database();
5、切换库
use 库名;
6、查看库中的表
show tables;
7、删除库
drop database 库名;
3、练习
1、创建库 testdb,指定字符集为 utf8
create database testdb character set utf8;
7、查看库 testdb2 中的所有表
show tables;
8、删除库 testdb
drop database testdb;
9、删除库 testdb2
drop database testdb2;
3、表的管理
1、表的基本操作
1、创建表(别忘了选择库,指定字符集)
create table 表名(
字段名 数据类型 default,
字段名 数据类型,
字段名 数据类型
)character set utf8;
2、查看创建表的语句(字符集、存储引擎)
show create table 表名;
3、查看表结构
desc 表名;
4、删除表
drop table 表名;
4、注意
???所有数据都是以文件形式存储在数据库目录下/var/lib/mysql
5、表记录管理
1、插入(insert)
1、insert into 表名 values(值1),(值2);
2、insert into 表名(字段1,字段2)
values(值1),(值2);此方式可以对部分字段插入而无需对一个值的所有字段进行赋值(使用方法1的时候,遇到没有值的可以使用null)(值1*2代表输出值1的2倍值,可修改输出参数值)
2、查询(select)
select 字段1,字段2(若填*,则代表对所有字段显示) from 表名 where 条件;
where 条件计算:
数值类型: >,>=,<,<=,=,!=
字符类型: =,!=
7、数据类型
1、数值类型
1、整型
1、int 大整型(4个字节)
取值范围 :0 ~ (2**32 - 1) 42亿多
2、tinyint 微小整型(1个字节)
1、有符号(signed默认) : -128~127
2、无符号(unsigned) : 0~255
age tinyint unsigned,
3、smallint 小整型(2个字节)
4、bigint 极大整型(8个字节)
2、浮点型
1、float(4个字节,最多显示7个有效位)
字段名 float(m,n) m->总位数 n->小数位位数
float(5,2) 取值范围:-999.99 ~ 999.99
## m的值最大为7
2、double
字段名 double(m,n)
3、decimal(m,n)
1、存储空间(整数部分、小数部分分开存储)
规则:将9的倍数包装成4个字节
余数 字节
0 0
1-2 1
3-4 2
5-6 3
7-8 4
例:decimal(19,9)
整数部分:10/9=1余1 4字节+1字节=5
小数部分:9/9=1余0 4字节+0字节=4
总共 :9个字节
2、字符类型
1、char :定长
char(宽度) 宽度取值范围:1 - 255
2、varchar :变长
varchar(宽度) 宽度取值范围 :1 - 65535
3、text / longtext(4G) /blob / longblob(二进制)
4、char 和 varchar的特点
1、char :浪费存储空间,性能高
2、varchar :节省存储空间,性能低
5、字符类型的宽度和数值类型宽度的区别
1、数值类型宽度为显示宽度,只用于select查询时显示,和占用存储无关,可用zerofill查看效果
2、字符类型的宽度超过后无法存储
3、枚举类型
1、单选enum
sex enum(值1,值2,...)
插入的时候是"值1"
2、多选set
likes set(值1,值2,...)
## 插入记录时 "值1,值2......"
简述客户端把数据存储到数据库服务器上的过程???