mysql 开发基础系列1 表查询操作
2018-06-25 18:11
375 查看
在安装完数据库后,不管是windows 还是linux平台, mysql的sql命令都大同小异,相关命令都是相同的,每个命令结束后 都以 ; 结尾,
注意在windows平台中表名是不区分大小写的,在linux中是区分的。 例如tl1 与TL1在linux中是区分的。 为了一致所有的数据库名,表名,列名都采用小写。为了方便简单使用了sqllog客户端工具学习。
在安装完数据库后会出现的几个系统数据库:
Mysql 库: 该数据库存储了系统的用户权限信息
In_formation_schema库: 该数据库存储了一些数据库对象信息。比如用户表信息,列信息,权限信息,字符集信息,分区信息等。
Test库: 系统自动创建的测试数据库,任何用户都可以使用。
1. 切换数据库
2. 查看该数据库下的表
3.删除数据库
4.创建表
基本语法是CREATE TABLE tableanme (column_name column_type CONSTRAINTS)
5.删除表
6.修改表
7.修改表名
8. 插入数据
9.更新
10.删除数据
11. 查询
12. 聚合
常用的聚合函数sum(),count(*),max(),min() group by分类聚合, having 聚合后的结果进行过滤, with rollup 分类聚合后的结果进行汇总
13.表连接
内连接:两张表中相互匹配的记录,外连接选出不匹配的记录(外连接有分为左连接和右连接)
14.子查询
子查询的关键字主要包括in、not in、=、!=、exists、not exists
15. 记录联合
union 和union all, union 是将union all的结果集合并后在distinct
注意在windows平台中表名是不区分大小写的,在linux中是区分的。 例如tl1 与TL1在linux中是区分的。 为了一致所有的数据库名,表名,列名都采用小写。为了方便简单使用了sqllog客户端工具学习。
在安装完数据库后会出现的几个系统数据库:
Mysql 库: 该数据库存储了系统的用户权限信息
In_formation_schema库: 该数据库存储了一些数据库对象信息。比如用户表信息,列信息,权限信息,字符集信息,分区信息等。
Test库: 系统自动创建的测试数据库,任何用户都可以使用。
1. 切换数据库
USE test;
2. 查看该数据库下的表
SHOW TABLES;
3.删除数据库
DROP DATABASE test1;
4.创建表
基本语法是CREATE TABLE tableanme (column_name column_type CONSTRAINTS)
CREATE TABLE emp (ename VARCHAR(10), hiredate DATE, sal DECIMAL(10,2), deptno INT(2));
5.删除表
DROP TABLE emp;
6.修改表
-- 修改表类型, 将emp表ename字段从varchar(10)改为varchar(20) ALTER TABLE emp MODIFY ename VARCHAR(20); -- 再查看表架构 DESC emp; -- 增加表字段 ALTER TABLE emp ADD COLUMN age INT(20); -- 再查看表架构 DESC emp; -- 删除表字段 ALTER TABLE emp DROP COLUMN age; DESC emp; -- 字段改名 ALTER TABLE emp CHANGE deptno deptno1 INT(2); DESC emp; -- 修改字段的排列顺序,添加字段birth 放在ename下面 ALTER TABLE emp ADD birth DATE AFTER ename; DESC emp; -- 修改sal字段排序,放在最前面 ALTER TABLE emp MODIFY sal DECIMAL(10,2) FIRST; DESC emp;
7.修改表名
ALTER TABLE emp RENAME emp1;
8. 插入数据
INSERT INTO emp (ename,sal)VALUES('dony',1000); -- 插入多条 INSERT INTO emp (ename,sal) VALUES('dony01',1000),('dony02',1000);
9.更新
UPDATE emp SET sal=4000 WHERE ename='dony'; -- 更新两个表 UPDATE emp,emp1 SET emp.sal=3000, emp1.sal=3000 WHERE emp.ename=emp1.ename
10.删除数据
DELETE FROM emp WHERE emp.ename='dony02';
11. 查询
-- 查询不重复记录 DISTINCT SELECT DISTINCT * FROM emp; -- 查询条件(比较运算符可以是=,>,<, >=,<=,!=) SELECT * FROM emp WHERE sal >=3000; -- 排序 ordery desc|asc SELECT * FROM emp ORDER BY sal DESC; -- 查询前1条 SELECT * FROM emp ORDER BY sal LIMIT 1; -- 查询前3条,从第2条开始 SELECT * FROM emp ORDER BY sal LIMIT 1,3;
12. 聚合
常用的聚合函数sum(),count(*),max(),min() group by分类聚合, having 聚合后的结果进行过滤, with rollup 分类聚合后的结果进行汇总
-- 查询GROUP BY SELECT ename,COUNT(1) FROM emp GROUP BY sal ; -- with rollup SELECT ename,COUNT(1) FROM emp GROUP BY sal WITH ROLLUP; -- 查询 HAVING SELECT ename,COUNT(1) FROM emp GROUP BY ename HAVING COUNT(1)>1;
13.表连接
内连接:两张表中相互匹配的记录,外连接选出不匹配的记录(外连接有分为左连接和右连接)
-- 内联接 SELECT * FROM dept,emp WHERE dept.`deptno`=emp.`deptno`; -- 左联接 SELECT * FROM dept LEFT JOIN emp ON dept.`deptno`=emp.`deptno`; -- 右联接 SELECT * FROM dept RIGHT JOIN emp ON dept.`deptno`=emp.`deptno`;
14.子查询
子查询的关键字主要包括in、not in、=、!=、exists、not exists
-- in 子查询 SELECT * FROM emp WHERE deptno IN(SELECT deptno FROM dept); -- 如果子查询记录数唯一,可以用= SELECT * FROM emp WHERE deptno = (SELECT deptno FROM dept LIMIT 1);
15. 记录联合
union 和union all, union 是将union all的结果集合并后在distinct
SELECT deptno FROM emp UNION ALL SELECT deptno FROM dept; SELECT deptno FROM emp UNION SELECT deptno FROM dept;
相关文章推荐
- 网络安全系列之十八 MySQL基本操作(PHP注入基础)
- 【MySQL数据库开发之二】MySQL 基础语句的书写与操作!
- C语言MySQL 基础操作(添加、查询和删除)
- mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】
- MySQL 优化系列 --1.基础操作
- 【MySQL】MySQL的基础知识与常用操作--开发手册
- 谷歌地图开发经验分享系列之二:Google Map API基础对象操作和用法(Map类和LatLng类)
- mysql 开发基础系列3 日期数据类型
- mysql 开发基础系列5 字符串函数
- mysql常用基础操作语法(九)~~外连接查询【命令行模式】
- mysql 开发基础系列6 数值与日期函数
- Win7开发系列: windows服务操作基础
- mysql 开发基础系列3
- MYSQL-基础操作-索引与查询执行计划
- mysql常用基础操作语法(五)--对数据的简单条件查询【命令行模式】
- mysql 开发基础系列4 字符数据类型
- java mongodb 基础系列---查询,排序,limit,$in,$or,输出为list,创建索引,$ne 非操作
- 【mysql基础系列之二】基本操作
- python操作mysql基础之查询、比对、求和
- mysql常用基础操作语法(七)--统计函数和分组查询【命令行模式】