1 增
1.1[插入单行]
insert [into] <表名> (列名) values (列值)
例: insert into Strdents (姓名, 性别, 出生日期) values ('开心朋朋','男','1980/6/15')
1.2[将现有表数据添加到一个已有表]
insert into <已有的新表> (列名) select <原表列名> from <原表名>
例: insert into tongxunlu ('姓名','地址','电子邮件')
- select name,address,email
- from Strdents
1.3[直接拿现有表数据创建一个新表并填充]
select <新建表列名> into <新建表名> from <源表名>
例: select name,address,email into tongxunlu from strdents
1.4[使用 union 关键字合并数据进行插入多行]
insert <表名> <列名> select <列值> tnion select <列值>
例: insert Students (姓名, 性别, 出生日期)
- select '开心朋朋','男','1980/6/15' union(union 表示下一行)
- select '蓝色小明','男','19**/**/**'
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2 删
2.1[删除 <满足条件的> 行]
delete from <表名> [where <删除条件>]
例: delete from a where name='开心朋朋'(删除表 a 中列值为开心朋朋的行)
2.2[删除整个表]
truncate table <表名>
truncate table tongxunlu
注意: 删除表的所有行, 但表的结构, 列, 约束, 索引等不会被删除; 不能用语有外建约束引用的表
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3 改
update <表名> set <列名 = 更新值> [where <更新条件>]
例: update tongxunlu set 年龄 = 18 where 姓名 ='蓝色小名'
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 查
4.1`` 精确 (条件) 查询
select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列名>[asc 或 desc]]
4.1.1[查询所有数据行和列]
例: select * from a
说明: 查询 a 表中所有行和列
4.1.2[查询部分行列 -- 条件查询]
例: select i,j,k from a where f=5
说明: 查询表 a 中 f=5 的所有行, 并显示 i,j,k3列
4.1.3[在查询中使用AS更改列名]
例: select name as 姓名 from a where xingbie='男'
说明: 查询 a 表中性别为男的所有行, 显示 name 列, 并将 name 列改名为 (姓名) 显示
4.1.4[查询空行]
例: select name from a where email is null
说明: 查询表 a 中 email 为空的所有行, 并显示 name 列; SQL 语句中用 is null 或者 is not null 来判断是否为空行
4.1.5[在查询中使用常量]
例: select name, '唐山' as 地址 from Student
说明: 查询表 a, 显示 name 列, 并添加地址列, 其列值都为'唐山'
4.1.6[查询返回限制行数(关键字: top percent)]
例1:select top 6 name from a
说明: 查询表 a, 显示列 name 的前6行, top 为关键字
例2:select top 60 percent name from a
说明: 查询表 a, 显示列 name 的 60%,percent 为关键字
4.1.7[查询排序(关键字: order by , asc , desc)]
例: select name
- from a
- where chengji>=60
- order by desc
说明: 查询 a 表中 chengji 大于等于 60 的所有行, 并按降序显示 name 列; 默认为ASC升序
4.2`` 模糊查询
4.2.1[使用 like 进行模糊查询]
注意: like 运算副只用于字符串, 所以仅与 char 和 varchar 数据类型联合使用
例: select * from a where name like '赵 %'
说明: 查询显示表 a 中, name 字段第一个字为赵的记录
4.2.2[使用 between 在某个范围内进行查询]
例: select * from a where nianling between 18 and 20
说明: 查询显示表 a 中 nianling 在 18 到 20 之间的记录
4.2.3[使用 in 在列举值内进行查询]
例: select name from a where address in ('北京','上海','唐山')
说明: 查询表 a 中 address 值为北京或者上海或者唐山的记录, 显示 name 字段
4.3``. 分组查询
4.3.1[使用 group by 进行分组查询]
例: select studentID as 学员编号, AVG(score) as 平均成绩 (注释: 这里的 score 是列名)
- from score (注释: 这里的 score 是表名)
- group by studentID
说明: 在表 score 中查询, 按 strdentID 字段分组, 显示 strdentID 字段和 score 字段的平均值; select 语句中只允许被分组的列和为每个分组返回的一个值的表达式, 例如用一个列名作为参数的聚合函数
4.3.2[使用 having 子句进行分组筛选]
例: select studentID as 学员编号, AVG(score) as 平均成绩 (注释: 这里的 score 是列名)
- from score (注释: 这里的 score 是表名)
- group by studentID
- having count(score)>1
说明: 接上面例子, 显示分组后 count(score)>1 的行, 由于 where 只能在没有分组时使用, 分组后只能使用 having 来限制条件.
4.4``. 多表联接查询
4.4.1 内联接
4.4.1.1[在 where 子句中指定联接条件]
例: select a.name,b.chengji
- from a,b
- where a.name=b.name
说明: 查询表 a 和表 b 中 name 字段相等的记录, 并显示表 a 中的 name 字段和表 b 中的 chengji 字段
4.4.1.2[在 from 子句中使用 join...on]
例: select a.name,b.chengji
- from a inner join b
- on (a.name=b.name)
说明: 同上
4.4.2 外联接
4.4.2.1[左外联接查询]
例: select s.name,c.courseID,c.score
from strdents as s
left outer join score as c
on s.scode=c.strdentID
说明: 在 strdents 表和 score 表中查询满足 on 条件的行, 条件为 score 表的 strdentID 与 strdents 表中的 sconde 相同
4.4.2.2[右外联接查询]
例: select s.name,c.courseID,c.score
from strdents as s
right outer join score as c
on s.scode=c.strdentID
说明: 在 strdents 表和 score 表中查询满足 on 条件的行, 条件为 strdents 表中的 sconde 与 score 表的 strdentID 相同
来源: http://www.bubuko.com/infodetail-2713963.html