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 视图
一. 什么是视图视图是一种虚拟存在的表,行和列数据来自,定义视图的查询中使用的表,并且是在使用视图时动态生成的.优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件. ...
随机推荐
- 如何高效的学习 TensorFlow 代码?
https://www.zhihu.com/question/41667903 Linux[公共基础]:TensorFlow的主要运行平台之一就是Linux,但是正式版对Windows的支持日趋完善, ...
- spo0lsv病毒分析
1.样本概况 1.1 样本信息 病毒名称:spo0lsv.exe 所属家族:Worm MD5值:512301C535C88255C9A252FDF70B7A03 SHA1值:CA3A1070CFF31 ...
- mathematic语法基础
1. 注释,用 (*这是注释*) 2.清除空间变量 Clear["`*"] 3. 求方程组.这个方程组比较特殊,有五个方程,六个变量,求其中五个变量(因变量)用另外一个变量(自 ...
- JavaScript基础视频教程总结(081-090章)
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- webpack多页面配置
const path = require('path'); const CleanWebpackPlugin = require('clean-webpack-plugin'); const Html ...
- SJCP认证题前五十题填坑
在做Java的SJCP认证试题时自己整理了一些Java基础细节知识点,以下是知识点陈列 1.标签机制:标签起作用的唯一的地方刚好在迭代语句之前(不然编译错误) continue label1 直接转到 ...
- Python爬虫的学习经历
在准备学习人工智能之前呢,我看了一下大体的学习纲领.发现排在前面的是PYTHON的基础知识和爬虫相关的知识,再者就是相关的数学算法与金融分析.不过想来也是,如果想进行大量的数据运算与分析,宏大的基础数 ...
- [转] 分代垃圾回收的 新旧代引用问题(原标题:Back To Basics: Generational Garbage Collection)
原文链接: https://blogs.msdn.microsoft.com/abhinaba/2009/03/02/back-to-basics-generational-garbage-colle ...
- java 判断用户是PC端和还是APP端登陆
java 判断用户是PC端和还是APP端登陆 public void getRequestHeader(HttpServletRequest request){ // 从浏览器获取请求头信息 Stri ...
- day18_雷神_django第一天
# django_day01 1.http 协议 超文本传输协议,HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信. 协议概述 HTTP是一个客户端终端(用户)和服务器端( ...