MySQL
1. MySQL概述
意义 |
一个存储数据的仓库 |
|
公司运用的数据库? |
金融机构,游戏网站,购物网站,论坛网站… |
|
数据库的服务的软件 |
MySQL |
|
Mariadb |
||
SQL_server |
||
Oracle |
||
DB2 |
||
MongoDB |
||
生产环境中,如何选择使用哪个数据库 |
||
是否开源
开源!=免费 |
开源软件 |
MySQL、Mariadb、MongoDB |
商业软件 |
Oracle、 DB2、 SQL_server |
|
是否跨平台 |
跨平台 |
无 |
不跨平台 |
SQL_server |
|
公司的类型 |
商业软件 |
政府部门、金融机构 |
开源软件 |
游戏网站、购物网站、论调网站、 |
|
特点 |
1.关系型数据库 |
1.数据库以行和列的形式存储 |
2.表中的每一行叫一条记录 |
||
3.表中的每一列叫一个字段 |
||
4.表和表之间的逻辑关联叫关系 |
||
2.跨平台 |
可以在Unix、Linux、windows、上运行数据库服务 |
|
3.支持多种编程语言 |
Python、java、PHP… |
1.关系型数据库示例:
表1 .学生信息表 |
||
姓名 |
年龄 |
班级 |
小王 |
25 |
三班 |
小张 |
25 |
六班 |
班级 |
班主任 |
三班 |
q老师 |
六班 |
a 老师 |
2.非关系型数据库示例:
{“姓名”:“小王”,“年龄”:“25”,“班级”:“三班”,“班主任”:“q老师”}
{“姓名”:“小张”,“年龄”:“25”,“班级”:“六班”,“班主任”:“a老师”}
数据库软件
意义 |
是一种软件,可以看得见,可操作,来实现数据库逻辑功能 |
数据库
意义 |
是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现,则重存储 |
用处 |
User用户名和密码 |
数据仓库
意义 |
主要用于数据挖掘和数据分析 |
用处 |
哪个时间段用户登录量最多,哪个拥挤一年购物最多 |
MySQL安装
1、Ubuntu 安装MySQL |
Sudo apt-get install mysql-sever |
2、安装客户端 |
Sudo apt-get install mysq-client |
(1)Ubnutu安装软件
3、更新一下软件 |
Sudo apt-get update |
4、修复依赖关系 |
Sudo apt-get install |
5、软件包 |
Sudo apt-get install |
(2)Windows 安装MySQL服务
1、下载MySQL安装包(windows) |
mysql-installer***5.7.***.msi |
2、双击、按步骤教程安装 |
无 |
启动和连接MySQL服务
1、服务端启动 |
Sudo /etc/init.d/mysql start |
2、服务端停止 |
Sudo /etc/init.d/mysql stop |
3、服务端重启 |
Sudo /etc/init.d/mysql restart |
4、查看当前状态 |
Sudo /etc/init.d/mysql status |
5、重新加载配置文件 |
Sudo /etc/init.d/mysql reload |
客户端连接
命令格式 |
mysql -h主机地址 -u用户名-p密码 |
myaql -hlocalhost -uroot -p123456 |
|
本地连接可 省略 –h选项 |
mysql -uroot -p123456 |
基本的SQL命令
使用规则 |
1.每条SQL命名必须以;结尾 |
2.SQL命名不区分字母大小写 |
|
3.使用\c终止当前命令 |
库的管理
库的基本操作 |
查看已有的库 |
show databases; |
创建库 |
create database 库名[character set utf8]; |
|
查看创建库的语句 |
show create database 库名; |
|
查看当前所在库 |
select database(); |
|
切换库 |
use 库名; |
|
查看库中已有表 |
Show tables; |
|
删除库 |
drop database 库名; |
库的命名规则
规则 |
1.数字、字母、_、但不能是纯数字 |
2.库名区分字母大小写 |
|
3.不能使用特殊字符和mysql关键字 |
练习
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;
7、删除库testdb
drop database testdb;
8、删除库testdb2
drop database testdb2;
表的管理
表的基本操作 |
创建表 |
create table 表名(字段名1数据类型, 字段名2数据类型, 字段名3数据类型) character set utf8; |
查看创建表的语句(字符集) |
show create table 表名; |
|
查看表结构 |
desc 表名; |
|
删除表 |
drop table 表名; |
练习:
1、创建库python1
2、在 python1 库中创建表 pymysql并指定字符集为utf8,字段有三个:id name age 数据类型自己定义(比如说:char(20)、int )
3、查看表pymysql的的语句
4、查看表 pymysql 的表结构
5、删除表 pymysql
6、删除库 python1
注意!!!
所有的数据都是以文件的形式存放在数据库目录/var/lib/mysq1
表记录的管理
表中插入记录 |
1、Insert into 表名 values(值1),(值2),(值3),…; 例如:id name age values(1,“小李”,23); |
2、Insert into 表名(字段名1,字段名2)values();… |
|
查询表记录 |
1、select *from 表名[where 条件]; |
2、select字段名1,字段名2 from表名[where 条件]; |
|
3、示例: mysql> select * from t2; mysql> select * from t2 where id<3; mysql> select name,age from t2; mysql> select id,name from t2 where id<4; |
练习
1、查看所有库
show databases;
2、创建一个新库 studb
create database studb;
3、在 studb 中创建一张表tab1,指定字符集utf8,字段有:
id name age score 四个 char(15)
use studb;
select database();
create table tab1(
id int,
name char(15),
age int,
score int
)character set utf8;
4、查看 tab1 的表结构
desc tab1;
5、在tab1中随便插入2条记录
insert into tab1 values
(1,"李白",30,90),(2,"杜甫",30,88);
6、在tab1中的name和score两个字段插入2条记录
insert into tab1(name,score) values
("李清照",25),("王维",28);
7、查看tab1表中所有记录
select * from tab1;
8、查看tab1表中所有人的名字和成绩(score)
select name,score from tab1;
如何更改默认字符集
方法 |
通过更改MySQL配置文件实现 |
|
步骤 |
1、获取root权限 |
sudo -i |
2、备份配置文件 |
cd /etc/mysql/mysql.conf.d/ cp mysqld.cnf mysqld.cnf.bak |
|
3、更改mysqld.cnf配置 |
subl mysqld.cnf [mysqld] character_set_server=utf8 |
|
4、重启mysql服务 |
sudo /etc/init.d/mysql restart |
客户端把数据存储到数据库服务器上的过程
步骤 |
1、先连接到数据库服务器 |
2、选择库 |
|
3、创建或者修改表 |
|
4、断开与数据库的连接 exit; | quit; | \q; |
数据类型
数值类型 |
1、整型 (有符号和无符号unsigned) |
1. int 大整型(4个字节) 0~2**32 -1(42亿多) |
2. tinyint 微小整型(1个字节) 1)有负号(signed) 2)无负号(unsigned) : 0~255 age tinyint unsigned |
||
3.bigint 极大整型(8个字节) |
||
2、浮点型 |
1. float(4个字节,最多显示7个有效位) 用法:字段名 float(m,n) m总位数,n:小数位位数 |
|
2.decimal(最多显示28个有效位) 1).用法:字段名decimal(m,n) m总位数,n:小数位位数 2).存储空间: (整数部分和小数部分分开存储) 规则:将9 的倍数包装成4个字节 余数 字节 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字节 = 字节 |
||
字符类型 |
1、 char(定长) char(宽度值) |
char:浪费存储空间,性能高
|
2、 varchar(变长) varchar(宽度值) |
varchar:节省存储空间,性能低 |
|
枚举类型 |
只能在列举的 范围内选择 |
单选:字段名enum(值1,值2,…) |
多选:字段名set(值1,值2,…) 插入记录的时候: “girl,Python,sthdy” |
||
日期时间类型 |
练习:
1、 创建一个库 studb2,并在studb2中创建表tab2,字段要求如下:
id 整型
class 变长,宽度为20
age 微小整型,不能输入负数
height 浮点数,小数位为2位
2、 查看tab2表结构
3、 查看tab2字符集
4、 在tab2中插入2条完整记录
5、 查询所有表记录
6、 在tab2中的name和height 两个字段插入2条记录
7、 查询所有学生的姓名和身高
8、 查询身高大于160的学生信息
数值类型的宽度和字符类型的宽度区别
1、 数值类型宽度为显示宽度 只用于select查询显示 占用存储空间大小无关 用zerofill来显示效果 |
2、字符类型的宽度超过则无法存储 |
示例:id int(3) zerofill, |
表字段操作
1、语法 |
slter table 表名 执行动作; |
2、添加字段(add) |
alter table 表名 add 字段名 数据类型 (默认加到末尾)
|
alter table 表名 add 字段名 数据类型 first(默认加到最前面);
|
|
alter table 表名 add 字段名 数据类型 after 字段名;(指定位置)
|
|
3、删除字段(drop) |
alter table 表名 drop 字段名; |
4、修改字段的数据类型(modify) |
alter table 表名 modify 字段名 新数据类型 |
1、面试题
1、MySQL中的数据类型有:____ ____ ____ ____
2、关系型数据库的核心内容是 _关系_ 即 _二维表_
3、char和varchar的区别,各自的特点
4、
1)创建一个库school
2)在库中创建一个表students来存储学习信息
Id 显示宽度为3,位数不够用用0填充
name、age(要求不能输入负数)、score(浮点)、性别(单选)、likes爱好(多选)
3)查看students 的表结构
4)在students 中添加一个字段height,加在age字段之后
5)将score 字段的数据类型改为decimal
6)在students 中插入3条完整记录
7)查看所有学生的姓名和成绩
8)查看没有及格的学生的信息