mysql 开发基础系列1 表查询操作
在安装完数据库后,不管是windows 还是linux平台, mysql的sql命令都大同小异,相关命令都是相同的,每个命令结束后 都以 ; 结尾,
注意在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 开发基础系列1 表查询操作的更多相关文章
- mysql 开发基础系列8 表的存储引擎
一. 表的存储引擎 1. 概述 插件式存储引擎是mysql数据库最重要的特性之一, 用户可以根据应用的需要选择如何存储和索引数据,是否使用事务等.在mysql 5.0里支持的引擎包括: MyISAM, ...
- MySQL/MariaDB数据库的多表查询操作
MySQL/MariaDB数据库的多表查询操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.单表查询小试牛刀 [root@node105.yinzhengjie.org.cn ...
- mysql 开发基础系列12 选择合适的数据类型(上)
一. char 与varchar比较 在上图的最后一行的值只适用在"非严格模式",关于严格模式后面讲到.在“开发基础系列4“ 中讲到CHAR 列删除了尾部的空格.由于char是固定 ...
- mysql 开发基础系列11 存储引擎memory和merge介绍
一. memory存储引擎 memoery存储引擎是在内存中来创建表,每个memory表只实际对应一个磁盘文件格式是.frm. 该引擎的表访问非常得快,因为数据是放在内存中,且默认是hash索引, ...
- mysql 开发基础系列20 事务控制和锁定语句(上)
一.概述 在mysql 里不同存储引擎有不同的锁,默认情况下,表锁和行锁都是自动获得的,不需要额外的命令, 有的情况下,用户需要明确地进行锁表或者进行事务的控制,以便确保整个事务的完整性.这样就需要使 ...
- mysql 开发基础系列15 索引的设计和使用
一.概述 所有mysql 列类型都可以被索引,是提高select查询性能的最佳方法. 根据存储引擎可以定义每个表的最大索引数和最大索引长度,每种引擎对每个表至少支持16个索引,总索引长度至少为256字 ...
- mysql 开发基础系列21 事务控制和锁定语句(下)
1. 隐含的执行unlock tables 如果在锁表期间,用start transaction命令来开始一个新事务,会造成一个隐含的unlock tables 被执行,如下所示: 会话1 会话2 ...
- mysql 开发基础系列17 存储过程和函数(上)
一. 概述 存储过程和函数是事先经过编译并存储在数据库中的一段sql语句集合,可以简化应用开发人员的很多工作,减少数据在数据库与应用服务器之间的传输,提高数据处理效率是有好处的.存储过程和函数的区别在 ...
- mysql 开发基础系列16 视图
一. 什么是视图视图是一种虚拟存在的表,行和列数据来自,定义视图的查询中使用的表,并且是在使用视图时动态生成的.优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件. ...
随机推荐
- 【linux】工作时使用的命令
几个基本操作: 1.查看当前文件夹下的内容: list 2.查看当前所在的文件夹:pwd 3.切换当前工作文件夹:cd 4.文件不存在时,新建文件:touch 5.创建目录:mkdir 6.删除指定的 ...
- PM学习梳理--业务流程和流程图介绍
- ftp协议 主动和被动两种模式模式
- 基于TeamCity的asp.net mvc/core,Vue 持续集成与自动部署
一 Web Server(Windows)端的配置 1.配置IIS,重要的是管理服务 1.1 配置FTP(前端NPM项目需要) 该步骤略,如果是在阿里云ESC上,需要开启端口21(用来FTP认证握手) ...
- 20155312 张竞予 Exp2 后门原理与实践
Exp2 后门原理与实践 目录 基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? (2)例举你知道的后门如何启动起来(win及linux)的方式? (3)Meterpreter有哪 ...
- eclipse新建servers时选中tomcat版本后next是灰色的解决
有时在编辑器里删除server后就不能重新new了,因为不能点next. 试了下面的方法,可以用. 1.退出2.到[工程目录下]/.metadata/.plugins/org.eclipse.core ...
- 解答VS2013编译报错不准确是什么原因
1.当程序在错误时,VS2013编译报出的错误有时不会一起全部报出,而是按错误的英文首字母逐个报出的 2.如果报错的信息双击点过去查看时又发现无明显错误问题时,这个这个时候可以是VS编译的缓存问题,这 ...
- cisco基本配置命令
实验命令 router> enable 从用户模式进入特权模式 router# disable or exit 从特权模式退出到用户模式 router# show sessions 查看本机上的 ...
- C++代码审查---审查孙晓宁马踏棋盘谜题程序
与孙晓宁同学结对审查,其代码地址如下:https://github.com/brunnhilder/-1/blob/master/%E9%A9%AC%E8%B8%8F%E6%A3%8B%E7%9B%9 ...
- gitlab 之 项目管理
首先git是什么? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.Git的读音为/gɪt/. Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常 ...