【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 [desc\asc], field2 [desc\asc],...; //默认升序 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;
五、元数据信息查询
没细看,好复杂的样子。
【mysql5.6】SQL基础的更多相关文章
- 信安周报-第02周:SQL基础
信安之路 第02周 Code:https://github.com/lotapp/BaseCode/tree/master/safe 前言 本周需要自行研究学习的任务贴一下: 1.概念(推荐) 数据库 ...
- [SQL] SQL 基础知识梳理(一)- 数据库与 SQL
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...
- [SQL] SQL 基础知识梳理(二) - 查询基础
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(三) - 聚合和排序
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...
- [SQL] SQL 基础知识梳理(四) - 数据更新
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...
- [SQL] SQL 基础知识梳理(五) - 复杂查询
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...
- 黑马程序员+SQL基础(上)
黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...
- Oracle SQL 基础学习
oracel sql 基础学习 CREATE TABLE USERINFO ( ID ,) PRIMARY KEY, USERNAME ), USERPWD ), EMAIL ), REDATE DA ...
- 第一章 SQL基础
第一部分:SQL基础1. 为什么学习SQL自人类社会形成之日起,社会的运转就在不断地产生和使用各种信息(文献.档案.资料.数据等):在如今所谓的信息时代,由于计算机和互联网的作用,信息的产生和使用达到 ...
- SQL基础--> 约束(CONSTRAINT)
--============================= --SQL基础--> 约束(CONSTRAINT) --============================= 一.几类数据完 ...
随机推荐
- springMVC+jpa配置之简单案例
搭建springMVC+jpa的亲身经历,看着网上的博客,自己摸索着搭建框架结果错误一大堆.现在把流程走一遍,方便以后查看. 其中我遇到这样的一个问题:直接启动tomcat运行保存实体能通过,但是通过 ...
- SQL语句基础之 管理数据库,表 和 数据
MySQL中的基本sql语句 MySQL中主要有三个大的对象,第一个是数据库,有了数据库后,我们才能在数据库里面建表,因为Mysql是关系数据库,它的数据都会以记录的形式存到表里,所以第二个是表,然后 ...
- 安装SQL Server Management Studio遇到的29506错误
首先要在IIS里把internet 信息哪项选上.然后在安装SQL Server, 在安装的时候一直报 29506错误,装了几次,不知道什么原因.谷歌了一下说是权限的问题. 很纳闷,我当然用的是管理员 ...
- 算法系列3《SHA》
SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用.该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小 ...
- StyleCop学习笔记——自定义规则
本文将简单的一步一步的指导这可能有助于学习如何创建自己的规则 1.创建一个项目. Visual Studio创建一个新的类库项目.NET3.5 2.引用两个DLL,StyleCop.dll和Style ...
- Python input()
在Python语言中,我们经常需要与用户实现交互,下面是一个小实例 # -*- coding:UTF-8 -*- #获取输入参数,并将输入的值存储到txt文件中 String1 = input(&qu ...
- 使用shell从DB2数据库导出数据
使用shell脚本根据输入的用户名,数据库名,密码从DB2数据库导出数据 (1)a.sh脚本如下 #!/usr/bin/bash read -p "please input your DBN ...
- JAVA基础-子类继承父类实例化对象过程
之前在项目中碰到这样一个问题: 类B继承了类A,B在实例化的时候,A的构造方法中调用了B的某个方法,并且B的方法中对B的成员属性进行了初始化,然后最后得到的B对象的成员属性为空. 代码场景如下: 这里 ...
- SQL Server中查询用户的对象权限和角色的方法
--SQL Server中查询用户的对象权限和角色的方法 -- 查询用户的object权限 exec sp_helprotect NULL, 'sa' -- 查询用户拥有的role exec sp_h ...
- iOS学习之Object-C语言类的扩展
一.Category 1.Category:也叫分类,类目.是为没有源代码的类扩充功能.扩充的功能会成为原有类的一部分,可以通过原有类或者原有的对象直接调用,并且可继承. 2.注意 ...