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 视图
一. 什么是视图视图是一种虚拟存在的表,行和列数据来自,定义视图的查询中使用的表,并且是在使用视图时动态生成的.优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件. ...
随机推荐
- BSOJ3760||洛谷P1453 城市环路 题解
城市环路 Description 一座城市,往往会被人们划分为几个区域,例如住宅区.商业区.工业区等等.B市就被分为了以下的两个区域——城市中心和城市郊区.在着这两个区域的中间是一条围绕B市的环路,环 ...
- ubuntu18.04静态ip设置
1.配置文件 vi /etc/netplan/-cloud-init.yaml network: ethernets: enp129s0f0: addresses: [] dhcp4: true op ...
- 致C#,致我这工作一年(下)
上一篇被很多前辈吐槽排版啊!哈哈!排版是有点土...继续接上文! 依旧跌宕起伏的人生 上次说到我面试通过了,然后我记得那一天的我太高兴了,把这一消息发给我父母和我所有的好基友,然后第二天就入职了,我记 ...
- 复习支持向量机(SVM)没空看书时,掌握下面的知识就够了
支持向量机(support vector machines, SVM)是一种二类分类模型.它的基本模型是定义在特征空间上的间隔最大的线性分类器:支持向量机还包括核技巧,这使它成为实质上的非线性分类器. ...
- Effective Java -- 使可变性最小化
为了使类成为不可变的,应该遵循以下五条原则: 1. 不要提供任何会下盖对象状态的方法 2. 保证类不会被扩展 3. 使所有的域都是final的 4. 使所有的域都成为私有的 5. 确保对于任何可变组件 ...
- HTML之 一 标签
一 ,标签分类: 1.普通标签: <h1> hello </h1> hello 2.自闭和标签 <hr/> 二,书写html注意事项 1.标签不能交叉嵌套 2. 标 ...
- redis操作(String,Hash,List,Set,其他操作)
一.String操作 String操作,redis中的String在在内存中按照一个name对应一个value来存储.如图: set(name,value,ex=None,px=None,nx=Fal ...
- CSS3新增特性及知识学习线路
- HTML标签的绝对路径和相对路径
我在javaweb中写json的Demo的时候遇到了这个问题,图片一一直取不出来,查了好久终于解决了,所以现在记录一下. 绝对路径: 其实很容易理解,如果你是一个普通的项目,那就是它在你电脑里真实存在 ...
- 安装Nodejs、npm、Less
最近学习到Bookstrap的时候需要用到less这门预处理的CSS语言.其中需要将less文件转换成css文件.记录一下,方便自己以后查找. 安装Nodejs和npm 1:到https://node ...