未加星标

Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解

字体大小 | |
[数据库(mysql) 所属分类 数据库(mysql) | 发布者 店小二03 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
mysql全程讲解。
1、Mysql常识

数据库在服务器上安装完成后,一般通过客户端管理工具访问服务器,常见的有Navicat、SQLyog等,输入服务器IP、数据库端口号、数据库用户名和密码即可,本地登陆命令是是mysql -u数据库用户-p 登陆密码。登陆后,使用show databases;查看系统中Mysql已经创建出来的数据库,安装完后数默预置就有information_schema,mysql和test三个库。

数据库中的数据都是以二维表的形式被保存在不同的数据表中。其中每行表示一条数据记录,每条记录包含多个字段。数据库中的每张表都会通过几个文件占用一定的存储空间,分别存储表结构、表里数据和表索引信息等。如果确定不再使用某张表,就删除以释放存储空间。

2、数据库设计
2.1、安装数据库

以Mysql为例,多个项目可用同一个数据库,也可以单独使用一台服务器安装全新Mysql,安装完成后需要提供四个信息:


Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
2.2、建库脚本

如何是大型复杂的项目,需要编写规范的建库脚本create_database.sql。但如果是规模较小的项目,本地或远程登录Mysql后在库模式下执行create database 数据库名称;就可以创建项目需要的数据库了。


Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
2.3、建表脚本

实际开发中,当从产品经理处拿到新需求后,首先就是考虑如何建表,根据E-R模型需求有哪些关键信息就建立哪些字段,并且是通过建表脚本或者是客户端软件的建表模板而不是直接登录数据库服务器通过CLI的方式建表。


Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
3、增删改查基础

createdatabase 数据库名称; 创建新的数据库。

use 数据库名称; 选择一个数据库对其进行操作。

createtable 表名( 字段1 字段类型[约束或索引][额外设置],
字段2 字段类型[约束或索引] [额外设置],

…………

[索引或约束],
)[ENGINE=MYISAMAUTO_INCREMENT=1 DEFAULT CHARSET=utf-8]; 创建新表

insertinto 表名(字段列表) values (对应插入的值列表); 插入新记录

altertable 表add 新字段字段类型[宽度] [约束或索引] [额外设置][位置];

dropdatabase 数据库名称; 删除数据库

droptable 数据表名称; 删除一张表

deletefrom 表查询条件; 删除表中符合条件的记录

altertable 表drop 字段; 删除一个字段

altertable 表名renameto 新表名;改表名

update表名set 字段=新值查询条件;更新表的某个字段

altertable 表change旧字段名新字段名; 改字段名

altertable 表modify字段名新字段类型; 改字段的类型

在型

showtables;显示当前库已经存在的表

describle表名; 查看表结构

selecta,b from 表名 查询条件;查看符合条件的表的a和b字段

select distinct namefrom 表名;排重显示表中的name字段

select(temp_hi+temp_lo)/2 astemp_avgfrom weather;

标示符as可作为单个字段或表达式的别名,输出时显示该别名。

4、查询字句、子查询和多表查询
4.1、五种查询子句
a.where子句

where后接布尔表达式针对表中的列发挥作用,查询数据,支持算术运算符、关系运算符和逻辑运算符

1、selectgoods_id,goods_name from goods where market_price - shop_price> 200;

输出market_price比shop_price多200的记录的商品ID和商品名

2、whereprice>=3000 and price <= 5000 or price betweenand price 1000;

取3000-5000或者500-1000的值

3、delete from 表whereproduct_id = 30; 删除表中product_id为30的记录

4、where goods_namelike '诺基亚%'; %匹配0到多个字符

5、where goods_namelike '诺基亚N_'; _匹配单个字符

b.having子句

having与where类似,可以筛选数据,where后的表达式怎么写,having后就怎么写,

不同的是where只能针对表中的列发挥作用,查询数据, Having是对查询结果中的列发挥作用,筛选数据。

1、selectgoods_id,good_name,market_price - shop_price as s from goods having s>200 ;比a.where字句的第一个例子,多输出了差价s

2、select cat_id,market_price from goods wherecat_id> 3 having market_price> 200;输出cat_id、market_price,要求是cat_id>3且market_price大于200的记录

c.group by(分组)

一般情况下group需与统计函数(聚合函数,共五种)一起使用才有意义,从字面意义上理解就是根据“By”指定的规则先对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。


Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
d.order by(排序)

从字面意义上理解就是根据“By”指定的规则对输出结果进行排序

sql语句没有order by//按表中记录的顺序默认输出

order byprice //默认升序排列

order by price asc//升序排列

order by price desc//降序排列


Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
e.limit(限制结果区间)

用于获取一段区间的记录,第一个参数是初始值,第二个参数是偏移量,常常和order by字句合用。

selectgood_id,goods_name,goods_price from goodsorder by good_price limit 3,3;

取价格第4-6高的商品,输出其三字段,并按字段good_price升序

4.2、子查询
a、where型子查询

把内层查询结果当作外层的查询条件

select name from (select name,count(*) as guakefrom stu where score < 60having guake>=2);

查出挂科2门以上的同学有多少个,输出其姓名

b、from型子查询

把内层的查询结果(可以看做是内存里的一张临时表)供外层再次查询

selectname,avg(score) from stu where namein (select name from (select name,count(*) as guake from stuwhere score < 60havingguake>=2)) group by name;

然后获取这些同学的名字,最后再计算每个同学的平均分

4.3、多表查询

当查询结果来自多个表时,就需要进行多表查询,常用的有内连接、外连接和自连接3种,实际开发中一个表的某个字段是主键,另一个表的字段是外键约束。比如查询学生ID、学生姓名和学生老师姓名,但学生表中没有“学生老师姓名”字段只有“老师ID”字段,此时就需要进行多表查询。


Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
4.3.1、内连接

特点是两个表中只有符合连接条件的记录才能在结果集中出现,不符合就过滤掉数据,所以缺陷就是可能丢失信息,比如字段为NULL的时候就查询不出来,又称自然连接。连接条件使用=的是等值连接,不使用=的是不等值连接。


Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
这是使用where的写法,还有一种写法是使用 join或inner join,形式不同实际结果是一样的。

本文数据库(mysql)相关术语:navicat for mysql mysql workbench mysql数据库 mysql 存储过程 mysql安装图解 mysql教程 mysql 管理工具

分页:12
转载请注明
本文标题:Mysql全程讲解 mysql mysql数据库 mysql函数 Mysql全程讲解
本站链接:http://www.codesec.net/view/534963.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 数据库(mysql) | 评论(0) | 阅读(26)