SQL语句
建表
CREATE tablespace 表名
1 | CREATE tablespace stx //创建 |
删除表空间
delete
创建用户
1 | CREATE USER project |
授权
GRANT dba TO frank_24
增删改查
1.1查询语句
- 第一种查询
1 | -- 查询所有学生信息 |
- 查询一个表中多个列的数据,可以使用
,隔开。就像这样:
1 | SELECT stu_id,stu_name,collge FROM t_student; |
- 查询所有信息
查询表中的所有信息:使用*代替所有的列。
1 | -- 查询所有的数据 |
- 给数据列取别名
第一种写法:
1 | SELECT 列名1 "别名1",列名2 "别名2" FROM T_STUDENT; |
在列名之后加上一个空格,双引号,写上别名。
第二种写法:
1 | SELECT 列名2 AS "别名1" ,列名1 AS "别名2" FROM T_STUDENT; |
在列名之后加上一个空格,写上as关键字,后面跟上"别名"。
- 查询系统时间
1 | -- dual 这是一张虚表 |
不知道查哪一张表时,就可以查询dual这张表。
- 查询36*36等于多少
1 | -- 查询36*36等于多少 |
1.2条件查询
1 | -- 条件查询 |
条件是一个是表达式。
表达式可以这样写:PROVINCE = '四川',SCORE >= 80。
查询以什么字段开头的数据:
1 | SELECT * FROM T_STUDENT ts WHERE STU_NAME LIKE '曹%'; |
使用like关键字(模糊匹配),然后%表示占位符,不管多少个字符。
例如:
str%:以str开头的数据%str%:包含str的数据%str:以str结尾的数据
查询指定长度的数据:
1 | SELECT * FROM T_STUDENT ts WHERE STU_NAME LIKE '__'; |
(此时为两个下划线,表示查询长度为两个字符的数据)
此时使用_来表示占位符,一个_表示一个字符长度。
如果有多个包含条件:
- 我们使用
AND关键字连接条件:
1 | SELECT * FROM T_STUDENT ts WHERE COLLGE = '大数据与计算机科学学院' AND MAJOR = '软件工程'; |
如果查询多个并列条件:
- 第一种:我们使用
OR关键字
1 | SELECT * FROM T_STUDENT ts WHERE COLLGE = '外国语学院' OR COLLGE = '远景学院'; |
- 第二种:使用
in关键字
1 | SELECT * FROM T_STUDENT ts WHERE COLLGE IN('外国语学院','远景学院'); |
查询指定范围内的数据:
- 使用
AND - 使用
BETWEEN 开始范围 AND 结束范围:包含开始范围以及结束范围。1
SELECT * FROM T_STUDENT ts WHERE SCORE BETWEEN 80 AND 90;
同一列表数据去重:
- 使用关键字
distinct
1 | SELECT DISTINCT (PROVINCE) from T_STUDENT ts ; |
distinct(要去重的列)。
对结果进行排序
- 使用关键字
order by 列名 升序还是降序(默认升序asc,降序desc)
1 | SELECT STU_ID ,STU_NAME ,COLLGE,score FROM T_STUDENT ts ORDER BY SCORE asc; |
- 对于有两种情况时:
1 | SELECT * FROM T_STUDENT ts ORDER BY COLLGE , score DESC; |
1.3聚合函数
- 统计某列数据个数:
count(列名)
1 | SELECT count(stu_name) FROM T_STUDENT ts ; |
查询姓名这一列有多少个数据。
- 求平均分avg(列名)
- 求最大值max(列名)
求最小值min(列名)
查询语句书写顺序
SFWGHO
- select
- from
- where
- group
- having
- order
1.4分组
- group by 列名
在使用group by时,select子句只能由以下部分组成:
1.汇总函数
2.GROUPBY中出现的列名
3.1和2通过函数和表达式的结果
1 | SELECT major,count(STU_ID) FROM T_STUDENT ts GROUP BY major ; |
1.5HAVING
在分组之前进行筛选,我们使用where,在分组之后我们进行筛选我们使用HAVING。
例如:
1 | SELECT collge,count(STU_ID),avg(score) FROM T_STUDENT ts |
连表查询
插入语句
语法: insert into 表名(列名1,列名2,.....) values(值1,值2,值3......)
一种简介写法:
列名省略,这样的话就需要给每一列添加值,并且添加值的顺序与列名顺序一致。
1 | INSERT INTO T_COLLEGE |
修改语句
语法: update 表名 set 列名1 = 值1,列2 = 值2 where 条件;
删除语句
语法: delete from 表名 where 条件;
连表查询
- sql89标准
语法:
1 | SELECT stu_name,col_name FROM T_STUDENT ts,T_COLLEGE tc |
- sql99标准
1 | SELECT stu_name ,collge FROM T_STUDENT ts INNER JOIN T_COLLEGE tc |