设为首页 收藏本站
查看: 2564|回复: 0

[经验分享] 第一天:Mysql数据库

[复制链接]

尚未签到

发表于 2018-10-2 14:15:07 | 显示全部楼层 |阅读模式
  一、Mysql的安装
  1、打开下载的mysql安装文件mysql-5.0.27-win32.zip,双击解压缩,运行“setup.exe”。
DSC0000.jpg

  2、选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”,按“next”键继续。 DSC0001.jpg
  3、在“DeveloperComponents(开发者部分)”上左键单击,选择“This feature,
  and allsubfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。在上面的“MySQL Server(mysql服务器)”、“Client Programs(mysql客户端程序)”、“Documentation(文档)”也如此操作,以保证安装所有文件。点选“Change...”,手动指定安装目录。
DSC0002.jpg

  4、填上安装目录,我的是“F:\Server\MySQL\MySQLServer 5.0”,也建议不要放在与操作系统同一分区,这样可以防止系统备份还原的时候,数据被清空。按“OK”继续。
DSC0003.jpg

  确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。
DSC0004.jpg

DSC0005.jpg

  5、正在安装中,请稍候,直到出现下面的界面
DSC0006.jpg

  这里是询问你是否要注册一个mysql.com的账号,或是使用已有的账号登陆mysql.com,一般不需要了,点选“Skip Sign-Up”,按“Next”略过此步骤。继续则完成MYSQL的安装。
  二、MYSQL的配置
  1、安装完成了,出现如下界面将进入mysql配置向导。
DSC0007.jpg

DSC0008.jpg

  2、选择配置方式,“DetailedConfiguration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
DSC0009.jpg

  3、选择服务器类型,“DeveloperMachine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”
DSC00010.jpg

  4、选择mysql数据库的大致用途,“MultifunctionalDatabase(通用多功能型,好)”、“TransactionalDatabase Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),按“Next”继续。
DSC00011.jpg

  5、选择网站并发连接数,同时连接的数目,“DecisionSupport(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”。
DSC00012.jpg

  6、是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问mysql数据库了,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果是新手,建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续
DSC00013.jpg

  7、就是对mysql默认数据库语言编码进行设置(重要),一般选UTF-8,按 “Next”继续。
DSC00014.jpg

  8、选择是否将mysql安装为windows服务,还可以指定ServiceName(服务标识名称),是否将mysql的bin目录加入到WindowsPATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe-uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,ServiceName不变。按“Next”继续。
DSC00015.jpg

  9、询问是否要修改默认root用户(超级管理)的密码。“Enable root access from remotemachines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
DSC00016.jpg

  10、确认设置无误,按“Execute”使设置生效,即完成MYSQL的安装和配置。
DSC00017.jpg

DSC00018.jpg

  注意:设置完,按“Finish”有一个比错误,就是不能“Startservice”,一般出在以前有安装mysql的服器上,解决的法,先保以前安装的mysql服底卸掉了;不行的检查是否按上面一,之前的密是否有修改,照上面的操作;如果依然不行,将mysql安装目下的data文件夹备份,然后除,在安装完成后,将安装生成的 data文件夹删除,份的data文件移回来,再重启mysql服就可以了,这种情况下,可能需要将数据库检查一下,然后修一次,防止数据出错。
  二、数据库的使用
  1、打开window“服务”
  win+r,“运行”-》service.msc
DSC00019.jpg

DSC00020.jpg

  2、启动和关闭(必须以管理员身份运行cmd命令窗口)
  开启数据库服务:net start mysql
  关闭数据库服务:net stop mysql
DSC00021.jpg

  3、登录
  mysql -uroot -p
   DSC00022.jpg
  4.退出数据库
  exit;
  quit;
  q;
   DSC00023.jpg
   DSC00024.jpg
   DSC00025.jpg
  5、查看数据库的版本号和当前日期
  select version(),current_date;
DSC00026.jpg

  6、将mysql用作一个简单的计算器
  select sin(pi()/4),(4+1)*5;
DSC00027.jpg

  7、‘\c’表示取消命令,它切换回到mysql>,开始接受一个新的命令
DSC00028.jpg

  8、查询当前使用的用户
  select user();
DSC00029.jpg

  三、SQL语句的分类
  1、数据定义语言,简称DDL
  用来定义数据库对象:数据库database,表table,列column等。
  关键字:创建create,修改alter,删除drop等
  2、数据库操作语言,简称DML
  关键字:插入:insert,删除delete,更新update等
  3、数据查询语言,简称DQL
  关键字:select,from,where等
  4、数据库控制语言,简称DCL
  四、对数据库的操作
  1、创建一个库
  create database 库名
DSC00030.png

  查看MySQL支持的所有字符集
  show character set;
   DSC00031.jpg
  创建带有编码的
  create database 库名 character set 编码
DSC00032.png

  查看编码
  show create database web08_01;
DSC00033.png

  2、查看数据库
  查看数据库服务器中的所有数据库:show databases;
DSC00034.jpg

  查看某个数据库的定义的信息:show create database 数据库名;
DSC00035.jpg

  3、删除一个库
  drop database 库名
DSC00036.png

  4、使用库
  use 库名
DSC00037.png

  5、查看当前正在操作的库
  select database();
DSC00038.png

  五、对数据库表的操作
  1、创建一张表
  create table 表名(
  字段名 类型(长度) [约束],
  字段名 类型(长度) [约束],
  );
  字符类型:varchar(n)
  单表约束:
  主键约束:primary key,要求被修饰的字段:唯一和非空
  唯一约束:unique,要求被修饰的字段:唯一
  非空约束:not null,要求被修饰的字段:非空
  自动增长:auto_increment
DSC00039.png

  2、查看数据库表
  创建完成后,我们可以查看数据库表
  show tables;
DSC00040.png

  查看表的结构
  desc 表名
DSC00041.png

  3、删除一张表
  drop table 表名
DSC00042.png

  4、修改表
  4.1添加一列
  alter table 表名 add 列名 类型(长度)[约束];    -----修改表添加列
DSC00043.png

  4.2修改列的类型(长度、约束)
  alter table 表名 modify 要修改的字段名 类型(长度)[约束]
DSC00044.png

  4.3修改列的列名
  alter table 表名 change 旧列名 新列名 类型(长度)[约束]
DSC00045.png

  4.4、删除表的列
  alter table 表名 drop 列名
DSC00046.png

  4.5、修改表名
  rename table 表名 to 新表名
DSC00047.png

  4.6、修改表的字符集
  alter table 表名 character set 编码
DSC00048.jpg

  4.7、修改字段的排列位置
  alter table 表名 modify 列名1 数据类型 first|after 列名2
   DSC00049.jpg
  4.8查看当前编码
  show create table tbl_user;
DSC00050.png

  4.9装载数据
  load data local infile 'path/1.txt' into table sort lines terminated by '\r\n';
DSC00051.jpg

  4.10、字段类型
DSC00052.jpg

DSC00053.jpg

  4.11、比较运算符
  =、=、(!=)、、>、60元的所有商品信息
  select * from product where price>60;
DSC00054.png

  3.查询商品名称含有“士”字的商品信息
  select * from product where pname like '%士%';
DSC00055.png

  4.查询商品id在(3,6,9)范围内的所有商品信息
  select * from product where pid in(3,6,9);
DSC00056.png

  5.查询商品名称含有“士”字并且id为6的商品信息
  select * from product where pname like '%士%' and pid=6;
DSC00057.png

  6、找出正好包含5个字符的名字
  select * from pet where name like '_____';
+-------+--------+---------+------+------------+-------+| name  | owner  | species | sex  | birth      | death |+-------+--------+---------+------+------------+-------+| Claws | Gwen   | cat     | m    | 1994-03-17 | NULL  || Buffy | Harold | dog     | f    | 1989-05-13 | NULL  |+-------+--------+---------+------+------------+-------+  7.查询id为2或者6的商品信息
  select * from product where pid=2 or pid=6;
DSC00058.png

  4.3排序
  1.查询所有的商品,按价格进行排序(asc升序、desc降序)
  select * from product order by price asc;
DSC00059.png

  select * from product order by price desc;
DSC00060.png

  2.查询名称有“士”的商品信息并且按照价格降序排序
  select * from product where pname like '%士%' order by price desc;
DSC00061.png

  4.4聚合函数
  常用的聚合函数:sum()求和,avg()平均,max()最大值,min()最小值,count()计数
  1.获得所有商品的价格的总和
  select sum(price) from product;
DSC00062.png

  2.获得所有商品的平均价格
  select avg(price) from product;
DSC00063.png

  3.获得所有商品的个数
  select count(*) from product;
DSC00064.png

  4.5分组操作
  1.添加分类id(alter table product add cid varchar(32);)
  2.初始化数据
  update product set cid='1';
  update product set cid='2' where pid in(5,6,7);
  1.根据cid字段分组,分组后统计商品的个数
  select cid,count(*)from product group by cid;
DSC00065.png

  2.根据cid分组,分组统计每组商品的平均价格,并且平均价格大于20000元
  select cid,avg(price)from product group by cid having avg(price)>20000
DSC00066.png

  3、从第3条记录开始显示,显示3条记录
  select * from sort limit 2,3;
  ("2"表示的是从第三条记录开始,是从0开始计数的,"3"表示查询3条记录)
   DSC00067.jpg
  
  4.6、使用函数查询
  1、日期函数
  计算每个宠物的年龄
  select name,birth,curdate(),(year(curdate())-year(birth))-(right(curdate(),5)
  使用外键目的:
  保证数据完整性
  alter table product add foreign key(category_id) references category(cid);
DSC00068.jpg

  alter table product add constraint product_fk foreign key(category_id) references category(cid);
DSC00069.jpg

  删除外键
  alter table 表名 drop foreign key 外键约束名
   DSC00070.jpg
  2、表与表之间的关系
  2.1、一对多关系
  常见实例:客户和订单,分类和商品,部门和员工
  一对多建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键
DSC00071.jpg

  建表语句
  #创建数据库
  create database day09_db;
  #使用数据库
  use day09_db;
  #创建分类表
  create table category(
  cid varchar(32) primary key, #主表的主键
  cname varchar(100)   #分类名称
  );
  #商品表
  create table product(
  pid varchar(32) primary key,
  name varchar(40),
  price double
  );
  #添加外键字段 category_id
  alter table product add column category_id varchar(32);
  #添加约束
  alter table product add constraint product_fk foreign key(category_id) references category(cid);
   DSC00072.jpg
   DSC00073.jpg
  总结:
  从表不能够添加(更新),主表中不存在的数据
  主表不能够删除(更新),从表中已经使用的数据
  2.2多对多关系:
  常见实例:学生和课程,商品和订单,人和角色
  多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向
  各自一方的主键。(就是将一个多对多拆分成两个一对多。)
DSC00074.jpg

  两张表分别都是主表,第三张表为从表,提供两个字段,都是外键
  #商品表
  create table product(
  pid varchar(32) primary key,
  name varchar(40),
  price double
  );
  #订单表
  create table orders(
  oid varchar(32) primary key,
  totalprice double    #总计
  );
  #订单项表
  create table orderitem(
  oid varchar(50),--订单id
  pid varchar(50) --商品id
  );
  #联合主键(可省略)
  alter table orderitem add primary key (oid,pid);
  #---订单表和订单项表的主外键关系
  alter table orderitem add constraint orderitem_orders_fk foreign key(oid) references orders(oid);
  #---商品表和订单项表的主外键关系
  alter table orderitem add constraint orderitem_product_fk foreign key (pid) references products(pid);
   DSC00075.jpg
  3、多表查询操作
  3.1、交叉连接查询(基本上不会使用-得到的是两个表的乘积)
  语法:select * from A,B;
   DSC00076.jpg
  3.2内连接查询(使用的关键字inner join --inner可以省略)
  隐式内连接:select * from A,B where 条件
  显示内连接:select * from A inner join B on 条件
   DSC00077.jpg
  3.3外连接查询(使用的关键字outer join --outer可以省略)
  左外连接:left outer join
  select * from A left outer join B on 条件;
  右外连接:right outer join
  select * from A right outer join B on 条件;
   DSC00078.jpg
   DSC00079.jpg
  3.4、查询例题
  #1.查询哪些分类的商品已经上架
  select * from category,product where cid=category_id;
   DSC00080.jpg
  select * from category c,product p where c.cid=p.category_id;
   DSC00081.jpg
  #隐式内连接
  select distinct cname from category c,product p where c.cid=p.category_id;
DSC00082.jpg

  #内连接
  select distinct cname from category c inner join product p on c.cid=p.category_id;
DSC00083.jpg

  #2.查询所有分类上架商品的个数
  #左外连接
  select cname,count(category_id) from category c left outer join product p on c.cid=p.category_id group by cname;
DSC00084.jpg

  3.5、子查询
  一条select语句结果作为另一条select语句一部分(查询条件,查询结果,表等)。
  #子查询,查询“化妆品”分类上架商品详情
  #隐式内连接
  select * from product p,category c where p.category_id=c.cid and c.cname='化妆品';
  #子查询
  select * from product where category_id=(select cid from category where cname='化妆品'); DSC00085.jpg
  注意:
  从表外键不能添加主表中不存在的记录。
  主表不能删除从表中已经引用的记录。
  七、存储引擎
  存储引擎:也叫表类型,指的是数据表的存储机制,索引方案等配套相关功能。不同的引擎,由于处理方式不同,会带来不同的功能或者相应优化,根据实际需求选择合理的引擎。
  选择表的存储引擎的标准:
  是否需要事务支持
  是否支持外键
  并发量的要求
  错误恢复的处理
  是否支持某些具体功能
  最常用的存储引擎:
  MyISAM:分开保存、支持索引压缩、是表级锁、不支持事务,外键、保存表中具体的行数
  InnoDB:保存到表空间、索引和数据是绑定保存的,不压缩,体积大、很多时候是行级锁,并发               高、不支持FULLTEXT类型的索引(新版本的InnoDB也支持),支持事务,外键,数据完整             性约束强、不保存表中具体行数
  7.1、查看数据库支持的引擎
  show engines;
   DSC00086.jpg
  7.2、查看当前所使用的存储引擎
  show create table 表名
   DSC00087.jpg
  7.3、更改表的存储引擎
  alter table 表名 engine=更改后的存储引擎名
  



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-607640-1-1.html 上篇帖子: mysql检测脚本 下篇帖子: MySQL主从不同步问题解决
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表