Mysql介绍
- MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (关系数据库管理系统) 应用软件之一。
- MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。
- MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL 作为网站数据库。
步入整体
mysql的information_schema数据库
为了方便管理,默认定义了information_schema数据库,用来存储数据库元信息。其中具有schemata、tables、colums表,功能如下:
- schema表中,schema_name存储数据库名
- tables表中,table_schema(数据库名)、table_name(表名)。
- colmns表中,table_schema(数据库名)、table_name(表名)、column_name(字段名)。
创建数据库
语法:
CREATE DATABASE 数据库名;
演示:
删除数据库
语法:
DROP DATABASE 数据库名;
演示:
选择数据库
语法:
USE 数据库名;
演示:
注:所有数据库名、表明、表字段都是区分大小写的。
Mysql数据类型
数值类型
日期和时间类型
字符串类型
创建数据表
语法:
CREATE TABLE table_name (column_name column_type);
展示:
注:not null设置字段不能为空;
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔
ENGINE 设置存储引擎,CHARSET 设置编码。
删除数据表
语法:
DROP TABLE table_name ;
展示:
插入数据
语法:
INSERT INTO table_name ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN );
展示:
查询数据
语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
注:
- 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
- LIMIT 属性来设定返回的记录数。
- 可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
UPDATE语句
语法:
UPDATE table_name SET field1=new-value1, field2=new-value2
[WHERE Clause]
注:有些字段不能更改,比如id被设置为auto_increment
DELETE 语句
语法:
DELETE FROM table_name [WHERE Clause]
注:如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
like
like通常与%一起使用
举例:
- ‘%a’ //以a结尾的数据
- ‘a%’ //以a开头的数据
- ‘%a%’ //含有a的数据
- ‘a’ //三位且中间字母是a的
- ‘_a’ //两位且结尾字母是a的
- ‘a_’ //两位且开头字母是a的
Union
UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
语法:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
注:
- distinct表示删除结果中重复的数据(union语句默认删除重复数据)
- all表示返回所有结果,包含重复的数据
排序
对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。
语法:
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]
注:
- 默认按照ASC(升序),可以改为DESC(降序)
- 可以使用 order by 1; ‘1’表示select 选择结果中的第一列
GROUP BY 语句
GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。
语法:
SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
注:
- WITH ROLLUP可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)
如:SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;
- 使用 coalesce 来设置一个可以取代 NUll 的名称
select coalesce(a,b,c);如果a==null
,则选择b;如果b==null
,则选择c;如果a!=null
,则选择a;如果a b c 都为null ,则返回为null(没意义)。
如:SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP;