一、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语句用于创建用户、授权、回收