首页数据库数据库基础语句(数据库中常用的sql语句有哪些)

数据库基础语句(数据库中常用的sql语句有哪些)

编程之家2023-10-1984次浏览

大家好,关于数据库基础语句很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于数据库中常用的sql语句有哪些的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

数据库基础语句(数据库中常用的sql语句有哪些)

数据库中常用的sql语句有哪些

1.检索数据

SELECT prod_nameFROM Products;

#检索单列

SELECT prod_id, prod_name, prod_priceFROMProducts;

#检索多列

SELECT* FROM Products;

数据库基础语句(数据库中常用的sql语句有哪些)

#检索所有列

SELECT DISTINCTvend_id FROMProducts;

#检索不同的值

SELECTprod_name FROM Products LIMIT 5;

#返回不超过5行数据

SELECTprod_name FROM Products LIMIT 5 OFFSET 5;

数据库基础语句(数据库中常用的sql语句有哪些)

#返回从第5行起的5行数据。LIMIT指定返回的行数,LIMIT带的OFFSET指定从哪儿开始。

2.排序检索数据

SELECTprod_name

FROMProducts

ORDER BYprod_name;

#排序数据

SELECT prod_id, prod_price, prod_name

FROMProducts

ORDER BY prod_price, prod_name;

#按多个列排序

SELECT prod_id, prod_price, prod_name

FROMProducts

ORDER BY 2, 3;

#按列位置排序,第三行表示先按prod_price,再按prod_name进行排序

SELECT prod_id, prod_price, prod_name

FROMProducts

ORDER BY prod_priceDESC, prod_name;

#prod_price列以降序排序,而prod_name列(在每个价格内)仍然按标准的升序排序

3.过滤数据

SELECT prod_name, prod_price

FROMProducts

WHERE prod_price< 10;

#检查单个值

SELECT prod_name, prod_price

FROMProducts

WHERE vend_id<>‘DLL01’;

#不匹配检查

SELECT prod_name, prod_price

FROMProducts

WHERE prod_priceBETWEEN 5 AND 10;

#范围值检查

SELECT cust_name

FROMCUSTOMERS

WHERE cust_emailIS NULL;

#空值检查

4.高级数据过滤

SELECTprod_id, prod_price, prod_name

FROMProducts

WHERE vend_id=‘DLL01’ANDprod_price<= 4;

#AND操作符

SELECTprod_name, prod_price

FROMProducts

WHEREvend_id=’DLL01’ OR vend_id=’BRS01’;

#OR操作符

SELECTprod_name, prod_price

FROMProducts

WHERE(vend_id=’DLL01’ORvend_id=’BRS01’)

ANDprod_price>= 10;

#求值顺序 AND的优先级高于OR

SELECTprod_name, prod_price

FROMProducts

WHERE vend_idIN(‘DLL01’,’BRS01’)

ORDER BY prod_name;

#IN操作符

SELECT prod_name

FROMProducts

WHERE NOTvend_id=‘DLL01’

ORDER BY prod_name;

#NOT操作符

SELECT prod_name

FROMProducts

WHEREvend_id<>‘DLL01’

ORDER BY prod_name;

#NOT操作符

创建数据库 完整语句

用如下语句:

createdatabasestuDB

onprimary--默认就属于primary文件组,可省略

(

/*--数据文件的具体描述--*/

name='stuDB_data',--主数据文件的逻辑名称

filename='D:\stuDB_data.mdf',--主数据文件的物理名称

size=5mb,--主数据文件的初始大小

maxsize=100mb,--主数据文件增长的最大值

filegrowth=15%--主数据文件的增长率

)

logon

(

/*--日志文件的具体描述,各参数含义同上--*/

name='stuDB_log',

filename='D:\stuDB_log.ldf',

size=2mb,

filegrowth=1mb

)

注意:路径和文件名等可以自己定义,而且所使用的路径必须要先建立,否则执行语句会报错。

SQL数据库常用命令及语法举例

创建表:

create table表名

(

id char(5) NOT NULL,

name VARCHAR(20) NOT NULL,

dept_name VARCHAR(20) NOT NULL,

salary NUMERIC(8,2),

PRIMARY KEY(id)

);

/* primary key==主键等价于唯一(UNIQUE)且非空(NOT NULL)因为 Mysql里面的自增列,必须要依赖一个主键或者唯一的键。

*/

插入元组:

insert into表名 values(每个属性对应的值);

例如:

insert into xinbiao values(001,'niuniu',math,2345.1);

如果无法添加出现1366错误,则可能是MySQL配置问题

只要找到my.ini文件并查找sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"这句话,将双引号前面{STRICT_TRANS_TABLES,}删除,改成sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION",重启一下mysql后即可。前者很严格,不允许向数据库插入空值,所以就会有Value后面那个单引号。

删除所有元组:

delete from表名;

删除表:

drop table表名;

删除了表,进行select查询时会出现表名无效的错误。

属性操作

添加属性:

alter table表名 add新属性数据类型,新属性数据类型,...;

例:alter table xinbiao add shuxing1 varchar(20),shuxing2 varchar(20);

删除属性:

alter table表名 drop属性,...;

例:alter table xinbiao drop shuxing1,shuxing2;

查询语句基础结构

select对应投影

from对应笛卡尔积

where对应选择σ

含义:

(1).为from子句列出的关系产生笛卡尔积。

(2).在(1)的结果上应用where子句中指定的谓词(条件)。

(3).对于(2)中的元组,输出select子句中指定的属性。

select*(属性1,属性2,...)【字段名】

from关系名1,关系名2,...【表名】

where条件1 and条件2 and...;【条件】

例如:

Select id,name,salary

From xinbiao

Where salary>1000;

去重操作(distinct)

·对于一些属性来说,在某些元组中存在相同的值,有时我们需要对结果去重,得到正确答案。

Select distinct属性名【就是字段名】

From关系名【就是表名】

Where条件

例如:当我们想要查看系名时,多个老师可能位于同一个系,不去重将产生下列结果:

显然这不是我们想要的答案。我们只需要知道存在哪些系,而无需知道个数:

更名操作(as)

·优点

方便:长名字变短名字,便于书写语句。

同一关系笛卡尔积:区分属性。

对属性:

Select字段 as字段别名,...

From表名

Where条件

例:

Select name as instructor_name,salary

From xinbiao

Where salary>3500

结果如下:

对关系:

Select字段,...

From表名 as表名别名,...

Where条件

例:

Select i1.id,i2.name

From xinbiao as i1, xinbiao as i2

Where i1.id=i2.id and salary>3500

结果如下

字符串运算(like)

· SQL使用一对单引号来标示字符串,例‘math’。

·百分号(%):匹配任意子串

下划线(_):匹配任意一个字符

select字段

from表名

where字段 like'字符形式';

例:LIKE'AACC%'

以AACC开头的所有信息

显示次序(order by)

·默认升序:asc

·降序:desc

Select字段

From表名

Where条件

Order by字段升序/降序

between⋯⋯and⋯⋯

·属性值介于某个范围内

select* from xinbiao where属性名 between... and...;

select*from xinbiao where salary between 3000 and 6000;

结果如下

分组聚集(group by)

·聚集函数:平均值(avg)、最小值(min)、最大值(max)、总和(sum)、计数(count)。

·出现在select语句中但没有被聚集的属性只能是出现在group by子句中的属性。

having子句(出现group by时使用)

·有group by时,select和 having子句中出现的属性有所限制。

·任何出现在having子句中,但没有被聚集的属性必须出现在group by子句中。

正确查询:

select dept_name,avg(salary) as avg_salary from xinbiao group by dept_name having avg(salary)>3000

结果如下

集合成员资格

· in:测试元组是否是集合的成员

· not in:测试元组是否不是集合的成员

· in和 not in操作符用于枚举集合。

例:

select* from xinbiao where name not in('ai','ye','er');

结果如下

集合的比较

>some:至少比某一个要大

>all:比所有的都大。

>some、<some、>=some、<=some、<>some

>all、<all、>=all、<=all

=some等价于in,<>some并不等价于not in。

<>all等价于not in,=all不等价于in。

空关系测试(exists)

EXISTS在SQL中的作用是:检验查询是否返回数据。

·存在exists是相对于某一条元组,因而子查询中是select*。

例:查询在2009年秋季学期和2010年春季学期同时开课的所有课程

select course_id

from section as S

where semester='Fall' and year=2009 and exists(select*

from section as T

where semester='Spring' and year=2010

and S.course_id=T.course_id

);

删除某些元组

例:从instructor关系中删除与‘math’系教师有关的所有元组

delete from instructor where dept_name='math';

删除所有元组

delete from instructor;

插入一些元组

· insert into关系名 values(⋯⋯);一次只能插入一条元组。

· insert into关系名 selec查询语句可一次性插入多条。

更新元组

update表名set语句where条件;

例:只给工资低于7000元的教师涨工资。

update instructor2set salary=salary*1.05;where salary<7000;

给工资低于7000的教师涨5%,大于7000的涨3%

update instructor2set salary=case

when salary<=7000 then salary*1.05

else salary*1.03

end

文章到此结束,如果本次分享的数据库基础语句和数据库中常用的sql语句有哪些的问题解决了您的问题,那么我们由衷的感到高兴!

域名查询地址(如何根据域名查询ip地址)oracle数据库一年多少钱 Oracle数据库如何收费