day01
一.MySQL 概述
1. 什么是数据库:
存储数据的仓库
2. 哪些公司在用数据库
金融机构 游戏网站 购物网站 论坛网站..
3. 数据库服务的软件
软件分类:
MySQL Oracle SQL_Server MongoDB DB2 Maraidb
生产环境中如何选择使用哪个数据库软件
1. 是否开源:
开源软件: MySQL MongoDB Maraidb
商业软件: Oracle DB2 SQL_Server
2.是否跨平台:
不跨平台: SQL_Server
跨平台:....
3.公司的类型
商业软件:政府部门 金融机构
开源软件:游戏网站 购物网站 论坛网站
4. MySQL特点
1.关系型数据库(存储于硬盘)
1.数据以行和列(表)的形式去存储的
2.表中行: 一条记录 表中列: 一个字段
3.表和表之间的逻辑关联叫关系
2.关系/非关系数据库示例:
1.关系型数据库存储 MySQ
表1:学生信息表
姓名 年龄 班级
张 24 三班
王 23 六班
表2:班级信息表
班级 班主任
三班 刘
六班 离
2.非关系型数据存储 MongoDB
{"姓名":"张","年龄":23,"班级":"三班","班主任":"刘"}
2.跨平台
在Windows Linux Unix运行数据库服务
3.支持多种编程语言
python java php...
5.数据库软件,数据库,数据仓库区别
1.数据库软件
看得见,可操作,实现数据库的逻辑功能
2.数据库
逻辑概念,存储数据,侧重于存储
3.数据仓库
数据量特别庞大,主要用于数据分析,数据挖掘
数据库:user表
数据仓库: 哪个时间段用户登录量最多
二 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 updata
2. sudo apt_get -f install
作用:修复依赖关系
2.Windows 安装MySQL 服务
1.下载安装包(windows)
mysql_install***5.7***.msi
2.双击安装
3.Mac 安装MySQL
1.下载安装包
2.设置环境变量
1. vi.bash_profile
2.添加如下内容保存退出
export PATH=${PATH}:/user/local/mysql/bin
3.终端: soucer .bash_profile
4.验证:mysql_uroot -p密码
三 启动和链接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
四 基本SQL命令
1.SQL命令的使用规则
1.每条命令必须以 ;结尾
2.SQL命令不区分字符大写小写
3.使用\c终止当前命令的执行
2.库的管理
1.库的基本操作
1.查看所有的库
show databases;
2.创建库(指定字符集)
create database 库名 character set utf8;
3.查看创建库的语句(查看字符集)
show create database 库名;
(查看MySQL默认给这个库添加了什么属性)
4.查看当前所在库
select database();
5.切换库
use 库名;
6.查看库中的表
show tables;
7.删除库
drop database 库名;
2.库的命名规则
1.数字 字母 下划线 ,但是不能是纯数字
2.库名区分字母大小写
3.不能使用特殊字符 和 MySQL 关键字
3.练习
1.创建库testdb 指定字符集为utf8
create database testdb character set utf8;
2.进入testdb
use testdb;
3.查看当前所在库
select database();
4.创建testdb2库,指定字符集latin1
create database testdb2 character set latin1;
5.进入库testdb2
use testdb2;
6.查看库testdb2的字符集是什么
show create database testdb2;
3.表的管理
1.表的基本操作
1.创建表(要先选择库)
create table 表名(
字段名 数据类型
字段名 数据类型
字段名 数据类型
),
例:
create table 表名(
name char(10),
age int(11),
score int(11)
);
2.查看创建表的语句(字符集,存储引擎)
show create table 表名;
3.查看表结构:
desc 表名;
4.删除表:
drop table 表名;
4.注意:
1.所有数据都是以文件形式存储在数据库目录下 /var/lib/mysql
2.MySQL是基于硬盘读写
5.表记录管理
1.插入(insert)
1. insert into 表名 values (值1),(值2),(值3);
例:
insert into t1 values(1,"Lucy"),(2,"Tom"),(3,"Mike");
2.insert into 表名(字段名1,字段名2) values(值1),(值2),
例:
insert into t1(name) values("Bob"),("Jim");
2.查询(select)
1. select * from 表名 where 条件;
例:
select * from 表名 where id = 1;
2. select 字段1,字段2 from 表名 where 条件;
五 如何更改库的默认字符集(对之前的库不会有影响)
1. 方法:更改配置文件 (位置:/etc/mysql/mysql.conf.d)
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
3.Mac本
vi /etc/my.cnf
写入:
[mysqld]
character_set_server = utf8
六 客户端把数据存储到数据库服务器上的过程
1. 连接到数据库服务器 mysql -u用户名 -p
2. 选择库 use
3. 创建/修改表 updata 表名
4. 断开与数据库的连接: exit; / quit; / \q;
七 数据类型
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 (8个字节)
字段名 double(m,n) m->总位数 n->小数位
(常用)3. decimal(m,n)( 最多显示28个有效位)
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 = 0 4个字节 + 0个字节 = 4个字节
总共: 9个字节'
3.练习:
1.新建库 studb2 ,并在库中创建表stuinfo,要求:
id : 大整型
name : 字符类型 ,宽度为15
age: 微小整型,不能为负数
height : 浮点型,小数位为2位(float)
money: 浮点型,小数位为4位(decimal)
create database studb2;
create table stuinfo(
id int,
name char(15),
age tinyint unsigned,
height float(7,2),
money decimal(14,4)
);
2.查看表结构
desc stuinfo;
3.查看表字符集和存储引擎
show create table stuinfo;
4.在表中插入1条完整记录
insert into stuinfo values(1,"K",19,1.8,900);
5.查询所有记录
select * from stuinfo;
6.在表中id,name,money三个字段插入2条记录
insert into stuinfo(id,name,money) values(2,"L",800);
7.查询所有学生的编号,姓名和money
select id,name,money from stuinfo;
2. 字符类型
1. char : 定长
char(宽度) 宽度取值范围:1~125
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,...)
2.多选set
like set(值1,值2,...)
# 插入记录时"study,python,mysql"
4. 日期时间类型
作业:
1. MySQL中的数据类型有:___,___,___,___
数值型 字符型 枚举型 日期时间型
2. 关系型数据库的核心内容是 关系 即 二维表
3. 简述客户端把数据存储到数据库服务上的过程
1. 连接数据库
2. 选择数据库
3. 创建/修改数据库
4. 断开数据库连接
4.char 和 varchar的区别
5. 操作:
1.创建一个学校的库
create database school;
2.在库school中创建表students,字符集utf8
字段如下:
id int 显示宽度为3,位数不够用0填充
姓名,年龄(不能为负数),性别(单选),成绩(浮点),爱好(多选)
create table students(
id int(3)
name verchar(20)
age tinyint(unsigned
sex enum("boy","girl")
score float(7,2)
hobby set("run","read","write","sing")
);
3.查看表结构
desc students;
4.在表中任意插入3条完整记录,并查询显示
insert into students values(1,"Jike",12,"boy",99.99,"sing"),(2,"Mike",14,"boy",15,"read"),(3,"Lucy",18,"girl",89.7,"write")
5.在表中id,姓名,成绩这三个字段插入3条记录,并显示查询显示
insert into students(id,姓名,成绩) values(3,"Sara",89.9)
6.查看所有学生的姓名和成绩
select name,score from students;
7.查看成绩及格的学生的姓名和成绩
select name,score from students where score > 60;
8.更改配置文件,把默认字符集改成utf8
9.重启MySQL服务,并建库验证