细数MySQL的过往

我与mysql数据库的不解之缘
初学者习惯window操作的可以看一下,以window平台操作mysql为例:
一、数据库的概述及安装
1.数据库的通俗概念?
从字面意思上来说,数据库就是存储数据的仓库。
2.不学习数据库是否可以对数据库进行操作?
当然可以,在python语言中,学习的IO流,通过pickle或json将数据对象,以二进制的形式或其他形式写出到一个新的文件中,该文件就是数据库文件,也就是数据库的最初始的状态。
3.我们对数据库文件的操作,在python语言中就是最简单的写入写出,即序列化和反序列化。
4.在这么复杂的情况下,数据库管理系统(DMBS Data Base Management System)诞生了,
一些公司和程序员为了更方便的管理数据,他们想了一些办法,专门研究一项技术来管理数据,让我们操作数据更加的方便直观,不需要再通过IO流的操作进行数据管理。

二、SQL概述
SQL,我们一般叫 ['sikw?l],SQL(Structured Query Language)全称为结构化查询语言。
SQL语言是不需要用户了解具体的数据存放方式,所以具体有不同底层结构的不同数据库系统可以使用相同的SQL语言来对数据进行管理。
通俗来讲,SQL就是用来和数据库打交道,用SQL语言完成和数据库的通信,SQL也是一套标准。但是,每一个数据库都有自己有而别人没有人的特性,当使用该数据库特性相关功能时,这时的SQL的语句可能就不是一套标准了,而是特有的。例如:目前我们学习的MySQL语句,以后改用微软的SQL Server、甲骨文的Oracle编写的语句也是通用的(90%的SQL语句都是通用的)。

三、什么是数据库?
数据库,通常是一个或一组文件,保存了一些符合特定规格的数据,数据库对应的英语单词是DataBase,简称DB;数据库软件称为数据库管理系统,英文简称DBMS,全称为DataBase Management System,例如:Oracle、MySQL、SQL Server、Sybase、informix、DB2等等。
四、MySQL的概述
MySQL最初是由“MySQL AB公司”开发的一套关系型数据库管理系统(RDBMS-Relation DataBase Management System)。MySQL不仅是最流行的开源数据库,而且是业界成长最快的数据库,每天有超过7万次的下载量,其应用范围从大型企业到专有的嵌入应用系统。
MySQL AB是由两个瑞典人和一个荷兰人:David Axmark、Allan Larsson和Michael“Monty”Widenius在瑞典创办的。
在2008年初,Sun Microsystems 收购了MySQL AB公司。在2009年,Oracle收购了Sun公司,使MySQL并入Oracle的数据库产品线。

五、MySQL的安装
在window系统下安装MySQL:
1.官网下载zip包;
2.解压zip包(建议不要解压到C盘,安装路径也不要用特殊字符)
3.将mysql的bin路径配置到环境变量path中(方便在控制台使用mysql)
4.修改my.mini文件
basedir=MySQL主目录
datadir=MySQL主目录/data
5.以管理员的身份运行cmd
将路径切换到mysql的bin路径
6.安装:
cmd:mysqld install (安装mysql服务)
cmd:mysql remove (移除mysql服务)
7.启动服务:
(1)手动去服务面板去启动
(2)net start/stop/status 服务名称
如:net start mysql 启动mysql服务
net stop mysql 停止mysql服务
上面是zip包的安装方法和步骤,如果是msi版,一直下一步,直至结束,可以随便在网上搜一下勾选方法。
在Linux下安装MySQL:
1.源码安装:
下载源码:make &&make install
2.apt/yum根据不同的Linux选择不同的安装方法
sudo apt-get install mysql-server mysql -client
3.root密码需要验证设置
验证MySQL是否装成功:
mysql -u用户名称 -p用户密码
mysql -uroot -p
退出方式:
exit
quit
\q
Ctrl+C(Linux:Ctrl+Z)

六、配置MySQL远程登录的(必要性)
1.需要修改MySQL的配置文件(Linux)
注释掉bind-address或者将该选项值修改0.0.0.0
2.进入到MySQL数据库
3.执行如下命令:
show databases; # 查询当前数据库系统的所有数据库
use mysql; # 进入到mysql数据库中
show tables; # 显示当前数据库下的所有表
update user set host="%" where user=“root”;

七、SQL的分类
1.数据库定义语言(DDL)
简称:DDL,Data Denifition Language
代表关键字:create、drop、alter
创建、删除、修改表的结构
2.数据库操作语言(DML)
简称:DML,Data Manipulation Language
代表关键字:insert、delete 、update
增、删、改表中的数据

3.数据库查询语言(DQL)
简称:DQL,Data Query Language
代表关键字:select
4.事务控制语言(TCL)
简称:TCL,Trasactional Control Language
代表关键字:commit、rollback

5.数据控制语言(DCL)
简称:DCL,Data Control Language
代表关键字:grant、revoke
6.DML与DDL的区别是什么?
DML是对表中的数据进行操作,而DDL是对数据库或数据表的结构进行操作。

八、MySQL常用命令集锦
1.修改密码
mysqladmin -u用户名 -p旧密码 password 新密码
【mysqladmin -u用户名 -p密码 create/drop dataName
创建/删除数据库,这是在连接mysql外面,不推荐】
例:mysqladmin -uroot -proot password xyy321

2.增加新用户
grant select on dataName.* to userName@host identified by “密码”
select 表示只能查询,如果是all,则指定数据库有增删改查的功能,dataName表示数据库名字,userName是用户名,host是主机IP地址,如果要执行这条命令,你至少需要数据库有增删改查的权限,删除用revoke。

3.连接MySQL(推荐MySQL内部的命令都加分号结束)
mysql -h主机地址 -u用户名 -p密码
例如:mysql -h 127.0.0.1 -uroot -proot

4.MySQL的内部命令
create database dataName; //创建数据库
use database; //选择数据库
select database(); //查看当前使用的数据库
drop database dataName; //直接删除数据库,不会提醒
show databases; //显示所有数据库
show tables; //显示所有表
desc/describe tableName; //显示表的结构
select 中加上distinct关键字可以去除重复字段
select version(),current_date; //显示当前mysql版本和当前日期
注://表示注释。

5.mysqldump的用法
mysqldump -h host -uroot -p密码 dataName >data_backup.sql 备份数据库 (注意备份路径)
mysqldump -h host -uroot -p密码 dataName <data_backup.sql 还原数据库 (需要在备份数据库的路径下执行这条命令,注意要创一个空的dataName数据库)

6.创建表
create table tName() # 注意主键的设置
7.alter的诸多用法
alter table 旧表名 rename [to] 新表名; //修改表名
alter table 表名 change 旧字段名 新字段名 新数据类型; //修改表的字段名
alter table 表名 modify 字段名 新数据类型; //修改表的数据类型
alter table 表名 add 新字段 新数据类型; //添加字段
alter table 表名 drop 字段名; //删除字段
alter table 表名 modify 字段名1 数据类型 first|after 字段名2 //修改字段的排列位置

8.三种删除表的区别
drop table 表名; //删除表
delete from 表名; //删除表中数据 (id不会清0)
truncate 表名; //删除表中数据(id会清0)

9.一些查询案例
#排序
select * from t_threekingdoms order by age desc;
select * from t_honglou order by id desc;
#统计
select * from t_honglou group by gendar
#按照“国家”统计表中几个国家的人数
select country,count(country) as count
from t_threekingdoms group by country;
#分组后的筛选
select country,count(country) as count
from t_threekingdoms group by country
having count(country)>15;
#分页
select * from t_watermargin limit 0,20;
select * from t_watermargin limit 90,20;

10.一些补充内容
外键就是用来描述两张表之间的关系的。
多表关联查询:五种连接方式
全连接(交叉连接,cross join)
内连接(inner join)
外连接(outer join)
外连接分为左外连接和右外连接
自然连接(natural join)
自连接(自身连接自身)
表与表之间的关联关系:
1:1 一对一:外键放在任何一张表都可以
1:n 一对多:外键放在n那个表中
n:n 多对多:新建一张表来表示多张表之间的关联关系
#交叉连接
SELECT * FROM t_emp,t_dept;
SELECT * FROM t_emp CROSS JOIN t_dept;
#内连接(inner join)
SELECT * FROM t_emp,t_dept WHERE t_emp.deptId=t_dept.id;
SELECT * FROM t_emp INNER JOIN t_dept ON (t_emp.deptId=t_dept.id);

#外连接(outer join)分为左外连接和外连接
SELECT * FROM t_emp LEFT JOIN t_dept ON (t_emp.deptId=t_dept.id);
SELECT * FROM t_emp RIGHT JOIN t_dept ON (t_emp.deptId=t_dept.id);

#查询王五所在的部门,王五所在部门人数,统计王五所在部门的男女情况
SELECT name FROM t_dept
WHERE id=(SELECT deptId FROM t_emp WHERE uname=“王五”);

#函数部分
#查看字符串长度
select length(“wangwang”);
select length(“好好学习”);
select char_length(“好好学习”);
#清除空格
select trim(" Good morning! “);
select ltrim(” Good morning! “);
select rtrim(” Good morning! “);
#substr(起始位置,长度) sql中索引从1开始
#substring(起始位置,结束位置)
#在JavaScript中的用法,用法如上,在MySQL中substring和substr用法含义相同
select substr(“jintianzhenshihao”,3,5);
select substring(“jintianzhenshihao”,3,5);
#数学函数
select ceil(5.66);
select floor(5.666);
#查时间
select now();
select curtime();
select curdate();
select date_format(now(),”%Y年%m月%d日 %H:%i:%s");
select str_to_date(“2019年3月11日 16:07:36”,"%Y年%m月%d日 %H:%i:%s");
#######################################################################
数据库对象
引擎:engine
#MySQL在5.0之前默认使用的是myisam
#MySQL在5.0之后默认使用的是innoDB
innoDB和myisam的区别:
1.事务的支持
2.外键的支持
3.锁级别(行锁、表锁)
索引:
1.什么是索引?
数据的目录,目的就是加快检索速度
2.索引的作用
提高程序的检索\查询效率
3.索引的分类:
聚簇索引:将数据存入索引叶子页面上。(innoDB用的就是这种)。
非聚簇索引:索引节点的叶子页面就好比一片叶子。
叶子头便是索引键值。
主键索引
唯一索引
普通索引
组合索引
全文索引
#创建索引
create index my_index on t_jttw(name);
#查询索引
show index from t_jttw;
#删除索引
drop index my_index on t_jttw;
#目前主流数据库索引底层实现要么使用hash算法,
#要么使用的是B树(Btree)
#视图view表
create view v_my_view as select * from t_honglou;
#查询视图v_my_view
select * from v_my_view;
#删除视图
drop view v_my_view;

还有一些聚合查询sum(),max(),min(),avg()等函数,也有ifnull这样的全局函数。例:ifnull(name, default)  ,当字段name为null时,会给一个默认值default。SQL的学习之路任重而道远,现在的我也只是学到些皮毛,希望小伙伴们一起努力哈。

Happiness is the spiritual support of people.		——MRIRA
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨染半世离殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值