您的位置:首页 > 数据库 > MySQL

mysql 开发基础系列1 表查询操作

2018-06-25 18:11 375 查看
  在安装完数据库后,不管是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;


 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: