mysql

以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
实例解析:
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,CHARSET 设置编码。

desc  table_name;
select {filed1,filed2,...} from {表名};
 
inset {表名} (filed1,field2,....) values (value1,value2,....);
insert into c(f1,t1) (select (select b.y from b where a.x=b.x),(select b.y from b where a.y=b.x) from a)
 
UPDATE 表 SET 字段='value' WHERE 条件;

DROP TABLE table_name ;删除表
delete from table_name where 删除条件 ;删除表部分数据
truncate table table_name;删除表数据保留该表
1、当你不再需要该表时, 用 drop;
2、当你仍要保留该表,但要删除所有记录时, 用 truncate;
3、当你要删除部分记录时, 用 delete。
alter table  table_name modify column 字段 类型; 修改字段
SELECT * from table_name  WHERE 字段 LIKE '%COM'; 模糊查询
 
MySQL UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。
SELECT 字段 FROM table_name1 UNION SELECT 字段 FROM table_name2 ORDER BY 字段;   UNION 查出来得字段去重。请使用 UNION ALL 列出所有值!
SELECT 列名称 FROM 表名称 UNION SELECT 列名称 FROM 表名称 ORDER BY 列名称;
SELECT 列名称 FROM 表名称 UNION ALL SELECT 列名称 FROM 表名称 ORDER BY 列名称;
SELECT * from runoob_tbl ORDER BY 字段 ASC; 升序
SELECT * from runoob_tbl ORDER BY 字段 DESC;降序
GROUP BY 语句根据一个或多个列对结果集进行分组。
SELECT name, COUNT(*) FROM 表名称 GROUP BY name;
 

WITH ROLLUP 可以实现在分组统计数据基础上再进行相同的统计(SUM,AVG,COUNT…)。

例如我们将以上的数据表按名字进行分组,再统计每个人登录的次数:

 SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;

mysql> SELECT name, SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
+--------+--------------+
| name   | singin_count |
+--------+--------------+
| 小丽 |            2 |
| 小明 |            7 |
| 小王 |            7 |
| NULL   |           16 |
+--------+--------------+
4 rows in set (0.00 sec)

  

其中记录 NULL 表示所有人的登录次数。

我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 语法:

select coalesce(a,b,c);

  

参数说明:如果a==null,则选择b;如果b==null,则选择c;如果a!=null,则选择a;如果a b c 都为null ,则返回为null(没意义)。

以下实例中如果名字为空我们使用总数代替:

mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM  employee_tbl GROUP BY name WITH ROLLUP;
+--------------------------+--------------+
| coalesce(name, '总数') | singin_count |
+--------------------------+--------------+
| 小丽                   |            2 |
| 小明                   |            7 |
| 小王                   |            7 |
| 总数                   |           16 |
+--------------------------+--------------+
4 rows in set (0.01 sec)

  分组后的条件使用 HAVING 来限定,WHERE 是对原始数据进行条件限制。几个关键字的使用顺序为 where 、group by 、having、order by ,例如:

SELECT name ,sum(*)  FROM employee_tbl WHERE id<>1 GROUP BY name  HAVING sum(*)>5 ORDER BY sum(*) DESC;

  

order by:

SELECT * from runoob_tbl ORDER BY submission_date ASC;

SELECT * from runoob_tbl ORDER BY submission_date DESC;
SELECT dep.department_name, MAX(emp.salary), MIN(emp.salary) FROM departments dep LEFT JOIN employees emp ON (dep.department_id = emp.department_id) GROUP BY dep.department_name ORDER BY dep.department_name DESC

 

posted @ 2018-12-11 14:20  胖胖的小凉  阅读(151)  评论(0编辑  收藏  举报