SQL基础增删改查
一、基础语句介绍
SQL 可以分为两个部分:数据操作语言(DML)和数据定义语言(DDL)
1、数据操作语言(DML)基本指令:
select 从数据表中获取数据(现阶阶段,二次开发常用)
update 更新数据库表中的数据
delete 从数据库表中删除数据
insert into 向数据库表中插入数据
2、数据定义语言(DDL)基本指令:
create database 创建新数据库
alter database 修改数据库
create table 创建新表
alter table 变更(改变)数据库表
drop table 删除表
create index 创建索引(搜索键)
drop index 删除索引
Ps: 因为不需要构建一个新的系统(在这里也可以理解为一个前端项目),不需要分析存储数据的类型等内容,所以关于数据定义语言(DDL)部分不进行介绍,主要掌握数据操作语言(DML)的基本指令, 尤其是selelct。这里暂时仅整理关于select 查询指令的内容。
二、数据操作语言(DML)指令
SELECT
Select 列名1,列名2 from 表名称 从表中获取对应的列名1,列名2...对应的数据
Select * from 表名称 从表中获取所有列名对应的数据
结果均存储在一个结果表中(也就是sql sever 的结果界面中)
例如下里表persons中数据进行查询:
Select LastName,firstname from persons (ps:sql 语言不区分大小写,但是习惯单词首字母大写)
persons表:
|
Id |
LastName |
FirstName |
Address |
City |
|
1 |
Adams |
John |
Oxford |
London |
|
2 |
Bush |
George |
Fifth |
New York |
|
3 |
Carter |
Thomas |
Changan |
Beijing |
上述查询结果如下:
|
LastName |
FirstName |
|
Adams |
John |
|
Bush |
George |
|
Carter |
Thomas |
Select * From Persons 查询时结果与persons表的形式一样
Ps:星号(*)是选取所有列的快捷方式
DISTINCT
distinct为sql 关键字,主要用来剔除重复的数据值,返回唯一不同的值。
语法:Select distinct 列名 from 表名
WHERE 子句
主要用途:根据已知条件从表中选取数据
语法:select 列名 from 表名 where 列 运算符 值
运算符可如下:
|
= |
等于 |
|
<> |
不等于 |
|
> |
大于 |
|
< |
小于 |
|
>= |
大于等于 |
|
<= |
小于等于 |
|
BETWEEN |
在某个范围内 |
|
LIKE |
搜索某种模式 |
Ps: 在某些版本的sql 中 ,操作符<>可以写成!=。
如果值为字符类型的需要用单引号环绕
Select * from 表名 where 列 = ‘值’ 该值为字符非数字类 , 若是值为数值是可以去除单引号。否则可能出现错误提示 例如:
文本
数值
AND 和 OR
AND 和 OR 可以把where 子语句中两个或多个条件结合起来
AND :所有条件都满足
OR :只要有一个条件满足即可
Ps: 下述例子中 = 的位置可以根据要求替换其他运算符; 理论上条件可以无限制的增加到列n,但是在此处只用两个条件, 条件数目增加与两个条件的结果类似;列1与列2可以相同,请根据实际要求;’条件n’ 等同于 ‘列n=值n’
Select * from 表 where 列1 = 值1 and 列2= 值2
查询显示的结果为表中同时满足条件1、条件2的所有数据
Select * from 表 where 条件1 or 条件2
查询显示的结果:表中满足条件1 和条件2中任意一个的所有数据
ORDER BY 用于对结果集进行排序 ASC 顺(升)序 DESC逆(逆)序
例子:
Orders表
|
Company |
OrderNumber |
|
IBM |
3532 |
|
W3School |
2356 |
|
Apple |
4698 |
|
W3School |
6953 |
select * from Orders order by company desc(asc)
查询Orders表并对companny中数据进行逆序(顺序)排序输出
对于多次排序语句:
以逆字母顺序显示公司名称,并以数字顺序显示顺序号
Select * from orders order by company desc ,ordernumber
查询orders表,先对companny 进行逆序排序,在对orderNumber 进行顺序排序结果如下
其中 orderNumber 后没有关键字, 即默认asc 顺序(order by 默认时为顺序排序)
|
Company |
OrderNumber |
|
W3School |
2356 |
|
W3School |
6953 |
|
IBM |
3532 |
|
Apple |
4698 |
关于 insert into、update、delete 只给出基础语句
*切记值的类型根据插入或更新的数据自行判断是否添加引号
之后在有语法中提到值n的时候不在进行解释 , 需要自己在实际工作进行添加引号,语法只为显示语句的使用。
INSERT INTO 用于向表中插入数据
语法
1、Insert into 表名 values(值1,值2......)
上述插入语句,需要知道表中列名的数据类型,values()中的值必须与表中列名一一对应,不可调换位置,不可以缺少值
Eg:
表 student 中列名有 sno ,sname,sage,sex,sclass
正确插入语句 insert into student(1111,’张三’,12,’男’,’十一班’)
错误插入语句 insert into student(1111,12,’男’,’十一班’)
Insert into student(1111,12,’张三’,’男’,’十一班’)
这两种都是错误的插入语句
2、Insert into table_name(列1,列2......)values(值1,值2......)
上述insert into 语句为基本类型的插入语句
以上述语句为基础 ,还有类似符合的insert into 语句 即 插入的数据为查询的结果
Insert intoa table_name(列1,列2......)values(select 值1, 值2,...... from table_name1 where 条件)
这类插入语句,如果对表中的列属性不清楚,很容易出现问题,并不一定适用,不建议使用。还是老老实实的一条一条插入。
UPDATE 用于更新表中的数据
语法
update 表名 set 列名 = 新值 where 列名 = 某值
Ps:列名 = 某值 实际上就是选择条件 之后不在说明。
DELETE 用于删除表中的行数据
语法
delete from 表名 where 列名 = 某值
ps:无论是数据操作语言(dml)还是数据定义语言(ddl)在进行删除delete、drop 操作的时候,最好先对原表进行备份,避免错误操作导致数据丢失。
因为数据库的不同,方法有所差别 ,具体内容可参考下述网站中的内容
http://blog.csdn.net/longshenlmj/article/details/17719323
总结:
上述内容为基本内容,也是工作中使用的最基本的语句。
下面介绍的高级内容,是在基础内容上进行扩充,让查询使用更多的实际情况, 如多表查询,数据类型转换等。其中join 、通配、like、in等需要掌握并会使用,函数内容最好了解,在使用的时候也可以现查。在第二部分,标题前 有星号*的,根据个人经验在工作使用较多的知识点。
实际上高级内容,也是基本内容,如果全能掌握更好,个人建议先将工作中能用到的学会后,在进一步强化学习。
高级内容基本上都是各个模块进行介绍,在实际中可能需要将基础内容+高级内容中N个才能得到工作需要的数据,需要自己进行组合
还有一点说明,在实际工作中, 因为数据库本身问题,部分语句可能并不适用所有数据库,但是并未说明,但是罗列出来的语法内容基本上使用所有数据库,若是出现提示,请根据所使用的数据库查询所需要的语句,例如:mysql的备份语句,oracle的备份语句,sql sever的备份语句。
二、高级内容介绍
*TOP语句 用于规定要返回的记录的数目
SQL sever 语法:
select top number | percent column_name(s) from table_name
number : 返回记录的具体数值
percent: 返回记录的具体百分比
column_name(s) :列名
table_name :表名
eg: select top 2 * from student 查询并返回student中前两条数据
扩展: select top 20% sname from student where sage >18
查询并返回student表中前20%的学生年龄大于18的名字。
Ps:还可对列名进行排序操作,可能出现不同的结果。工作上基本上都会进行排序(order by)操作,使得每次调用数据的时候都可以是相同的顺序。
Oracle mysql 的语法依次如下(top 并不适用这两种数据库系统):
select column_name(s) from table_name rownum <=number
Select column_name(s) from table_name where limit number
*LIKE 用于在where子句中搜索列中的指定模式
语法:
Select column_name(s) from table_name where column_name [NOT] LIKE pattern
Pattern 搜索的规则 一般都会与通配符组合使用
[not] :[]中的内容可以选择使用, like前出现not的时候表示查询的结果为不符合搜索的数据
例:
Person表
|
Id |
LastName |
FirstName |
Address |
City |
|
1 |
Adams |
John |
Oxford Street |
London |
|
2 |
Bush |
George |
Fifth Avenue |
New York |
|
3 |
Carter |
Thomas |
Changan Street |
Beijing |
Select * from Person where city like ‘%g’
结果为id=3的行数据
Select * from person where city not like ‘%g’
结果为剔除id=3的2行数据
‘%g’ 为结尾g的字符集
*通配符 与LIKE运算符一起使用
|
通配符 |
描述 |
|
% |
替代一个或多个字符 |
|
_ |
仅替代一个字符 |
|
[charlist] |
字符列中的任何单一字符 |
|
[^charlist]或者[!charlist] |
不在字符列中的任何单一字符 |
通配符
基本上%、_和[charlist]为常用通配符。
Select * from person where city like ‘[ALN]%’
结果 id=1 ,id=2的2行数据
解析:city以“A”、“L”、“N”开头的数据
*IN 实际上允许在where子句中规定多个值
语法:
Select colunm_name(s) from table_name where column_name in(value1,value2,value3......)
解析:column_name 的值只要在(value1,value2,value3......)这个集合里面都是满足条件的
以上述person表为例:
1、Select * from person where lastname in (‘Adams’,’Bush’) 查询姓氏为Adams、Bush的人
2、Select * from person where lastname in (‘Adams’,’Bush’,’Ddddd’)
解析:
查询语句2与1比较,可以发现在集合中多个’Ddddd’ 这个值,但是在person表中并不存在 ,但是一样可以输出与1形同的结果行数据
|
Id |
LastName |
FirstName |
Address |
City |
|
1 |
Adams |
John |
Oxford Street |
London |
|
2 |
Bush |
George |
Fifth Avenue |
New York |
实际上in 语句 也可以理解问类似or运算符的一种简写只要满足的都会被查询出来
Select * from person where lastname in (‘Adams’,’Bush’)
等价于
Select * from person where lastname = ‘Adams’ or lastname = ‘Bu
SQL基础增删改查的更多相关文章
- Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)
day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库: 简称:DataBase ---->DB 数据库即存放数据的仓库, ...
- 【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建
数据库的创建和sql语句增删改查 1. 载入驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, nam ...
- 数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)
SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) ...
- 基本 SQL 之增删改查(一)
上篇文章,我们介绍了数据的基本 DDL 语句,你应当具备基本的创建数据库.数据表的 SQL 语句,以及表字段的基本数据类型的熟知. 那么本篇就来总结总结大家日常最频繁接触到的 DDM 语句,也就是基本 ...
- web sql 基本操作 - 增删改查
不喜欢看md原文的 可以访问这个链接:http://note.youdao.com/noteshare?id=6a91e3dea7cdf5195bb0e851d9fcb5a5 # web sql 增删 ...
- MongoDB 基础增删改查
增删改查 基础操作 use show dbs show collections db[当前所在数据库] 插入文档 db.collection.insert() db.collection.insert ...
- MongoDB学习笔记,基础+增删改查+索引+聚合...
一 基础了解 对应关系 -> https://docs.mongodb.com/manual/reference/sql-comparison/ database -> database ...
- SQL数据库增删改查
数据类型 运行cmd 输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据库服务 输入net pause MSSQLserve ...
- Hibernate基础增删改查语法
1.创建好Hibernate项目,创建好实体类和测试类,如果不会创建Hibernate项目的同学,点此处:http://www.cnblogs.com/zhaojinyan/p/9336174.htm ...
随机推荐
- 徒手用Java来写个Web服务器和框架吧<第二章:Request和Response>
徒手用Java来写个Web服务器和框架吧<第一章:NIO篇> 接上一篇,说到接受了请求,接下来就是解析请求构建Request对象,以及创建Response对象返回. 多有纰漏还请指出.省略 ...
- Javascript把数据从一个页面的层传递到另一个页面层里面
背景:昨天头脑发热投了某一家国企的计算机类岗位(说是有前端岗位),通过找同学内推,虽然也笔试了一大堆题目(行测题,计算机网络,http协议,英译汉,古诗文默写,自己把品质排序并且进行200字以上的阐述 ...
- 【webpack】-- 样式加载
加载css需要用到css-loader和style-loader css-loader将@import 和 url 处理成正规的ES6 import ,如果@import指向的是一个外部资源,css- ...
- 每天一个Linux命令 4
Linux系统关机命令 shutdown -h 时间 init 0 poweroff Linux系统注销命令 logout 或者是快捷键 Ctrl+d Linux系统重启命令 reboot Linux ...
- Android7.0 Phone应用源码分析(四) phone挂断流程分析
电话挂断分为本地挂断和远程挂断,下面我们就针对这两种情况各做分析 先来看下本地挂断电话的时序图: 步骤1:点击通话界面的挂断按钮,会调用到CallCardPresenter的endCallClicke ...
- 隐性URL与显性URL区别与SEO考虑
隐性URL与显性URL经常在实现页面跳转的时候用到,这两种方式有什么区别,各自对SEO有什么影响?看一下阿里云的官方文档解释: 显性URL转发: 例如: http://b.com/ 指向 http:/ ...
- (14)jdk1.5开始的一些新特性:静态导入,增强for循环,可变参数,自动装箱/拆箱,枚举类型
Jdk1.5新特性之静态导入 jdk1.5新特性值静态导入 静态导入的作用:简化缩写 静态导入的作用:可以作用一个类的所有静态成员. 静态导入的格式:import static 包名.类名.静态的成员 ...
- JAVA-Servlet-过滤器知识总结
JAVA Filter是什么呢? Servlet过滤器实际上就是一个标准的java类,这个类通过实现Filter接口获得过滤器的功能.它在jsp容器启动的时候通过web.xml配置文件被系统加载.Se ...
- iOS开发之URLSession
1.概述 n NSURLSession是iOS7中新的网络接口,与NSURLConnection是并列的. n 当程序在前台时,NSURLSession与NSURLConnection大部分可以互 ...
- lsusb命令
运行 yum install libusb usbutils