什么是MySQL?

由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开拓环境。

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开拓,目前属于 Oracle 旗下产品。
MySQL 是最盛行的关系型数据库管理系统之一,在 WEB 运用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 运用软件。

mysqlphp教程视频MySQL的根本语法教程小白们的福音来啦 CSS

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速率并提高了灵巧性。

MySQL所利用的 SQL 措辞是用于访问数据库的最常用标准化措辞。
MySQL 软件采取了双授权政策,分为社区版和商业版,由于其体积小、速率快、总体拥有本钱低,尤其是开放源码这一特点,一样平常中小型网站的开拓都选择 MySQL 作为网站数据库。

a.关系型数据库

informix IBM+HP 政、运、银、军

db2 IBM 政、运、银、军

oracle oracle 集群 中大型企业

mysql oracle 互联网企业

sqlserver 微软

b.非关系型数据库

mongodb 大数据剖析

redis 缓存 新浪微博

cassandra facebook

2.Mysql数据库

a.根本

mysql的管理员:root

mysql的端口:3306

常用软件版本:5.5 5.6

b.管理mysql的工具

sqlyog(小海豚)

navicat

toad

dbeaver

c.命令

mysqld.exe mysql的主理事

mysql.exe mysql的客户端

d.客户端上岸

mysql

mysql -u root -p 管理员登录本地数据库

mysql -u root -h 127.0.0.1 -p 管理员登录ip为127.0.0.1的数据库

e.根本命令(登录后)

一个数据库软件中可以有多个数据库的数据

数据库是由表组成,表是由数据组成

show databases; 查看当前软件中有哪些数据库

select database(); 查看当前数据库的名字

use test; 切换当前数据库为test

show tables; 查看当前数据库中有哪些表

desc ecs_goods; 查看ecs_goods表的表构造

select from ecs_goods; 查看表ecs_goods中的所有数据

3.表

a.数据类型

字符类型 char varchar

数字类型 int

日期类型 date

把稳:char是定长、varchar是变长。

b.建表

语法:create table 表(

字段 数据类型,

字段 数据类型

...

);

创建表stu(学生),里面3个列,一个为name,字符类型,最多10个字符,一个为age,数字类型,一个为birth,日期类型

create table stu(

name char(10),

age int,

birth date

);

4.数据的新增

a.把稳

字符类型、日期类型必须加单引号

数字类型不用处理

列的数据类型和值的数据类型必须同等

b.向表中所有列新增数据

语法:insert into 表 values(值1,值2...);

向stu表中新增数据,name为 gogo,age为19,birth为2000-01-01

insert into stu values('gogo',19,'2000-01-01');

c.向表中指定列新增数据

语法:insert into 表(列1,列2) values(值1,值2);

向stu表中新增数据,name为simida

insert into stu(name) values('simida');

d.新增多条数据

INSERT INTO stu VALUES('a',10,'2018-01-01'),('b',20,'1998-09-09');

5.数据的删除

a.delete和truncate差异

delete 可以删除指天命据 删除数据可以找回 DML

truncate 只能删除全表 删除数据无法找回 DDL

b.delete

语法:delete from 表 where 条件;

删除stu表中name是gogo的所有数据

delete from stu where name='gogo';

删除stu表中所有数据

delete from stu;

c.truncate

语法;truncate table 表;

删除stu表中所有数据

truncate table stu;

6.SQL的分类

SQL:构造化查询措辞

DDL 数据库定义措辞 create atler drop truncate

DML 数据库操作措辞 insert update delete

DCL 数据库掌握措辞 grant revoke

DQL 数据库查询措辞 select

7.数据的修正

a.修正指天命据

语法:update 表 set 列=值 where 条件;

stu表中age为10的name修正为gaga

update stu set name='gaga' where age=10;

b.修正列中所有数据

语法:update 表 set 列=值;

stu表中age列设置为100

update stu set age=100;

8.数据的查询

a.分类

大略查询(1张表)

分组查询

子查询

多表查询

b.大略查询

语法:select 列 from 表 where 条件;

把稳:查询可以查询指定的列,指定的行,指定行的列

查询可以查询单个列也可以查询多个列

查询stu表中所有信息

select from stu;

select name,age,birth from stu;

把稳:代表所有列

查询stu表中name列的所有信息

select name from stu;

把稳:select 后面 from前面是和列干系的,where条件是和行干系的

c.where 条件

把稳:where后面跟的是真或者假,列的数据类型和值的数据类型必须同等

查询stu表中name为gaga的所有信息

select from stu where name='gaga';

查询stu表中age为100的所有信息

select from stu where age=100;

d.比较

>

<

=

>=

<=

!=

<>

查询ecs_goods表中市场价格高于2000的商品的名称和市场价格

selecct goods_name,market_price from ecs_goods where market_price>2000;

查询ecs_goods表中市场价格不即是4440的商品的所有信息

select from ecs_goods where market_price!=4440;

select from ecs_goods where market_price<>4440;

e.关系

and 同时知足条件

or 知足一个条件即可

not 不知足条件

查询ecs_goods表中市场价格大于2000并且小于3000的所有的商品信息

select from ecs_goods where market_price>2000 and market_price<3000;

查询ecs_goods表中商品名称是KD876或者市场售价高于3000的商品的所有信息

select from ecs_goods where goods_name='KD876' or market_price>3000;

f.区间

between ...and ...

把稳,小在前,大在后,包括两个端点

查询ecs_goods表中市场价格范围在2000和3000的所有信息

select from ecs_goods where market_price>=2000 and market_price<=3000;

select from ecs_goods where market_price between 2000 and 3000;

g.模糊查询

模糊查询一样平常是和字符类型一起利用

like

_ 一个字符

% 任意个字符

查询ecs_goods表中商品名称以诺基亚开头的所有信息

select from ecs_goods where goods_name like '诺基亚%';

查询ecs_goods表中商品名称以5结尾的所有信息

select from ecs_goods where goods_name like '%5';

查询ecs_goods表中商品名称是5个字符的商品名称

select goods_name from ecs_goods where goods_name like '_____';

h.空

空类似于未知数x,没有任何数据类型,没有任何数值,

null>null

null+1>null

null10000<null

空不能用于比较和运算,查询时候利用is null 或者is not null

查询stu表中age是空的所有信息

select from stu where age is null;

查询stu表中age不为空的所有信息

SELECT FROM stu WHERE age IS NOT NULL;

i.in

在...里面,知足条件的出结果

查询ecs_goods表中商品名称是KD876或者是诺基亚N85的所有信息

select from ecs_goods where goods_name in('KD876','诺基亚N85');

============================================================

多表查询

一张表无法知足条件时候,须要多张表

a.笛卡儿积

两张表没有做任何关联查询出来的语句

select from ecs_goods;

select from ecs_category;

select from ecs_goods,ecs_category;

笛卡儿积会导致数据量成倍增加,为了避免此类问题发生,须要利用内联查询、左联查询、右联查询

b.内联查询

语法:

select 列 from 表1,表2 where 表1.列=表2.列;

select 列 from 表1 inner join 表2 on 表1.列=表2.列;

关联

找关联列方法:

1.列名相同

2.浸染相同

3.主外键关系

查询商品名称是KD876的分类名称

1.剖析列

商品名称

分类名称

2.剖析表

goods_name ecs_goods

cat_name ecs_category

3.关联

select from ecs_goods,ecs_category

where ecs_goods.cat_id=ecs_category.cat_id;

4.过滤

select cat_name from ecs_goods,ecs_category

where ecs_goods.cat_id=ecs_category.cat_id

and goods_name='KD876';

查询分类名称是3G手机的商品名称和分类id

1.剖析列

分类名称

商品名称

分类id

2.剖析表

goods_name ecs_goods

cat_name ecs_category

cat_id ecs_goods ecs_category

3.关联

select from ecs_goods,ecs_category

where ecs_goods.cat_id=ecs_category.cat_id;

4.过滤

select goods_name,cat_id from ecs_goods,ecs_category

where ecs_goods.cat_id=ecs_category.cat_id

and cat_name='3G手机';--有问题

select g.goods_name,c.cat_id from ecs_goods g,ecs_category c

where g.cat_id=c.cat_id

and c.cat_name='3G手机'

查询商品名称是诺基亚开头的商品的商品名称、市场价格、分类名称

select t1.goods_name ,t1.market_price,t2.cat_name

from ecs_goods t1,ecs_category t2

where t1.cat_id=t2.cat_id

and goods_name like '诺基亚%';

查询分类名称是CDMA手机的商品的名称、市场价格

select ecs_goods.goods_name,ecs_goods.market_price from ecs_goods,ecs_category

where ecs_goods.cat_id=ecs_category.cat_id

and ecs_category.cat_name='CDMA手机';

4.jpg

a.select s#,grade from sc where c#='C2';

b.select sname from s where sname like 'D%';

c.

select s.s#,s.sname from s,sc,c

where s.s#=sc.s#

and sc.c#=c.c#

and c.cname='Maths';

d.

select s# from sc where c#='C2' or c#='C4';

1.jpg

a.select from test1 where department='打算机系' and place='北京';

b.update test1 set department='信息学院' where department='打算机系';

c.select t1.no,t1.name,t2.grade,t2.courses from test1 t1,test2 t2

where t1.no=t2.no

and t2.grade>=75;

左联查询、右联查询

create table a1(

a1 int

);

insert into a1 values(1),(2),(3);

create table a2(

a1 int,

a2 char(10)

);

insert into a2 values(1,'a'),(2,'b'),(4,'c');

左联:左表中数据都有,对应右表位置右表显示为空

右联:右表中所有数据都有

SELECT FROM a1 LEFT JOIN a2 ON a1.`a1`=a2.`a1`;

SELECT FROM a1 RIGHT JOIN a2 ON a1.`a1`=a2.`a1`;

子查询

一条SQL语句的实行依赖于其余一条SQL语句的实行结果

查询商品名称为KD876的分类名称是什么?

1.查询ecs_goods商品名称为KD876的cat_id

select cat_id from ecs_goods where goods_name='KD876';

2.查询ecs_category的cat_id为上面查询出来结果的cat_name

select cat_name from ecs_category where cat_id=(select cat_id from ecs_goods where goods_name='KD876');

查询市场价格最高的商品的名字

1.查出表中最高市场价格是多少

select max(market_price) from ecs_goods;

2.查出价格是上面查询出来结果的商品名称是什么?

select goods_name from ecs_goods where market_price=(select max(market_price) from ecs_goods);

补充:

max 最大

min 最小

avg 均匀

sum 求和

count 计数

7.jpg

1.

a.查询c表中知足条件的c#

select c# from c where cn='税收根本';

b.查询sc表中知足c#是上面查询出来结果的s#

select s# from sc where c# in(select c# from c where cn='税收根本');

c.查询s表中知足s#为上面查询出来结果的sn,s#

select sn,s# from s where

s# in(select s# from sc where c#

in(select c# from c where cn='税收根本'))

2.

select s# from sc where c#='C2';

select sn,sd from s where s# in(select s# from sc where c#='C2');

3.

select sn,sd from s where s# in(select s# from sc where c#!='C5');

2.jpg

1.

select a.name from student a,achievement b

where a.id=b.id and b.mark>85;

2.

select count() from achievement where mark>=90;

3.

insert into achievement values((select id from student where name='Robert'),80);

4.

update achievement set mark=87 where id=(select id from student where name='Rose');

5.

delete from achievement where id=(select id from student where name='Betty');

delete from student where name='Betty';

分组查询

按照某种属性进行分类统计

a.分组函数

max

min

avg

sum

count

分组函数一样平常是和分组一起利用,也可以单独利用

查询ecs_goods表中最高市场售价,最低市场售价

select max(market_price),min(market_price) from ecs_goods;

b.分组

语法:

select 列 from 表

where 条件

group by 分组条件

having 分组后过滤条件;

select cat_id from ecs_goods group by cat_id;

select cat_id,goods_name from ecs_goods group by cat_id;--x

select from ecs_goods group by cat_id;--x

查询每种分类id下面有多少种商品,哀求显示分类id,商品数量

select cat_id,count() from ecs_goods group by cat_id;

查询每种商品的最高市场价,哀求显示商品名称和最高市场价格

select goods_name,max(market_price) from ecs_goods group by goods_name;

查询每种商品的数量,哀求显示分类名称,商品数量

select b.cat_name,count() from ecs_goods a,ecs_category b

where a.cat_id=b.cat_id

group by b.cat_name;

末了有什么想跟小编说的可以再下面留言哟~