SQL语言基本概念

一、SQL语言简介

当面对一个陌生的数据库时,通常需要一种方式与它进行交互,以完成用户所需要的各种工作,这时候就需要使用SQL语言了。SQL(Structured Query Language)结构化查询语言,最早是由IBM在20世纪70年代开发出来,为的是IBM的关系数据库管理系统SYSTEM R开发的一种查询语言。SQL结构简洁,功能强大,简单易学,所以自从其出现,SQL得到了广泛的应用。20世纪80年代初,美国国家标准局(ANSI)开始着手定制SQL标准,当前的SQL标准已经几经修改,更趋完善!正是由于SQL语言的标准化,所以大多数关系型数据库系统都支持SQL语言,它已经发展成为多种平台进行交互操作的底层会话语言,前面加My为的是在介绍标准SQL的同时,也将一些MySQL在标准SQL上的扩展一同介绍!

二、SQL分类

1)DDL(Data Definition Languages)语句

数据定义语句,通过这类语言可以对数据库进行创建删除更改

2)DML(Data Manipulation Langyages)语句

数据操纵语句,用于添加、删除、更新和查询数据库记录并检查数据完整性

3)DCL(Data Control Langyages)语句

数据控制语句,通过此类语句可以对数据库的相关权限进行设置

三、DDL语句

对数据库内部的对象进行创建、删除、修改等操作的语言,DDL语句更多的是由数据库管理员(DBA)使用,开发人员一般很少使用。

1)创建数据库

1>create database数据库名,show databases查看数据库;

2>选择要操作的数据库:USE数据库;

3>查看数据库中所有的数据表show tables;

2)删除数据库

drop database数据库名称;

3)创建表

1>创建表

create table表名(

字段1名 字段1类型 列的约束条件,

字段2名 字段2类型 列的约束条件,

...

);

create table t1(id int,age int);

列的约束条件部分可以设置很多信息比如,默认值设置:default null

2>创建完表之后可以查看表的定义

desc表名;

3>查看创建表的SQL语句

show create table表名\G

\G选项使得记录能够按照字段竖向排列,以便更好地显示内容较长的记录,\G后面无需在加分号

4>删除表

drop table 表名;

5>修改表

1) 修改表的字段类型

alter table 表名 modify[column] 字段定义 [first|after 字段名];

2)增加表字段

alter table 表名 add[column] 字段定义 [first|after 字段名];

3)删除表字段

alter table 表名 drop[column] 字段名;

4)字段改名

alter table 表名 change[column] 旧的字段名 字段定义 [first|after 字段名];

注:change与modify都可以修改表的定义,不同的是change后面需要接两次列名,不方便,但是优点是change可以修改字段名称。

5)修改字段排列排序

前面介绍的字段增加和修改语法(add/change/modify)中,都有一个可选项first|after字段名,这个选择可以用来修改字段在表中的位置新增的字段默认是加载在表中最后位置,而change/modify默认都不会改变字段的位置。

alter table t1 modify id2 tinyint first;

alter table t1 modify id2 tinyint after id1;

注意:change/first/after字段名 这些关键字都是属于MySQL在标准SQL上的扩展,在其他的数据库上不一定适用。

6)更改表名

alter table 表名 rename[to] 新的表名;

四、DML语句

DML操作是指对数据库中表记录的操作,主要包括表记录的插入、更新、删除和查询,是开发人员日常使用最频繁的操作。

查询 select * from 表名;

1)插入记录(增)

1>插入记录

insert into 表名(字段1,字段2,字段3,...,字段n) values(值1,值2,值3,...,值n);也可以不用指定字段名,但是values后面的顺序应该和字段的排序一致。

2>一次插入多条记录

insert into 表名(字段1,字段2,字段3,...,字段n) values

(值1,值2,值3,...,值n),

(值1,值2,值3,...,值n),

(值1,值2,值3,...,值n);

2)更新记录(改)

1>更新一个表

update 表名 set 字段1=值1,字段2=值2,...字段n值n [where 条件];

update t1 set age=100(要修改的字段) where id=4 and age=100;(寻找表为id=4,字段是age=100来修改)

2>更新多个表中数据

update 表1,表2,...表n set 表1.字段1=表达式1,表n.字段n=表达式n [where 条件];

注:多表更新更多的用在根据一个表的字段来动态的更新另外一个表的字段

举例:update t1,t2 set t1.age=2000,t2.age=3000 where t1.id=1 and t2.id=1;

3)删除记录(删)

1>删除单表中的数据

delete from 表名 [where 条件];

delete from t1 where id=1;

2>删除多个表中的数据

delete 表1,表2,...表n from 表1,表2,...表n [where 条件];

不管是单表还是多表,不加where条件将会把表中的所有记录删除,所以操作时一定要小心。

4)查询记录(查)

select 字段名|* from 表名;

1>查询不重复的记录

select distinct field1,field2 from 表名;

只要field1,field2任何一个字段有不同就会被选择!

一般使用distinct,只筛选一个字段!

2>条件查询

注:条件字段比较符号:

=,<,>,>=,<=,!=等比较运算符

多个条件之间可以使用or and等

where 后面接条件

select * from 表名 where 条件

实例:select distinct * from employee where id=1(表中记录);

select distinct * from employee where id=1 or id=3;

select distinct * from employee where id=1 and id=4;(id=1的同时也等于id=4)

select distinct id,name(字段名) from employee(表名);

3>排序和限制

select * from 表名 where 条件 order by field1[desc|asc],field2[desc|asc],..fieldn[desc|asc]

如果排序字段的值一样,则值相同的字段按照第二个排序字段进行排序,依次类推。如果只有一个排序字段,则这些字段相同的记录都将无序排列!asc:由低到高(默认值)  desc:由高到低

排序:asc:由低到高(默认值)

select * from emp order by deptno,sal asc;

desc:由高到低

select * from emp order by deptno,sal desc;

多个字段排序

select * from emp order by deptno,sal desc,id desc;

限制:在语句的最后面加上limit  数字1,数字2  来进行查询数量的限制。

limit数字1,数字2   数字1代表从第几条记录开始取(是从0开始的),数字2代表取到第几条!

4>聚合

1.sum求和

select sum(salary字段名) from employee(表名);

2.count记录总数

select sum(*|字段名) from employee(表名);

3.max最大值

select max(salary字段名) from employee(表名);

4.min最小值

select max(salsry字段名) from employee(表名);

5.GROUP BY关键字表示要进行分类聚合(上面的这些函数)的字段、比如按部门分类统计员工数量,部门就应该写在GROUP BY后面。

select sum(salary字段名1|字段名2) from employee(表名) group by department;(分别统计各部门的成绩)

6.WITH ROLLUP是可选语法,表明是否对分类聚合后的结果进行再汇总!

select sum(salary字段名1|字段名2) from employee group by department with rollup;(分别统计各部门的成绩,同时把各部门成绩总数汇总)

7.HAVING关键字表示对分类后的结果再进行条件的过滤!

select sum(salary字段名1|字段名2) from employee group by department having sum(salary)>500

(分别统计完各部门的成绩后,过滤掉小过500的成绩)

注意:having和where的区别在于,having是对聚合后的结果进行条件过滤,而where是在聚合前就对记录进行过滤,应该尽可能的记录进行先过滤!

5>表连接

需求:显示多个表中的字段的时候即可使用表连接

连接分类

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

外连接:不仅仅选取两张相互匹配的记录,并且会选出其他不匹配的记录

举例:

内连接

select 表.字段,.... from 表1名,表2名,.... where [匹配的条件比如 表1.字段=表2.字段];

select 语句可以给字段起别名!直接写在需要查询显示的字段的后面就OK!

外连接

1)左连接概念:包含左边表中的所有记录(包括右表中没有和它匹配的记录)

select ename,deptname from emp left join dept on emp.deptno=dept.deptno;

2)右连接概念:包含右边表中的所有记录(包括左表中没有和它匹配的记录)

左连接和右连接是可以相互转换的!

6>子查询

需求:一个查询需要另外一个查询的结果参与的时候

用于子查询的关键字:

1.in

语法:select * from employee where id in(select eid from employee_late);

in 在...里面

注意点:in后面的子语句必须只返回一个字段

若查询结果唯一(只有一条)可以使用=代替in

2.not in

与in相反

3.exists

语法:select语句 where exists(select 语句);

exists:后面那个子语句有没有查询出记录来,如果查询出记录来返回true,否则就是false并且查询出来的记录的具体的值是NULL也是没有关系,也是返回true.

not exits

与exits相反

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

若查询结果唯一可以使用=替代in

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

7>记录联合

碰到需要将两个表或者多个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示这就需要用多个select语句,用UNION或者UNION ALL隔开即可实现

区别:前者 会将多个查询结果合并后并且进行去除重复返回

后者 则直接合并不去除重复

联合的条件:查询的列个数要相等

五、DCL语句

DCL语句主要是DBA用来管理系统中的对象权限时使用的,一般开发人员很少使用。关于权限设置的更多内容以后再做详细讲解。

步骤一:首先需要登录MySQl,mysql-u用户名-p敲回车键,然后输入密码即可

步骤二:命令结束符用“;”或“/g”

步骤三:客户端的连接ID,这个数字记录了MySQL服务到目前为止的连接次数,每个新连接都会自动加1

时间: 2024-10-13 16:41:41

SQL语言基本概念的相关文章

SQL语言基础-基本概念

SQL:IBM的圣约瑟(SanJose),SEQUEL 2(也就是现在的SQL语言) 1979.Oracle首先提出提供了商用的SQL语言 1986.10美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3.135-1986),后来被ISO采纳为国际标准 目前大部分数据库都遵守ANSI SQL 89标准(99-最高) SQL语言分类: DQL(数据查询语言):SELECT DML(数据操作语言):INSERT UPDATE DELETE TCL(事务控制语言):COMMIT R

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28

Oracle SQL语言DML语句与事务_超越OCP精通Oracle视频教程培训28 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第3/5套:Oracle SQL语言DML语句与事务.主要学习Oracle数据库SQL语句INSERT命令,学习使用UPDATE命令,学习使用DELETE命令,学习创建PL/SQL对象,事务概念与控制,锁的检测和锁争用,了解撤销数据. Oracle SQL语言DML语句与事务管理,课

标准SQL语言的用法

原文链接:http://www.ifyao.com/2015/05/18/%E6%A0%87%E5%87%86%E7%9A%84sql%E8%AF%AD%E8%A8%80%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95%E5%8F%8A%E5%A4%9A%E8%A1%A8%E8%BF%9E%E6%8E%A5/ 标准SQL语言的用法 SQL语言是目前最通用的关系数据库语言.ANSI SQL是指由美国国家标准局(ANSI)的数据库委员会制定的标准SQL语言,多数关系数据库产品

Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐

风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入门:SQL语言DDL语句和对象管理,表/临时表/索引/约束/视图/同义词/序列/触发器/存储过程/包的创建管理:SQL语言DML语句,SQL语句INSERT/UPDATE/DELETE,PL/SQL创建,事务与锁:SQL语言Select查询语句,SQL查询限制排序,联接查询,SQL子查询:SQL语言

Oracle PL/SQL语言入门

简介:PL/SQL(Procedural Language/Structured Query Language)是一种过程化语言,属于第三代语言,它与C.C++.Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑.它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言. 一.背景介绍 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通

Impala SQL 语言元素(翻译)[转载]

原 Impala SQL 语言元素(翻译) 本文来源于http://my.oschina.net/weiqingbin/blog/189413#OSC_h2_2 摘要 http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_langref_sql.html 目录[-] Impala SQL 语言元素(Elements) ALTER T

好程序员Java分享SQL语言之索引

好程序员Java分享SQL语言之索引,前言:本章我们将学习MySQL中的索引,本文将从索引的作用.索引的分类.创建索引的语法.索引的使用策略以及索引的实现原理等方面带大家了解索引. 索引的作用 索引的作用就是加快查询速度,如果把使用了索引的查询看做是法拉利跑车的话,那么没有用索引的查询就相当于是自行车.目前实际项目中表的数据量越来越大,动辄上百万上千万级别,没有索引的查询会变得非常缓慢,使用索引成为了查询优化的必选项目. 索引的概念 索引其实是一种特殊的数据,也保存在数据库文件中,索引数据保存着

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26

Oracle SQL语言基础及环境准备_超越OCP精通Oracle视频教程培训26 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第1/5套:SQL语言之基础入门及环境准备.主要学习Oracle数据库SQL语言基础介绍.PL/SQL语言介绍.数据库SQL对象与数据类型介绍.SQL语言实战环境准备等. Oracle SQL语言之基础及环境准备,课程内容详细如下: Oracle数据库SQL语言基础介绍Oracle数据

Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27

Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第2/5套:Oracle SQL语言DDL和对象管理.主要学习Oracle数据库模式对象和表中可用的数据类型,表/临时表的创建与使用,索引/约束的创建与管理,视图/同义词/序列的创建和使用,触发器/存储过程/包的创建和使用. Oracle SQL语言DDL和对象管理,课程内容详细如下