2017-8-28 valentine's day mysql 入门
2017-08-28 19:09
246 查看
8月28日上课内容(MySQL第一天)
(一)再说LAMP架构
温馨提示:
今天的任务很大,请做好思想准备
LAMP架构
资源获取过程: 静态资源:Client – http协议 –> httpd服务器 动态资源:Client – http协议 –> httpd –> PHP(libphp5.so模块) –> mysql协议 –> MySQL服务器
httpd + php 的组合方式分类
1:把PHP编译成为httpd的模块,httpd安装libphp5.so模块 2:使用cgi协议 3:使用fastcgi协议
PHP执行引擎(不讲,可以了解下)
zend 执行引擎
如何快速部署LAMP
1:CentOS 6: (1)PHP以模块的形式嵌入httpd 安装: httpd , php, php-mysql , mysql-server (2)PHP以独立的daemon进程运行(FastCGI模式) 安装:httpd , php-fpm, php-mysql , mysql-server 2:CentOS 7: (1)PHP以模块的形式嵌入httpd 安装: httpd , php, php-mysql , mysql-server (2)PHP以独立的daemon进程运行(FastCGI模式) 安装:httpd , php-fpm, php-mysql , mysql-server
PHP介绍
1:配置文件 主配置文件:/etc/php.ini 其他配置文件:/etc/php.d/*.ini 2:修改配置文件后,如何重启PHP 对于模块嵌入模式来说:重启httpd服务,因为PHP是httpd的模块 对于FastCGI模式来说:重启php-fpm服务 3:想了解更多PHP服务配置和PHP开发,请移步到 php.ini的核心配置选项文档为:http://php.net/manual/zh/ini.core.php php.ini的配置选项列表:http://php.net/manual/zh/ini.list.php
(二)MySQL入门[/code]
前言:
1:数据库SQL语言
1:DDL:数据定义语言
create alter drop
2:DML : 数据操作语言
insert delete update select
3:DCL: 数据控制语言
grant revoke
2:DataBase
Management System(数据库管理系统)
RDBMS:Relational
DataBase Management System(关系型数据库管理系统)
MySQL
1:单进程,多线程
2:用户连接:通过线程来实现
3:事物(transaction):简单的说就是将多个操作作为一个原子性整体,要么全部执行,要么都不执行。事物最鲜明的特性就是事物的原子性
4:回滚操作:rollback
5:一个存储系统是否支持事物,测试标准
ACID机制:
A: 原子性
C:一致性
I:隔离性
D:持久性
数据库结构
1:表
为了满足范式的设计,将一个数据集合拆分为多个
2:约束:constraint,向数据表中插入数据要遵循限制规范
主键约束:一个或多个字段的组合,填入主键中的数据必须不同于已经存在的数据,不能为空
唯一键约束:一个或多个字段的组合,填入主键中的数据必须不同于已经存在的数据,可以为空
外键约束:一个表中能够插入的数据取决于另外一张表的主键的数据
自定义约束:取决于表达式的要求
3:索引
将表中的某一个或某些字段抽取出来,单独将其组织在一个独特的数据结构中
4:常用的索引类型
树形机构
hash结构
注意:索引有助于读请求,但不利于写请求
5:关系运算
选择:选择符合条件的行
投影:选择符合条件的字段
连接:将多张表关联起来
6:数据抽象
物理层:决定数据的存储格式,及如何将数据组织成为物理文件
逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系
视图层:描述DB中的部分数据
7:关系模型的分类
关系模型
实体-关系模型
基于对象的关系模型
半结构化的关系模型
MySQL的发行版本
1:社区版本
2:企业版本
(三)MySQL安装
前言:
Mariadb的安装方式
1:RPM包安装
(a)发行商提供
(b)RPM包制作者提供
2:源码包
3:二进制程序包安装
使用二进制程序包安装Mariadb
第一步:准备数据库目录
mkdir -pv /mydata/data # 所有的MySQL数据保存在这个目录下
useradd -r mysql # 如果mysql用户存在就不要创建了
chown -R mysql.mysql /mydata/data # 为了mysql能够向目录里面写数据,因此让mysql用户对数据目录具有读写权限
第二步:安装二进制程序包
tar xf mariadb-5.5.54-linux-x86_64.tar -C /usr/local # 解压
cd /usr/local # 切入当前/usr/local
ln -sv mariadb-5.5.54-linux-x86_64 mysql # 制作软连接
cd /usr/local/mysql # 切入mysql二进制程序
chown -R root:mysql ./* # 修改属主和属组
cp support-files/my-large.cnf /etc/my.cnf # 拷贝配置文件
vi /etc/my.cnf 在mysqld下面添加如下指令 # 编辑配置文件
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON
scripts/mysql_install_db --user=mysql --datadir=/mydata/data # 初始化数据库
ll /mydata/data # 查看数据目录是否有数据
cp support-files/mysql.server /etc/rc.d/init.d/mysqld # 拷贝服务启动文件
chkconfig --add mysqld # 使mysqld服务被chkconfig管控
第三步:启动服务
service mysqld start
第四步:将程序路径添加到环境变量
vi /etc/profile.d/mysqld.sh
export PATH=/usr/local/mysql/bin:$PATH
. /etc/profile.d/mysqld.sh # 运行脚本
第五步:
mysql_secure_installation # 运行安全程序
第五步:
简要说明mysql配置文件的读取顺序
/etc/my.cnf -> /etc/my.cnf.d/*.cnf -> ~/.my.cnf
(四)MySQL基础
前言:
MySQL的程序组成
1:客户端
mysql:客户端程序
mysqldump:mysql备份工具
mysqladmin:mysql管理工具
mysqlbinlog:二进制日志查询工具
2:服务端
mysqld:服务端程序
mysqld_safe :建议安全运行的服务端程序
mysqld_multi:多实例mysql程序
监听两类套接字地址
3:socket套接字的保存路径
(1):RPM包安装的MySQL
/var/lib/mysql/mysql.sock
(2):二进制或者源码安装的MySQL
/tmp/mysql.sock(不要把它删除了,我就删除过,使得客户端无法连接服务端)
(五)客户端程序mysql
前言:
使用格式
mysql [选项] [数据库]
常用选项
-h:指定服务端主机地址
-u: 指定登入的用户名
-p:指明密码
-D:指明登入的数据库
-e:连接之后直接运行SQL语句,不进入交互式模式(可以在脚本中使用)
注意点
SQL语句必须以分号结尾
\G:结尾表示以以竖行显示
数据类型
数据类型
char():区分字符大小写,不可变
binary():区分字符大小写 ,不可变
varchar():可变
varbinary():可变
text()
blob()
set()
enum()
int()
float()
double()
decimal()
date()
time()
datetime()
timestamp()
修饰符
unsigned
not null
default
SQL语句
DDL:数据库定义语言
create , alter , drop
DML:数据库操作语言
insert , delete , update , select
DCL:数据库控制语言
grant , revoke
获取帮助
例如:help create
查看所支持的字符集
show character set
查看支持排序规则:
show collation
(六)DDL语言打通关
前言:
数据库
创建库
create database uplooking;
删除库
drop database uplooking;
修改库
alter database uplooking character set = utf8
alter database uplooking collate=utf8_general_ci
表
创建表
create table home (id int not null primary key auto_increment, name varchar(250) not null, class varchar(250) not null);
查看表结构
desc home;
修改表
添加字段:alter table home add gender enum('f','m');
删除字段:alter table home drop gender;
修改字段:
alter table home change name username varchar(100) after id;
alter table home modify username varchar(100) first;
删除表
drop table home;
(七)DML语言打通关
前言:insert, delete, update, select
insert
insert into home (class,username) values ('ops', '运维开发'), ('opsdev', '运维开发'), ('开发', 'java开发');
update
update home set class = '开发部门' where id = 1;
delete
delete from home where class = '开发';
select
查询表上的所有的数据
select * from home;
查询部分数据
select id,class from home;
# 还可以取个别名
select id as num,class from home;
使用where子句过滤
# 可以使用的算数运算符:>, < , >=, <=, ==, !=
# 可以使用连接词:and , or
select * from home where id >= 2;
select * from home where id <= 2 and id >1;
select * from home where id between 1 and 2;
# 可以使用like做模糊匹配(%:表示任意长度的字符,_:表示任意单个字符)
select * from home where class like 'ops%';
# 可以使用null对值进行判断
select * from home where id is not null;
select * from home where id is null;
使用order指定排序(默认是asc,升序排列)
select * from home order by id desc;
(八)DCL语言打通关
前言:grant revoke
grant
1:先创建用户,再授权
create user yhy@'172.16.19.%' identified by '123456';
grant all on *.* to yhy@'172.16.19.%';
flush privileges;
2:创建用户的同时给用户授权
grant all on *.* to yhy@'172.16.19.%' identified by '123456';
flush privileges;
3:给用户授予某些权限
show grants for yhy@'172.16.19.%';
revoke
revoke select ON *.* from yhy@'172.16.19.%';
flush privileges;
查看用户的权限
show grants for yhy@'172.16.19.%';
删除用户
delete from mysql.user where user = "yhy";
flush privileges;
(九)select查询语句详解
前言:
1:where子句:指明过滤条件
可以使用的算数运算符:+, -, * ,/ ,= ,!= ,<=, >=
between 较小的数 and 较大的数
in (较小的数,较大的数)
is null 或 is not null
like模糊匹配
例如:
select * from home where id >= 2;
select * from home where id <= 2 and id >1;
select * from home where id between 1 and 2;
select * from home where id in (1,2); # 从1和2中取值
select * from home where class like 'ops%';
select * from home where id is not null;
select * from home where id is null;
2:group by 子句:根据指定的查询条件将查询结构进行分组,用于做聚合运算
使用聚合函数:avg( ) , max( ) , min( ) , count( ), sum( )
select age,gender from students group by gender;
select avg(age),gender from students group by gender;
select min(age), gender from students group by gender;
select max(age), gender from students group by gender;
select count(id), gender from students group by gender;
3:having子句:将分组之后的结果再次过滤
select avg(age) as 'average_age', gender from students group by gender having average_age > 50;
4:order by子句 :根据指定的字段对查询结果进行排序,默认为升序,降序使用关键字desc
select name,age from students order by age desc;
5:limit 子句:对查询的结果进行输出行数的限制
select name,age from students order by age desc limit 8; # 选前8行
select name,age from students order by age limit 4, 2; # 前4个不选,从第五行开始选2行
总结单表查询次序
子句的书写顺序:
where -> group by -> having -> order by -> limit
例如:
select *,avg(score) as '各班平均成绩' from students where id > 1 group by class having avg(score) > 55 order by score desc limit 3 ;
一波小小练习来袭
1:在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄
2:以Class为分组依据,显示每组的平均年龄
3:显示第2题中平均年龄大于50的分组及平均年龄
4:以年龄排序后,显示年龄最大的前6位同学的信息
5:查询年龄大于等于30岁,小于等于74岁的同学的信息,用三种方法
相关文章推荐
- mysql执行SQL脚本,SQL语句入门
- 开源电子商务之OFBIZ10.04组件开发入门 :使用外部数据库MySql
- 21分钟 MySQL 入门教程
- MySQL学习日记1入门-安装MySQL
- MySql入门(2-2)创建数据库
- MySQL 入门教程
- SQL快速入门 ( MySQL快速入门, MySQL参考, MySQL快速回顾 )
- MySQL入门之数据完整性约束与表维护
- Mysql入门系列:MYSQL表达式求值和MYSQL类型转换
- 入门关系型数据库mysql--(1)
- mysql 入门操作
- win10系统下MySQL及MySQL Workbench安装使用入门
- Mysql使用入门
- mysql 数据库 day_04
- Mysql 安装和使用入门
- Spring MVC + Spring + Hibernate + mysql 注册登陆入门实例
- BestCoder #Valentine's Day Round 1002 || hdu 5175
- PostgreSQL 数据操作入门,简单对比MySQL
- 命令行使用MySql的入门基础语句
- 一步一步学MySQL----1 数据库入门