速通MySql

一、简介

1、什么是数据库

        数据仓库,用来存储数据。访问必须用SQL语句来访问

2、数据库的类型

        1、关系型数据库:Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等 可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询;事务支持良好,使得对于安全性能很高的数据访问要求得以实现

        2、非关系型数据库:redis,MongoDb等 性能高,不需要经过SQL层的解析

3、常见的数据库类型

        Oracle 大型数据库,收费

        Mysql 小型数据库,开源,

        SQL Server 微软数据库

        DB2 IBM公司产品,大型数据库,收费

二、数据库增删改查的操作

        前置:安装mysql,教程点击此处

1、增

语法

含义

模板

CREATE DATABASE

创建新数据库

CREATE DATABASE dbname;

CREATE TABLE

创建新表

CREATE TABLE table_name

(

column_name1 data_type(size),

column_name2 data_type(size),

column_name3 data_type(size),

....

);

INSERT INTO

向数据库中插入新数据

两种编写形式

1、第一种形式无需指定要插入数据的列名,只需提供被插入的值即可

INSERT INTO table_name VALUES (value1,value2,value3,...

2、第二种形式需要指定列名及被插入的值

INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);

2、删

语法

含义

模板

实例

备注

DELETE

从数据库中删除数据

DELETE FROM table_name

WHERE some_column=some_value;

DELETE FROM Websites

WHERE name='Facebook' AND country='USA';

WHERE 子句规定哪条记录或者哪些记录需要删除。如果省略了 WHERE 子句,所有的记录都将被删除

drop

从数据库中删除数据

drop table 表名;

把表和表中数据直接删除

truncate

从数据库中删除数据

truncate table 表名;

truncate 直接把表删除 会按照之前的表在创建一个新的

        删除速度 drop>truncate>delete

3、改

语法

含义

模板

备注

UPDATE

更新数据库中的数据

UPDATE table_name

SET column1=value1,column2=value2,...

WHERE some_column=some_value;

执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。

在 MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决,当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。

set sql_safe_updates=1; 表示开启该参数

4、查

1、select语句

语法

含义

模板

备注

DISTINCT

用于返回唯一不同的值

SELECT DISTINCT column_name,column_name

FROM table_name;

WHERE

(②、③)

用于提取那些满足指定条件的记录

SELECT column_name,column_name

FROM table_name

WHERE column_name operator value;

1、文字用单引号,数字不用引号;

2、后面不能跟聚合函数

AND & OR

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录

1、SELECT * FROM Websites

WHERE country='CN'

AND alexa > 50;

2、SELECT * FROM Websites

WHERE country='USA'

OR country='CN';

ORDER BY

(④、⑤)

关键字用于对结果集按照一个列或者多个列进行排序

SELECT column_name,column_name

FROM table_name

ORDER BY column_name,column_name ASC|DESC;

关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字

like¬ like

(⑥)

用于在 WHERE 子句中搜索列中的指定模式

SELECT column_name(s)

FROM table_name

WHERE column_name LIKE pattern;

in

在 WHERE 子句中规定多个值

SELECT column_name(s)

FROM table_name

WHERE column_name IN (value1,value2,...);

转换

1、select * from Websites where name in ('Google','菜鸟教程');

2、select * from Websites where name='Google' or name='菜鸟教程';

between&

not between

选取介于两个值之间的数据范围内的值

SELECT column_name(s)

FROM table_name

WHERE column_name BETWEEN value1 AND value2;

带有 IN 的 BETWEEN 操作符实例

SELECT * FROM Websites

WHERE (alexa BETWEEN 1 AND 20)

AND country NOT IN ('USA', 'IND');

5、多表连接

语法

含义

模板

备注

INNER JOIN&JOIN

关键字在表中存在至少一个匹配时返回行

1、SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name=table2.column_name;

2、SELECT column_name(s)

FROM table1

JOIN table2

ON table1.column_name=table2.column_name;

LEFT JOIN

关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL

左为主 把左边的表中的不符合规则的数据显示出来

SELECT column_name(s)

FROM table1

LEFT JOIN table2

ON table1.column_name=table2.column_name;

速通MySql_第1张图片

RIGHT JOIN

关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL

右连接 右为主 把右边的表中的不符合规则的数据显示出来

SELECT column_name(s)

FROM table1

RIGHT JOIN table2

ON table1.column_name=table2.column_name;

速通MySql_第2张图片

6、函数

语法

含义

模板

备注

AVG()

返回平均值

SELECT AVG(column_name) FROM table_name

聚合函数

COUNT()

COUNT(column_name)

函数返回指定列的值的数目(NULL 不计入)

COUNT(*)

返回表中的记录数

COUNT(DISTINCT column_name)

返回指定列的不同值的数目

同左

聚合函数

MAX()

返回最大值

SELECT MAX(column_name) FROM table_name;

聚合函数

MIN()

返回最小值

SELECT MIN(column_name) FROM table_name;

聚合函数

SUM()

返回总和

SELECT SUM(column_name) FROM table_name;

聚合函数

GROUP BY

用于结合聚合函数,根据一个或多个列对结果集进行分组。

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name;

HAVING

(⑦)

筛选分组后的各组数据,解决WHERE 关键字无法与聚合函数一起使用

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

HAVING aggregate_function(column_name) operator value;

②、WHERE 子句中的运算符

运算符

描述

示例

=

等于

<>

不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=

>

大于

<

小于

>=

大于等于

<=

小于等于

③、WHERE 子句并不一定带比较运算符,当不带运算符时,会执行一个隐式转换。当 0 时转化为 false,1 转化为 true。

        例如:

                SELECT studentNO FROM student WHERE 0

        则会返回一个空集,因为每一行记录 WHERE 都返回 false。

                SELECT studentNO FROM student WHERE 1

        返回 student 表所有行中 studentNO 列的值。因为每一行记录 WHERE 都返回 true。

④、ORDER BY 多列的顺序

        先按照第一个column name排序,在按照第二个column name排序

        1)、先将country值这一列排序,同为CN的排前面,同属USA的排后面;

        2)、然后在同属CN的这些多行数据中,再根据alexa值的大小排列。

        3)、ORDER BY 排列时,不写明ASC DESC的时候,默认是ASC。

⑤、ORDER BY 多列的升降序

        order by A,B 这个时候都是默认按升序排列

        order by A desc,B 这个时候 A 降序,B 升序排列

        order by A ,B desc 这个时候 A 升序,B 降序排列

        即 desc 或者 asc 只对它紧跟着的第一个列名有效,其他不受影响,仍然是默认的升序。

⑥、

%a

以a结尾的数据

a%

以a开头的数据

%a%

含有a的数据

_a_

三位且中间字母是a的

_a

两位且结尾字母是a的

a_

两位且开头字母是a的

⑦、分组查询的筛选条件

数据源

位置

关键字

分组前筛选

原始表

group by子句的前面

where

分组后筛选

分组后的结果集

group by子句的后面

having

你可能感兴趣的:(测试开发,经验分享,mysql)