mysqlDay1.txt
1MySQL概述:
1.什么是数据库:
cunchushujudecangku
2.都有那些公司在用数据库
金融机构, 游戏网站, 购物网站, 论坛网站 .....
3.提供数据库服务的软件:
1.软件的分类:
2 1 7
MySQL, SQL_Server, Oracle, Mariadb, DB2, MongoDB ...
MySQL SQL_Server(不支持跨平台,微软的)
2. 在生产环境中, 你如何选择使用那个数据库
1.是否开源
开源软件(开源不一定免费):MySQL, Mariadb MongoDB
商业软件:Oracle, DB2, SQL_Server
商业软件:oracle, DB2, SQL_Server
2. 是否跨平台:
不跨平台: SQL_Server(windows)
跨平台的: MySQL, Mariadb, DB2, MongoDB
不跨平台:SQL_Server
跨平台的:
3.公司的类型:
商业软件: 政府部分, 金融机构
开源软件: 游戏网站, 购物网站, 论坛网站....
4. MySQL的特点:
1. 关系型数据库
关系型数据库的特点:
1. 数据是以行和列的形式去存储的
2. 这一系列的行和列称为表
3. 表中的每一行叫一条记录
4. 表中的每一列叫一个字段 列名(字段名)
5. 表和表之间的(逻辑关联)叫做关系
表与表之间的逻辑关联叫做关系
2. 示例:
1. 关系型数据库存储(硬盘上读取)
表1, 学生信息表
姓名 年龄 班级
牛郎 22 AID1803
织女 23 AID1801
表2, 班级信息表
班级 班主任
AID1803 LUDADA
AID1801 孙大大
2 非关系型数据库中存储(性能高于关系型数据库):
{"姓名":"牛郎", "年龄":22, "班级":AID1803, "班主任":"卢大大"}
{"姓名":"织女", "年龄":23, "班级":AID1801,}
2. 跨平台
可以在Unix, Linux, Windows 上运行数据库服务
3. 支持多种编程语言:
Python Java php.....
2. MySQL的安装:
1, Ubuntu安装MySQL服务, RedHat(红帽), CentOS, Ubuntu
1.安装服务端:
sudo apt-get install mysql-server
yum -y install mysql-server
2,安装客户端
sudo apt-get install mysql-client
2. Windows安装MySQL服务
1. 下载MySQL 安装包(windos)
mysql - installer ***5.7. ***.msi
2 双击, 按照安装教程
3启动和连接MySQL服务
1.服务端启动
1.查看MySQL服务状态
sudo /etc/init.d/mysql status
2. 停止,启动, 重启 MySQL服务
sudo/etc/init.d/mysql stop | start | restart
2 客户端连接
1.命令格式
mysql -h主机地址 -u用户名 -p密码
mysql -hlocalhost -uroot -p123456
2本地连接可以省略, -h 选项
mysql -u用户名 -p密码
mysql -uroot -p123456
3.退出
quit
exit
4基本的SQL命令:
1. SQL命令的使用规则
1.每条SQL命令必须以;结尾
2.SQL命令不区分大小写
3.使用\c来终止命令的执行(Liunx中 ctrl + c)
mysql -uroot -p
password:123456
2.库的管理:
1.库的基本操作
1.查看已有的库
show databases;
2.创建库
create database 库名 default charset = utf8;
create database 库名;
3查看创建库的语句:
show create database 库名;
4.查看当前所在的库
select database();
5切换库
use 库名
6 查看库中已经有的表
show tables;
7. 删除库
drop database 库名;
2.库名的命令规则:
1.可以使用数字,字母,__但不能使用纯数字
2. 库名区分字母大小写
3. 库名具有唯一性
4. 不能使用特殊字符和MySQL关键字
3.练习
1.创建库AID1803db, 指定字符集为utf8
create database AID1803db default charset=utf8
2.切换到该库AID1803
3.查看当前所在的库
4.查看库中已经存在的表
5.查看AID1803db的字符集(查看创建库的语句)
6.删除库AID1803db
3表的管理:
1.表的基本操作:
1. 创建表(指定字符集):
create table 表名(
字段名 数据类型
字段名 数据类型
... ....
);
2.查看创建表的语句(字符集)
show create table 表名
3.查看表结构
desc 表名;
4 删除表
drop table(表名)
2.表的命名规则(同库的命名规则相同)
3.练习
1. 创建库python
create database python
2. 在库中python 中创建表, py_mysql,字段:id int
name char(20) 指定字符集utf8
create table py_mysql(
id int,
name char(20)
)default charset = utf8;
3. 查看表py_mysql的字符集以及存储引擎
show create table py_mysql
4. 查看py_mysql的表结构
desc py_mysql
5. 删除表py_mysql
drop py_mysql
4.注意:
1.所有的数据都是以文件的形式存放在数据库目录下
2. 数据库目录: /var/lib/mysql
5 更改库,表的字符集
1. 方法
通过更改mysql服务的配置文件来实现
2, 步骤
1. 获取root 权限
sudo -i
2. 切换到配置文件的所在路径
cd /etc/mysql/mysq.conf.d
3 备份
cp -p mysqld.cnf mysqld.cnf.bak( -p选项复制源文件权限 )
4 用vi打开 mysqld.cnf 在 [mysqld]
character_set_server = utf8 保存退出
5 重启mysql服务
etc/init.d/mysql restart
etc/init.d/mysql reload(重载配置文件)保证线上的业务不断
etc/init.d/mysql restart
6 表记录的管理
1. 在表里插入记录
1. insert into 表名 values(值1),(值2).....,(值N)
2. insert into 表名 (字段名列表) values(值1),...(值N)
insert into t1 values("Tom",22, 100),("leiwang", 22, 33)
insert into t1(name, age) values("xiaochao", 23), ("Lucy",33)
2, 查询表记录
1. select * from 表名
2. select 字段1, 字段2,......,字段名N from 表名;
3, 练习:
1. 查看所有的库
2. 创建新库 stu1
3. 在库内 stu1中创建表 students, 字段要求如下:
1. id int
2. name char(15)
3. age int
4 address char(20)
4 查看表student 的表结构
5 在表中插入一条记录
6 在表中一次性插入2条记录
7 查看所有的表记录
8 删除表
9 删除库
7客户端把数据存储到数据库服务器上的过程
1. 连接到数据库服务器 mysql -uroot -p123456
2. 选择一个库: use库名
3. 创建表或者修改表: create ....
4. 断开与数据库服务器的链接 : exit | quit | \q
客户端吧数据存储到数据库服务器上的过程
1. 首先连接数据库服务器
2. 选择一个库
3.创建表或者修改表
4 断开数据库服务器的链接
8名词介绍:
1. DB(database)
DB就是数据库, 存储数据的仓库
2. DBMS(database management system)
数据库管理系统
管理数据库的软件: MySQL, Orcle, MongoDB .....
3. DBS(database system)
数据库系统
DBS = DB(存储)+DBMS(数据库软件) + 数据库应用(财务管理系统,人事管理系统) + 用户
9. 数据类型(数据库支持所有的数据类型存储):
1.数值类型(有符号signed和无符号unsigned)
1.整型
1. int 大整型(4个字节)
取值范围: 0 ~ 2 ** 32 -1 (42亿多)
2. tinyint 微小整形(1个字节)
1. 有符号(signed默认): -128 ~127
2. 无符号(unsigned): 0 ~ 255
3 smallint 小整形(2个字节)
取值范围: 0~65535
4 bigint 极大整型(8个字节)
取值范围 0 ~ 2 ** 64 -1
2.浮点型
1. float(4个字节,最多显示7个有效位) #
1.用法
字段名 float(m, n) m:表示总位数, n: 小数位位数
salary float(5, 2) 取值范围 -999.99 --- 999.99
2. 注意:
1. 浮点型插入整数时会自动补全小数位位数
2. 小数位如果多于指定的位数, 会对指定位的下一位进行四舍五入
float(5, 2) -->23.128 -->23.13
2 double(8个字节, 最多显示15个有效位)
1. 用法
字段名 double(m, n)
3. decimal(M+2 个字节, 最多显示28个有效位) #
1.用法
decimal(28, 5)
2.字符类型
1 char(定长)
2. 取值范围:( 1 ~ 255)
3. 不给定宽度就默认为1
2. varchar(变长)
1.取值范围: 1~65535
2.注意
1. varchar没有默认宽度,必须给定一个宽度值
2. name varchar(20)
3. char 和varchar的特点
1. char:
浪费存储空间,但是性能高
2. varchar:
节省存储空间,但是性能低
1. name char(20)(浪费存储空间) 给定固定宽度存储空间,
2. name varchar(20) 你存进来多少就占多少内存空间
4.练习:
1. 创建一个表stuinfo, 字段要求如下,
学号 id int (大整型)
姓名: name 边长, 宽度
3.枚举类型
1.定义:
字段值只能在列举的范围内选择
2.enum(.....)单选(最多有65535个不同的值)
字段名(值1, 值2, ..., 值N)
3. set(....) 多选(最多有64不同的值)
字段名 set(值1,值2,.....,值N)
插入记录时 ”python, boy, mysql"
en
4.日期时间类型
1. year : 年 YYYY
2. date : 日期 YYYYMMDD
3. time : 时间: 时分秒
4. datetime : 日期时间: 年月日,时分秒
5. timestamp : 日期时间 YYYYMMMDDDHHMMSS
1. year : 年 yyyy
2. date : 日期 yyyymmmmdddd
3. time : 时分秒
4. datetime : 日期时间: 年月日, 时分秒
5. timestamp : 日期时间,yyyyymmmmmdddhhmmmss
6. 注意:
1. 插入记录时datetime字段不给值默认返回NULL
2. 插入记录时timestamp字段不给值默认返回系统当前时间
create table t6(
id int,
name varchar(15),
age tinyint unsigned,
birth_year year,
birth_day date,
class time,
meeting datetime
)default charset = utf8;
10: 表字段的操作
1. 语法: alter table 表名 执行动作
1. 添加字段:
alter table 表名 add 字段名 数据类型 first | after 字段名;
alter table 表名 add 字段名 数据类型 first | after 字段名;
2.删除字段
alter table 表名 drop 字段名;
3 修改字段数据类型
alter table 表名 modify 字段名 新数据类型;
# 在修改数据类型时会受到表中原有数据的限制
4. 修改字段名(不常用)
alter table 表名 change 旧名 新名 数据类型;
5 修改表名 (不常用)
alter table 表名 rename 新表名
1.面试题:
1. 填空题
1. MySQL中的数据类型有__四种_
2. 关系型数据库的核心内容是 : 关系 即 二维表
2.简答题
1. 简述客户端把数据存储到数据库服务器上的过程
2. char 和varchar的特点的区别, 各自有的特点
浪费存储空间,性能快
varchar 不浪费存储空间, 性能慢
3.操作题:
1. 创建一个学校的库 school
2. 在库中创建一张表, students 来存储学生信息
3. 学号,姓名,年龄, 成绩, 性别, 爱好, 入学时间
4 查看students的表结构
5 在students中添加一个字段id, 添加在第一列
6 在表中随意插入5条记录
7 查看所有的学生的信息
8 查看所有学生姓名 ,成绩
9 练习使用vim 文本编辑器
create table students1(
id int,
name varchar(11),
age tinyint unsigned,
score int,
sex enum("girl", "boy"),
likes set('women','python','mysql'),
entershcool date);
单例模式:
单例模式的存在的目的是保证当前内存中仅存在单个实例
python中 几种创建单例模式的方法:
1. 使用模块
2.__new__
3. __init__
__new__ 在 __init__之前调用
3. 装饰器
4. 元类
1MySQL概述:
1.什么是数据库:
cunchushujudecangku
2.都有那些公司在用数据库
金融机构, 游戏网站, 购物网站, 论坛网站 .....
3.提供数据库服务的软件:
1.软件的分类:
2 1 7
MySQL, SQL_Server, Oracle, Mariadb, DB2, MongoDB ...
MySQL SQL_Server(不支持跨平台,微软的)
2. 在生产环境中, 你如何选择使用那个数据库
1.是否开源
开源软件(开源不一定免费):MySQL, Mariadb MongoDB
商业软件:Oracle, DB2, SQL_Server
商业软件:oracle, DB2, SQL_Server
2. 是否跨平台:
不跨平台: SQL_Server(windows)
跨平台的: MySQL, Mariadb, DB2, MongoDB
不跨平台:SQL_Server
跨平台的:
3.公司的类型:
商业软件: 政府部分, 金融机构
开源软件: 游戏网站, 购物网站, 论坛网站....
4. MySQL的特点:
1. 关系型数据库
关系型数据库的特点:
1. 数据是以行和列的形式去存储的
2. 这一系列的行和列称为表
3. 表中的每一行叫一条记录
4. 表中的每一列叫一个字段 列名(字段名)
5. 表和表之间的(逻辑关联)叫做关系
表与表之间的逻辑关联叫做关系
2. 示例:
1. 关系型数据库存储(硬盘上读取)
表1, 学生信息表
姓名 年龄 班级
牛郎 22 AID1803
织女 23 AID1801
表2, 班级信息表
班级 班主任
AID1803 LUDADA
AID1801 孙大大
2 非关系型数据库中存储(性能高于关系型数据库):
{"姓名":"牛郎", "年龄":22, "班级":AID1803, "班主任":"卢大大"}
{"姓名":"织女", "年龄":23, "班级":AID1801,}
2. 跨平台
可以在Unix, Linux, Windows 上运行数据库服务
3. 支持多种编程语言:
Python Java php.....
2. MySQL的安装:
1, Ubuntu安装MySQL服务, RedHat(红帽), CentOS, Ubuntu
1.安装服务端:
sudo apt-get install mysql-server
yum -y install mysql-server
2,安装客户端
sudo apt-get install mysql-client
2. Windows安装MySQL服务
1. 下载MySQL 安装包(windos)
mysql - installer ***5.7. ***.msi
2 双击, 按照安装教程
3启动和连接MySQL服务
1.服务端启动
1.查看MySQL服务状态
sudo /etc/init.d/mysql status
2. 停止,启动, 重启 MySQL服务
sudo/etc/init.d/mysql stop | start | restart
2 客户端连接
1.命令格式
mysql -h主机地址 -u用户名 -p密码
mysql -hlocalhost -uroot -p123456
2本地连接可以省略, -h 选项
mysql -u用户名 -p密码
mysql -uroot -p123456
3.退出
quit
exit
4基本的SQL命令:
1. SQL命令的使用规则
1.每条SQL命令必须以;结尾
2.SQL命令不区分大小写
3.使用\c来终止命令的执行(Liunx中 ctrl + c)
mysql -uroot -p
password:123456
2.库的管理:
1.库的基本操作
1.查看已有的库
show databases;
2.创建库
create database 库名 default charset = utf8;
create database 库名;
3查看创建库的语句:
show create database 库名;
4.查看当前所在的库
select database();
5切换库
use 库名
6 查看库中已经有的表
show tables;
7. 删除库
drop database 库名;
2.库名的命令规则:
1.可以使用数字,字母,__但不能使用纯数字
2. 库名区分字母大小写
3. 库名具有唯一性
4. 不能使用特殊字符和MySQL关键字
3.练习
1.创建库AID1803db, 指定字符集为utf8
create database AID1803db default charset=utf8
2.切换到该库AID1803
3.查看当前所在的库
4.查看库中已经存在的表
5.查看AID1803db的字符集(查看创建库的语句)
6.删除库AID1803db
3表的管理:
1.表的基本操作:
1. 创建表(指定字符集):
create table 表名(
字段名 数据类型
字段名 数据类型
... ....
);
2.查看创建表的语句(字符集)
show create table 表名
3.查看表结构
desc 表名;
4 删除表
drop table(表名)
2.表的命名规则(同库的命名规则相同)
3.练习
1. 创建库python
create database python
2. 在库中python 中创建表, py_mysql,字段:id int
name char(20) 指定字符集utf8
create table py_mysql(
id int,
name char(20)
)default charset = utf8;
3. 查看表py_mysql的字符集以及存储引擎
show create table py_mysql
4. 查看py_mysql的表结构
desc py_mysql
5. 删除表py_mysql
drop py_mysql
4.注意:
1.所有的数据都是以文件的形式存放在数据库目录下
2. 数据库目录: /var/lib/mysql
5 更改库,表的字符集
1. 方法
通过更改mysql服务的配置文件来实现
2, 步骤
1. 获取root 权限
sudo -i
2. 切换到配置文件的所在路径
cd /etc/mysql/mysq.conf.d
3 备份
cp -p mysqld.cnf mysqld.cnf.bak( -p选项复制源文件权限 )
4 用vi打开 mysqld.cnf 在 [mysqld]
character_set_server = utf8 保存退出
5 重启mysql服务
etc/init.d/mysql restart
etc/init.d/mysql reload(重载配置文件)保证线上的业务不断
etc/init.d/mysql restart
6 表记录的管理
1. 在表里插入记录
1. insert into 表名 values(值1),(值2).....,(值N)
2. insert into 表名 (字段名列表) values(值1),...(值N)
insert into t1 values("Tom",22, 100),("leiwang", 22, 33)
insert into t1(name, age) values("xiaochao", 23), ("Lucy",33)
2, 查询表记录
1. select * from 表名
2. select 字段1, 字段2,......,字段名N from 表名;
3, 练习:
1. 查看所有的库
2. 创建新库 stu1
3. 在库内 stu1中创建表 students, 字段要求如下:
1. id int
2. name char(15)
3. age int
4 address char(20)
4 查看表student 的表结构
5 在表中插入一条记录
6 在表中一次性插入2条记录
7 查看所有的表记录
8 删除表
9 删除库
7客户端把数据存储到数据库服务器上的过程
1. 连接到数据库服务器 mysql -uroot -p123456
2. 选择一个库: use库名
3. 创建表或者修改表: create ....
4. 断开与数据库服务器的链接 : exit | quit | \q
客户端吧数据存储到数据库服务器上的过程
1. 首先连接数据库服务器
2. 选择一个库
3.创建表或者修改表
4 断开数据库服务器的链接
8名词介绍:
1. DB(database)
DB就是数据库, 存储数据的仓库
2. DBMS(database management system)
数据库管理系统
管理数据库的软件: MySQL, Orcle, MongoDB .....
3. DBS(database system)
数据库系统
DBS = DB(存储)+DBMS(数据库软件) + 数据库应用(财务管理系统,人事管理系统) + 用户
9. 数据类型(数据库支持所有的数据类型存储):
1.数值类型(有符号signed和无符号unsigned)
1.整型
1. int 大整型(4个字节)
取值范围: 0 ~ 2 ** 32 -1 (42亿多)
2. tinyint 微小整形(1个字节)
1. 有符号(signed默认): -128 ~127
2. 无符号(unsigned): 0 ~ 255
3 smallint 小整形(2个字节)
取值范围: 0~65535
4 bigint 极大整型(8个字节)
取值范围 0 ~ 2 ** 64 -1
2.浮点型
1. float(4个字节,最多显示7个有效位) #
1.用法
字段名 float(m, n) m:表示总位数, n: 小数位位数
salary float(5, 2) 取值范围 -999.99 --- 999.99
2. 注意:
1. 浮点型插入整数时会自动补全小数位位数
2. 小数位如果多于指定的位数, 会对指定位的下一位进行四舍五入
float(5, 2) -->23.128 -->23.13
2 double(8个字节, 最多显示15个有效位)
1. 用法
字段名 double(m, n)
3. decimal(M+2 个字节, 最多显示28个有效位) #
1.用法
decimal(28, 5)
2.字符类型
1 char(定长)
2. 取值范围:( 1 ~ 255)
3. 不给定宽度就默认为1
2. varchar(变长)
1.取值范围: 1~65535
2.注意
1. varchar没有默认宽度,必须给定一个宽度值
2. name varchar(20)
3. char 和varchar的特点
1. char:
浪费存储空间,但是性能高
2. varchar:
节省存储空间,但是性能低
1. name char(20)(浪费存储空间) 给定固定宽度存储空间,
2. name varchar(20) 你存进来多少就占多少内存空间
4.练习:
1. 创建一个表stuinfo, 字段要求如下,
学号 id int (大整型)
姓名: name 边长, 宽度
3.枚举类型
1.定义:
字段值只能在列举的范围内选择
2.enum(.....)单选(最多有65535个不同的值)
字段名(值1, 值2, ..., 值N)
3. set(....) 多选(最多有64不同的值)
字段名 set(值1,值2,.....,值N)
插入记录时 ”python, boy, mysql"
en
4.日期时间类型
1. year : 年 YYYY
2. date : 日期 YYYYMMDD
3. time : 时间: 时分秒
4. datetime : 日期时间: 年月日,时分秒
5. timestamp : 日期时间 YYYYMMMDDDHHMMSS
1. year : 年 yyyy
2. date : 日期 yyyymmmmdddd
3. time : 时分秒
4. datetime : 日期时间: 年月日, 时分秒
5. timestamp : 日期时间,yyyyymmmmmdddhhmmmss
6. 注意:
1. 插入记录时datetime字段不给值默认返回NULL
2. 插入记录时timestamp字段不给值默认返回系统当前时间
create table t6(
id int,
name varchar(15),
age tinyint unsigned,
birth_year year,
birth_day date,
class time,
meeting datetime
)default charset = utf8;
10: 表字段的操作
1. 语法: alter table 表名 执行动作
1. 添加字段:
alter table 表名 add 字段名 数据类型 first | after 字段名;
alter table 表名 add 字段名 数据类型 first | after 字段名;
2.删除字段
alter table 表名 drop 字段名;
3 修改字段数据类型
alter table 表名 modify 字段名 新数据类型;
# 在修改数据类型时会受到表中原有数据的限制
4. 修改字段名(不常用)
alter table 表名 change 旧名 新名 数据类型;
5 修改表名 (不常用)
alter table 表名 rename 新表名
1.面试题:
1. 填空题
1. MySQL中的数据类型有__四种_
2. 关系型数据库的核心内容是 : 关系 即 二维表
2.简答题
1. 简述客户端把数据存储到数据库服务器上的过程
2. char 和varchar的特点的区别, 各自有的特点
浪费存储空间,性能快
varchar 不浪费存储空间, 性能慢
3.操作题:
1. 创建一个学校的库 school
2. 在库中创建一张表, students 来存储学生信息
3. 学号,姓名,年龄, 成绩, 性别, 爱好, 入学时间
4 查看students的表结构
5 在students中添加一个字段id, 添加在第一列
6 在表中随意插入5条记录
7 查看所有的学生的信息
8 查看所有学生姓名 ,成绩
9 练习使用vim 文本编辑器
create table students1(
id int,
name varchar(11),
age tinyint unsigned,
score int,
sex enum("girl", "boy"),
likes set('women','python','mysql'),
entershcool date);
单例模式:
单例模式的存在的目的是保证当前内存中仅存在单个实例
python中 几种创建单例模式的方法:
1. 使用模块
2.__new__
3. __init__
__new__ 在 __init__之前调用
3. 装饰器
4. 元类