1、MySQL概述
1、什么是数据库 存储数据的仓库 2、哪些公司在用数据库 金融机构、游戏网站、购物网站、论坛网站 ... ... 3、数据库服务软件 1、软件分类 MySQL、Oracle、SQL_Server、MongoDB、DB2、Maraidb 2、生产环境中如何选择使用哪个数据库软件 1、是否开源 1、开源软件 :MySQL、Mariadb、MongoDB 2、商业软件 :Oracle、DB2、SQL_Server 2、是否跨平台 1、不跨平台 :SQL_Server 2、跨平台 :... 3、公司的类型 1、商业软件 :政府部门、金融机构 2、开源软件 :游戏网站、购物网站、论坛网站 ... 4、MySQL特点 1、关系型数据库 1、数据以 行和列(表) 的形式去存储的 2、表中行:一条记录 列:一个字段 3、表和表之间的逻辑关联叫关系 2、示例 1、关系型数据库存储 表1、学生信息表 姓名 年龄 班级 星矢 25 三班 水冰月 23 六班 表2、班级信息表 班级 班主任 三班 大空翼 六班 松人 2、非关系型数据库存储 {"姓名":"星矢","年龄":25,"班级":"三班","班主任":"大空翼"} {"姓名":"水冰月","年龄":23,"班级":"六班","班主任":"松人"} 2、跨平台 在Windows、Linux、Unix运行数据库服务 3、支持多种编程语言 python、java、php ... ... 5、数据库软件、数据库、数据仓库 (面试要点) 1、数据库软件 看的见、可操作,实现数据库的逻辑功能 2、数据库 逻辑概念,存储数据,侧重于存储 3、数据仓库 数据量特别庞大,主要用于数据分析、数据挖掘
数据库 :user表
数据仓库 :哪个时间段用户登录最多,哪个用户购物最多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 作用 :修复依赖关系 2、Windows安装MySQL服务 1、下载安装包(windows) mysql-installer***5.7***.msi 2、双击安装 3、Mac安装MySQL 1、下载安装包 2、设置环境变量 1、vi .bash_profile 2、添加如下内容保存退出 export PATH=${PATH}:/usr/local/mysql/bin 3、终端 :source .bash_profile 4、验证 :mysql -uroot -p密码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 -p4、基本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 库名; 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; 7、查看库 testdb2 中的所有表 show tables; 8、删除库 testdb drop database testdb; 9、删除库 testdb2 drop database testdb2; 3、表的管理 1、表的基本操作 1、创建表(别忘了选择库,指定字符集) create table 表名( 字段名 数据类型, 字段名 数据类型, 字段名 数据类型 )character set utf8; 2、查看创建表的语句(字符集、存储引擎) show create table 表名; 3、查看表结构 desc 表名; 4、删除表 drop table 表名; 2、练习 1、创建库 python1 create database python1; 2、在python1库中创建表 pymysql,指定字符集为utf8,字段有3个: id int, name char(15) ,age int use python1; create table pymysql( id int, name char(15), age int )character set utf8; 3、查看表 pymysql 的字符集和存储引擎 show create table pymysql; 4、查看表 pymysql 的表结构 desc pymysql; 5、删除表 pymysql drop table pymysql; 6、创建库 python2 create database python2; 7、在库 python2 中创建表t1并指定字符集utf8,字段有 username char(20),password char(20) use python2;select database();
create table t1( username char(20), password char(20) )character set utf8;show tables;
8、查看t1的表结构 desc t1; 9、删除表 t1 drop table t1; 10、删除库 python2 drop database python2; 4、注意 1、所有数据都是以文件形式存储在数据库目录下/var/lib/mysql 5、表记录管理 1、插入(insert) 1、insert into 表名 values(值1),(值2); 2、insert into 表名(字段1,字段2) values(值1),(值2); 2、查询(select) 1、select * from 表名 where 条件; 2、select 字段1,字段2 from 表名 where 条件; 3、练习 1、查看所有库 show databases; 2、创建新库 studb 3、在库studb中创建表 tab1,指定字符集utf8 字段(4个): id、name、age、score use studb; create table tab1( id int, name char(20), age int, score int )character set utf8; 4、查看tab1的表结构 desc tab1; 5、在tab1中任意插入2条记录 insert into tab1 values (1,"唐伯虎",23,88), (2,"祝枝山",22,60); 6、查询所有表记录 select * from tab1; 7、在tab1中name、score两个字段插入2条记录 insert into tab1(name,score) values ("文征明",55), ("秋香",99); 8、查看表tab1中所有人的姓名和年龄 select name,age from tab1; 9、查看表tab1中成绩及格的学生信息(高于60分) select * from tab1 where score>60;5、如何更改库的默认字符集 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 3、Mac本 vi /etc/my.cnf 写入: [mysqld] character_set_server = utf86、客户端把数据存储到数据库服务器上的过程 1、连接到数据服务器 :mysql -u用户名 -p 2、选择库 :use 库名 3、创建/修改表 :update 表名 4、断开与数据库连接 :exit; | quit; | \q;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个字节 3、练习 1、新建库studb2,并在库中创建表stuinfo,要求: id : 大整型 name : 字符类型,宽度为15 age : 微小整型,不能为负数 height : 浮点型,小数位为2位(float) money : 浮点型,小数位为4位(decimal) create database studb2; use studb2; create table stuinfo( id int, name char(15), age tinyint unsigned, height float(5,2), money decimal(20,4)); 2、查看表结构 desc stuinfo; 3、查看表字符集和存储引擎 show create table stuinfo; 4、在表中插入1条完整记录 insert into stuinfo values (1,"小昭",26,165,8888.88); 5、查询所有表记录 select * from stuinfo; 6、在表中id、name和money三个字段插入2条记录 insert into stuinfo(id,name,money) values (2,"赵敏",200000),(3,"周芷若",18000.23); 7、查询所有学生的 编号、姓名和money select id,name,money from stuinfo; 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,...) 2、多选set likes set(值1,值2,...) ## 插入记录时 "study,python,mysql"作业:1、MySQL中数据类型有:___、___、___、___2、关系型数据库的核心内容是 关系 即 二维表3、简述客户端把数据存储到数据库服务器上的过程4、char和varchar的区别,各自的特点5、操作 1、创建一个学校的库 school 2、在库school中创建表students,字符集utf8 字段如下: id int 显示宽度为3,位数不够用0填充 姓名、年龄(不能为负数)、性别(单选)、成绩(浮点)、爱好(多选) 3、查看表结构 4、在表中任意插入3条完整记录,并查询显示 5、在表中id、姓名、成绩三个字段插入3条记录,并查询显示 6、查看所有学生的姓名和成绩 7、查看成绩及格的学生的姓名和成绩 8、更改配置文件,把默认字符集改为 utf8 9、重启MySQL服务,并建库验证