数据库之【常用sql语句归纳】

2023-03-15,,

一、数据库操作:

1.创建数据库

create database dbname;

2.创建库是否存在,不存在就创建

create database if not exists dbname;

3.查看所有数据库

show databases;

4.删除数据库:

drop database dbname;

5.备份数据库:

BACKUP DATABASE TestDB TO DISK='d:\mcgrady\db\bak\TaskDB.bak' WITH COMPRESSION;       注意要带上WITH COMPRESSION

二、表操作:

1.创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],……)

eg:

create table student(
id int,
name varchar(32),
age int,
score double(4,1),
birthday date,
insert_time timestamp
);

2.根据已有的表建立新表

A:create table tab_new like tab_old

B:create table tab_new as select col1,col2… from tab_old definition only

3.删除新表

drop table 表名;
drop table if exists 表名;

4.添加/删除列

①添加一列

alter table 表名  add  列名 数据类型
注:列增长后将不能删除。DB2中列加上后数据类型也不能改变,惟一能改变的是增长varchar类型的长度。 

②删除列

alter table 表名 drop 列名;

5.添加主键

Alter table tabname add primary key(col) 

6.删除主键

Alter table tabname drop primary key(col)

7.建立索引

create [unique] index idxname on tabname(col….)

8.删除索引

drop index idxname
注:索引是不可更改的,想更改必须删除从新建。

9.查看表结构

desc 表名;

三、CRUD:

1)select语句

语法:SELECT    列名称    FROM    表名称
查找:select * from table1 where field1 like ’%value1%’

排序:select * from table1 order by field1,field2 [desc] 

总数:select count * as totalcount from table1 

求和:select sum(field1) as sumvalue from table1 

平均:select avg(field1) as avgvalue from table1 

最大:select max(field1) as maxvalue from table1 

最小:select min(field1) as minvalue fromtable1 

2)insert语句:

insert into 表名(列名1,列名2,……列名n) values(值1,值2,……值n) ;     //写全所有列名
insert into 表名 values(值1,值2,……值n);                 //不写列名(所以列全部添加)

3)删除语句:

delete from 表名 where 列名 = 值;                          //删除表中数据
delete from 表名;                        //删除表中所有数据
truncate table 表名;                     //删除表中所有数据(高效 先删除表,然后再创建一张一样的表。)

4)更新语句:

update  表名  set 列名 = 值;                                       //不带条件的修改(会修改所有行)
update 表名 set 列名=值 where 列名=值;       //带条件的修改

5)where语句:

SELECT    列名称    FROM    表名称    WHERE    列    运算符    值

SQL 使用单引号来环绕文本值。若果是数值,不能使用引号。

6)distinct语句(去掉重复数据)

SELECT    DISTINCT    列名称    FROM    表名称

四、外连接示例

eg:以下两张表分别是姓名表和年龄表

①内连接(Inner Join)

只返回条件匹配的行

select * from tableA JOIN tableB on tableA.id=tableB.id

执行结果:

②左外连接(Left join)

左表全部出现在结果集中,若右表无对应记录,则相应字段为NULL

select * from tableA left join tableB on tableA.id=tableB.id

执行结果:

③右外连接(Right join)

右表全部出现在结果集中,若左表无对应记录,则相应字段为NULL

select * from tableA right join tableB on tableA.id=tableB.id

执行结果:

④全连接(Full join)

全连接=左外连接+右外连接

返回左右表中所有的记录和左右表中连接字段相等的记录,条件不匹配的行的值为NULL

select * from tableA full join tableB on tableA.id=tableB.id

执行结果:

⑤交叉连接

没有where条件的交叉连接将产生连接表所涉及的笛卡尔积。即tableA的行数*tableB的行数的结果集。(tableA 3行*tableB 3行=9行)

select * from tableA cross join tableB

执行结果:

五、group by用法

“Group By” 从字面意义上理解就是根据 “By” 指定的规则对数据进行分组,所谓的分组就是将一个 “数据集” 划分成若干个 “小区域”,然后针对若干个 “小区域” 进行数据处理。

GROUP BY子句是SELECT语句的可选子句,它根据指定列中的匹配值将行组合成组,每组返回一行。

select 字段名 from 表名 where 条件 group by 字段名;

使用group by可以对查询结果进行分组,但是group by需要和sql的聚合函数联合使用。sql的聚合函数包括以下这些:

count()求符合条件的记录数
max()和 min()求某一列的最大值和最小值
avg()求某一列的平均值
sum()求某一列的总和

具体使用示例:

以下内容原文链接:https://blog.csdn.net/Elainalu/article/details/89489041

上图是表bookinfo,包含了一系列的字段 ,现在我们按照"出版社"来对表进行分组统计:

select publish as 出版社,count(publish) as 图书数量 from BookInfo group by publish;

以上语句分析如下:

select publish as 出版社,count(publish)  as 图书数量  //这行代码首先将publish设置一个别名 "出版社",然后 count(publish)as "图书数量",是将publish进行计数
from bookinfo      //表示数据来源于表bookinfo                                  
group by publish   //表示对数据表按照publish字段进行分类,相同的publish为一类,count(publish)即为统计一共多少类。

执行结果如下图:

==============================================================================================

再举个例子,同样是上面的bookinfo,我们对出版社分组,然后对每个出版社出版书籍的价格求平均值:

select publish '出版社',AVG(price) '平均价格' from bookinfo group by publish;

执行结果如下图:

需要注意的是,select后面跟的列名,必须包含在聚合函数中,或者包含在group by子句中,比如上式中,字段名publish就包含在group by子句中,而price包含在avg聚合函数里。

=========================================================================================

group by还可以与having子句一起使用,对group by的内容进行限制,筛选出符合要求的内容:

select publish '出版社',AVG(price) '平均价格' from bookinfo group by publish having avg(price) > 55

执行结果如下图:

需要注意的是having必须和group by配合使用不可单独使用,where是从表中筛选,having是从组中筛选

数据库之【常用sql语句归纳】的相关教程结束。

《数据库之【常用sql语句归纳】.doc》

下载本文的Word格式文档,以方便收藏与打印。