zoukankan      html  css  js  c++  java
  • 【mysql5.6】SQL基础

    我买了本深入浅出MySQL, 记录一下笔记。

    一、数据定义语言(DDL)

    1.创建数据库  create database name;

    2.显示所有的数据库  show databases;

    3.选择操作的数据库  use dbname;

    4.显示所选择的的数据库中所有的数据表 show tables;

    5.删除数据库 drop database dbname;

    6.创建表

    create table tablename(
    column_name1  column_type1  constraints,
    column_name2  column_type2  constraints,
    column_name3  column_type3  constraints,
    .....
    );

    7.查看表的定义  desc tablename;

    8.查看表的定义2 show create table tablename G;

    9.删除表 drop table tablename;

    10.修改表 alter table语句

    (1)修改表类型

    alter table tablename modify [column] column_definition [first|after col_name];

    如把emp的ename字段改为varchar(20);

    (2)增加表字段

    alter table tablename add [column] column_definition [first|after col_name]

    如,在emp中增加新字段age,类型int(3): alter table emp add column age int(3);

    (3)删除表字段

    alter table tablename drop [column] col_name;

    如,删除emp中的age字段: alter table emp drop column age;

    (4)字段改名

    alter table tablename change [column] old_col_name column_definition [first|after col_name];

    如,将age字段改名为age1,并且修改字段类型为int(4): alter table emp change age age1 int(4);

    change 和 modify 都可以修改属性 不过change要输入两次名称

    (5)修改字段排列顺序 first|after column_name 选项用于此处

    例1:把birth date型字段加在ename之后:alter table emp add birth date after ename;

    例2:把age字段放在最前面: alter table emp modify age int(3) first;

    (6)修改表名  

    alter table tablename rename [to] new_tablename;

    如,将emp改名为emp1: alter table emp rename emp1;

    二、数据操纵语句(DML语句)

    1.插入记录

    在emp中插入一条记录 insert into emp (ename, hiredate, sal, deptno) values('zzx1','2015-06-09','2000',1);

    不指定字段名称,则values后的顺序应该与排列顺序一致  insert into emp values('zzx1','2015-06-09','2000',1);

    一次插入多条  insert into dept values (5,'dept5'),(6,'dept6');

    2.更新记录

    将表dept中deptno=5的deptname改为'lisa': update dept set deptname='lisa' where deptno=5;

    同时更新多个表的记录: update emp a,dept b set a.sal=a.sal*b.deptno,b.deptname=a.name where a.deptno=b.deptno;

    3.删除记录

    delete from tablename [where condition]; //如果不加where条件,则会删除表的所有记录

    例1:delete form emp where ename='dony';

    例2,同时删除多个表的相关记录:delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3;

    4.查询记录

    select * from tablename [where condition];

    查询emp的所有记录: select * form emp;

    查询emp的ename和deptno字段: select ename, deptno from emp;

    (1)查询不重复记录 distinct

    显示emp中不重复的的deptno: select distinct deptno from emp;

    (2)条件查询 where关键字

    显示emp中的deptno=1的记录:select * from emp where deptno=1;

    多字段条件查询:select * from emp where deptno=1 and sal<3000;

    (3)排序 order by关键字

    select * from tablename [where condition] [order by field1 [descasc], field2 [descasc],...;  //默认升序 asc

    把emp表中的记录按照工资高低进行显示:select * from emp order by sal;

    (4)限制 limit

    select ... [limit offset_start, row_count]; //offset_start其实偏移量 默认为0

    显示emp中按sal排序后的前3条记录:select * from emp order by sal limit 3;

    显示emp中按sal排序后的从第二条记录开始的前3条记录:select * from emp order by sal limit 1,3;

    (5)聚合

    select [field1,field2...] fun_name from tablename [where where_condition] [group by field1,field2,...] [with rollup] [having where_contition];

    说明:

    fun_name表示要做的聚合操作,常用sum(求和), count(*)(记录数), max, min;

    group by 表示要进行分类聚合的字段

    with rollup 表明是否对分类聚合后的结果进行再汇总

    having 对分类后的结果再进行条件过滤

    例:

    统计emp中公司总人数: select count(1) from emp;

    统计emp中各个部门人数: select deptno,count(1) from emp group by deptno;

    统计emp中各部门人数和总人数:select deptno,count(1) from emp group by deptno with rollup;

    统计人数大于1的部门:select deptno, count(1) from emp group deptno having count(1)>1;

    统计公司所有员工的薪水总额,最高和最低薪水: select sum(sal),max(Sal),min(sal) from emp;

    (6)表链接

    内连接:仅选出两张表表中互相匹配的记录。

    查询所有雇员的名字和所在部门:select ename,deptname from emp,dept where emp.deptno=dept.deptno;

    外连接:会显示其他不匹配的记录

    左连接:包含所有左边表中的记录,甚至右边表中没有和它匹配的记录

    右连接:与左连接相反

    例左连接:select name,deptname from emp left join dept on emp.deptno=dept.deptno;

    例右连接:select name,deptname from dept right join emp on emp.deptno=dept.deptno;

    上面两个例子显示相同。

    (7)子查询

    常用关键字 in, not in, =, !=, exists, not exists等

    例从emp表中查询出所有部门在dept表中的所有记录:select * from emp where deptno in (select deptno from dept);

    select * from emp where deptno = (select deptno from dept);

    (8)联合 union, union all

    将emp和dept表的部门编号的集合显示出来:select deptno from emp union all select deptno from dept;

    去掉重复记录:select deptno from emp union select deptno from dept;

    三、数据控制语句(DCL语句)

    没看。

    四、帮助的使用

    1.显示所有可供查询的分类: ? contents;

    2.用 “? 类别名称”进一步查询, 如查询数据类型:  ? Data Types;

    3.查询命令的用法:“? 命令名称”, 如查询show命令: ? show;

    五、元数据信息查询

    没细看,好复杂的样子。

  • 相关阅读:
    oracle 在C# 中调用oracle的数据库时,出现引用库和当前客户端不兼容的问题解决方案
    oracle user locked(timed)处理
    Windows下Oracle 11g安装以及创建数据库
    Windows下Oracle 11g创建数据库
    Windows下Oracle 11g的下载与安装
    C# 正则表达式大全
    socket-WebSocket HttpListener TcpListener 服务端客户端的具体使用案例
    InstallUtil操作WindowsService
    通过cmd 使用 InstallUtil.exe 命令 操作 windows服务 Windows Service
    Robots.txt 协议详解及使用说明
  • 原文地址:https://www.cnblogs.com/dplearning/p/4563868.html
Copyright © 2011-2022 走看看