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 ...
随机推荐
- 《Django By Example》第八章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:还有4章!还有4章全书就翻译完成了 ...
- Host文件修改后无效的解决办法
什么是hosts文件? 简单的说,hosts文件是用于本地dns服务(相关主题:什么是DNS缓存,如何清除DNS缓存?)的,采用ip 域名的格式写在一个文本文件当中,Hosts是一个没有扩展名的系统文 ...
- jQuery测验题
1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? 提示使用has() $("div:has ...
- 3893: [Usaco2014 Dec]Cow Jog
3893: [Usaco2014 Dec]Cow Jog Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 174 Solved: 87[Submit] ...
- 【js数据结构】栈解决括号不匹配问题
栈可以用来判断一个算术表达式中的括号是否匹配. 思路:读取算术表达式,遇到左括号'{'.'['.'('压入栈,栈的特点是后入先出,所以当遇到右括号'}'.']'.')'的时候,取出栈顶元素,是否满足读 ...
- checkSelfPermission 找不到 Android 动态权限问题
checkSelfPermission 找不到 Android 动态权限问题 最近写了一个Demo,以前好好地.后来手机更新了新系统以后,不能用总是闪退.而且我的小伙伴的是android 7.0系统 ...
- supermap开发webgis的经验
SuperMap 开发WebGIS的经验总结 - 综合课件 - 道客巴巴 http://www.doc88.com/p-743552004620.html
- java初学代码,还不太熟练
奇数和 public class Homework01{ public static void main(String [] args){ long t=1,s=0; do{ s=s+t; t= ...
- 2015.07.20MapReducer源码解析(笔记)
MapReducer源码解析(笔记) 第一步,读取数据源,将每一行内容解析成一个个键值对,每个键值对供map函数定义一次,数据源由FileInputFormat:指定的,程序就能从地址读取记录,读 ...
- Docker remote API简单配置使用
1.启动docker remote API的方式如下: docker -d -H uninx:///var/run/docker.sock -H tcp://0.0.0.0:5678 2.但是为了伴随 ...