Yashan SQL语句

发布于:2025-03-08 ⋅ 阅读:(107) ⋅ 点赞:(0)

一、Yashan DB SQL分类

SQL语言概述

• 定义:SQL(Structured Query Language)是结构化查询语言,是一种用于访问和管理数据库的标准计算机语言。

• 优点:

• 不是某个特定数据库供应商专有的语言,几乎所有关系型数据库都支持SQL。

• 简单易学。

• 强大,灵活使用其语言元素,可以进行非常复杂和高级的数据库操作。


SQL分类

分类    常用SQL语句    功能    
数据定义语言(DDL)    CREATE、ALTER、DROP、TRUNCATE TABLE    创建、修改、删除数据库中的对象和对象属性,以及删除表全部数据    
数据操纵语言(DML)    SELECT、INSERT、UPDATE、DELETE    执行对数据库的表、视图等对象的查询操作,以及对表的插入、修改、删除记录操作    
数据控制语言(DCL)    COMMIT、ROLLBACK、GRANT、REVOKE    提交事务、回滚事务、授予权限、收回权限    


数据类型

数据类型    作用    存储数据说明    数据示例    
数值型    存储数值数据    INT:整数类型,取值范围[-2147483648, 2147483647];NUMBER:整数类型,取值范围0,绝对值[1E-130,1E126)    128、1280000    
字符型    存储字符数据    CHAR:定长字符串,包括英文字母、中文汉字、数字字符和特殊字符等;VARCHAR/VARCHAR2:变长字符串,包括英文字母、中文汉字、数字字符和特殊字符等    ‘YashanDB’    
日期型    存储时间数据    DATE:时间类型,包含了年、月、日、时、分、秒;

TIMESTAMP:时间戳类型,包含了年、月、日、时、分、秒、微秒    2023-01-01 00:00:00、2023-01-01 12:30:30.123456    

二、DDL语句介绍及操作

用户操作

• 创建用户并赋权:

SQL>CREATE USER sales IDENTIFIED BY 123456;
SQL>GRANT DBA TO sales;

• 使用用户连接数据库:SQL>CONN sales/123456


表操作

• 创建表:

• 示例:创建表area

SQL>CREATE TABLE area(area_no CHAR(2)NOT NULL PRIMARY KEY,area_name VARCHAR2(60),DHQ VARCHAR2(20)NOT NULL);

• 字段说明:area_no为区域编号,area_name为区域名称,DHQ为区域总部。

• 修改表:

• 删除列:

SQL>ALTER TABLE area DROP COLUMN num;

• 删除表:

SQL>DROP TABLE area;

• 添加列:

SQL>ALTER TABLE area ADD NUM number(20);

• 修改列长度:

SQL>ALTER TABLE area MODIFY DHQ VARCHAR(80);

• 清空表数据:

• SQL>TRUNCATE TABLE area;

• DELETE和TRUNCATE的区别:

• DELETE可以删除部分数据也可以删除全部数据;TRUNCATE只能删除表中所有数据。

• DELETE是DML语句,没提交事务还可以回滚;TRUNCATE是DDL语句,操作完马上生效,不能回滚。

三、DML语句介绍及操作

INSERT语句

• 插入数据:

• SQL>INSERT INTO area VALUES('01','华东','Shanghai');

• SQL>INSERT INTO area VALUES('02','华西','Chengdu');

• SQL>INSERT INTO area VALUES('03','华南','Guangzhou');

• SQL>INSERT INTO area VALUES('04','华北','Beijing');

• SQL>INSERT INTO area VALUES('05','华中','Wuhan');

• SQL>COMMIT;

• 获取插入表的表结构:

SQL>DESC area;

• 插入指定列数据:

• 示例:向area表中的area_no,area_name,dhq三列插入数据‘06’,‘东北’,‘Dalian’

• SQL>INSERT INTO area(area_no,area_name,dhq)VALUES('06','东北','Dalian');

• 注意:要插入的数据必须要和列名一一对应,如果省略列名,默认代表全部列。

• 提交插入的数据:SQL>COMMIT;


UPDATE语句

• 更新数据:

• SQL>UPDATE area SET dhq='Haerbin'WHERE area_no='06';

• 注意:如果不指定where条件,则是更新指定列的所有数据。

• 提交更新的数据:SQL>COMMIT;


DELETE语句

• 删除数据:

• SQL>DELETE FROM area WHERE area_no='06';

• 注意:如果不指定where条件,则是删除指定列的所有数据。

• 提交删除的数据:SQL>COMMIT;


SELECT语句

• 查询指定列数据:

• SQL>SELECT area_no,area_name FROM area;

• 说明:在选择多个列时,列名之间用逗号(,)隔开,最后一个列名后不需要加上逗号。

• 使用WHERE条件查询数据:

• SQL>SELECT * FROM area WHERE area_name='华东';

• 说明:WHERE语句可以指定过滤条件对查询结果进行限制输出。

• 对结果进行排序:

• SQL>SELECT * FROM area ORDER BY area_no DESC;

• 说明:ORDER BY子句可以按需排序查询出来的数据,DESC代表降序,ASC代表升序(默认是ASC)。

• 多表关联查询:

• 内连接(INNER JOIN):

• 作用:把来自表table1和表table2的公共部分的行结合起来。

• 语法:

SELECT column1,column2,...FROM table1 INNER JOIN table2 ON condition;

• 示例:查询华北地区的机构信息

• SQL>SELECT branch_name,address FROM area a INNER JOIN branches b on a.area_no=b.area_no AND area_name='华北';

• 等价写法(省略INNER JOIN):

SQL>SELECT branch_name,address FROM area a,branches b where a.area_no=b.area_no AND area_name='华北';

• 左连接(LEFT JOIN):

• 作用:从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为NULL。

• 语法:

SELECT column1,column2,...FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name;

• 示例:

SQL>SELECT branches.branch_name,branches.address FROM branches LEFT JOIN area on branches.area_no=area.area_no;

• 右连接(RIGHT JOIN):

• 作用:从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为NULL。

• 语法:

SELECT column1,column2,...FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name;

• 示例:

SQL>SELECT area.area_no,area_name,branch_name FROM branches RIGHT JOIN area on branches.area_no=area.area_no;

• 全连接(FULL JOIN):

• 作用:返回两个表中的所有记录,并且对于那些在另一个表中没有匹配的记录,会填充NULL值。

• 语法:

SELECT column1,column2,...FROM table1 FULL JOIN table2 ON table1.column_name=table2.column_name;

• 示例:

SQL>SELECT area_name,branch_name,address FROM branches FULL JOIN area on branches.area_no=area.area_no;

四、DCL语句介绍及操作

用户和权限操作

• 创建用户:

SQL>CREATE USER ycauser IDENTIFIED BY yca123456;

• 给用户授予CONNECT角色:

SQL>GRANT CONNECT TO ycauser;

• 回收用户CONNECT角色:

SQL>REVOKE CONNECT FROM ycauser;


事务操作

• ROLLBACK(回滚):

• 示例:

• SQL>CONN sales/123456

• SQL>INSERT INTO area(area_no,area_name,dhq)VALUES('06','东北','Dalian');

• SQL>ROLLBACK;

• COMMIT(提交):

• 示例:

• SQL>INSERT INTO area(area_no,area_name,dhq)VALUES('06','东北','Dalian');

• SQL>COMMIT;

五、总结

• Yashan DB SQL语句可以分为DML、DDL和DCL。

• DDL语句用于表的创建、字段修改等操作。

• DML语句包括SELECT、INSERT、UPDATE、DELETE语句,以及多表查询。

• DCL语句用于创建用户、授权、回收