admin 管理员组文章数量: 887053
2023年12月19日发(作者:asp在哪里执行)
常见SQL语句的介绍与示例SQL是一种用于操作关系数据库的结构化查询语言,它可以用来创建、查询、更新、删除和管理数据库中的数据。SQL语句是SQL的基本单位,它可以执行不同的任务,如定义数据结构、操作数据、控制数据访问等。本文将介绍一些常见的SQL语句,包括它们的语法、用法和示例。本文主要介绍了以下几类常见的SQL语句:数据定义语言(DDL):用于创建、修改或删除数据库对象,如表、索引、视图等。数据操纵语言(DML):用于对数据库中的数据进行增加、删除、修改或查询等操作。数据控制语言(DCL):用于控制数据库的访问权限和事务管理等。数据查询语言(DQL):用于从数据库中检索数据,是SQL语句中最常用的一类。每一类SQL语句都包含了一些具体的命令,本文将通过实例来说明这些命令的功能和用法。本文使用MySQL数据库作为演示平台,但大部分SQL语句都是通用的,可以在其他关系数据库中使用。一、数据定义语言(DDL)数据定义语言(DDL)是用于定义或更改数据库结构的SQL语句,它包括以下几个命令:1.1 CREATE DATABASECREATE DATABASE命令用于创建一个新的数据库,语法如下:CREATE DATABASE <数据库名>;例如,创建一个名为university的数据库,可以使用以下命令:CREATE DATABASE university;1.2 DROP DATABASEDROP DATABASE命令用于删除一个已存在的数据库,语法如下:DROP DATABASE <数据库名>;例如,删除名为university的数据库,可以使用以下命令:DROP DATABASE university;1.3 USEUSE命令用于选择要操作的数据库,语法如下:USE <数据库名>;例如,选择名为university的数据库,可以使用以下命令:USE university;1.4 CREATE TABLE
CREATE TABLE命令用于创建一个新的表,语法如下:CREATE TABLE <表名> ( <列名1> <列类型1> [列约束1], <列名2> <列类型2> [列约束2], ... [表约束]);其中,列类型指定了该列可以存储的数据类型,如CHAR、VARCHAR、INT、DECIMAL等。列约束指定了该列的限制条件,如NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY等。表约束指定了整个表的限制条件,如PRIMARY KEY、FOREIGN KEY等。例如,创建一个名为instructor的表,存储教师的信息,可以使用以下命令:CREATE TABLE instructor ( ID CHAR(5) NOT NULL, name VARCHAR(20) NOT NULL, dept_name VARCHAR(20), salary DECIMAL(8,2), PRIMARY KEY (ID), FOREIGN KEY (dept_name) REFERENCES department (dept_name));其中,ID是教师的编号,name是教师的姓名,dept_name是教师所属的部门名称,salary是教师的薪水。ID和name都不能为NULL,ID还要求唯一,并且作为主键。dept_name作为外键,引用department表中的dept_name列。1.5 DROP TABLEDROP TABLE命令用于删除一个已存在的表,语法如下:DROP TABLE <表名>;例如,删除名为instructor的表,可以使用以下命令:DROP TABLE instructor;1.6 ALTER TABLEALTER TABLE命令用于修改一个已存在的表的结构,如添加或删除列、修改列类型或约束、添加或删除索引等。ALTER TABLE命令有多种变体,常见的有以下几种:添加列:语法如下:ALTER TABLE <表名> ADD <列名> <列类型> [列约束];例如,给instructor表添加一个email列,类型为VARCHAR(50),可以使用以下命令:ALTER TABLE instructor ADD email VARCHAR(50);删除列:语法如下:ALTER TABLE <表名> DROP <列名>;
例如,给instructor表删除email列,可以使用以下命令:ALTER TABLE instructor DROP email;修改列类型或约束:语法如下:ALTER TABLE <表名> MODIFY <列名> <新列类型> [新列约束];例如,给instructor表修改salary列的类型为DECIMAL(10,2),可以使用以下命令:ALTER TABLE instructor MODIFY salary DECIMAL(10,2);添加主键约束:语法如下:ALTER TABLE <表名> ADD PRIMARY KEY (<列名>);例如,给instructor表添加主键约束,以ID作为主键,可以使用以下命令:ALTER TABLE instructor ADD PRIMARY KEY (ID);删除主键约束:语法如下:ALTER TABLE <表名> DROP PRIMARY KEY;例如,给instructor表删除主键约束,可以使用以下命令:ALTER TABLE instructor DROP PRIMARY KEY;添加外键约束:语法如下:ALTER TABLE <表名> ADD FOREIGN KEY (<列名>) REFERENCES <另一张表名> (<另一张表的列名>);例如,给instructor表添加外键约束,以dept_name作为外键,引用department表中的dept_name列,可以使用以下命令:ALTER TABLE instructor ADD FOREIGN KEY (dept_name) REFERENCES department (dept_name);删除外键约束:语法如下:ALTER TABLE <表名> DROP FOREIGN KEY <外键名称>;其中,外键名称是在创建外键时自动生成的,一般是<表名>ibfk<序号>的形式。可以通过SHOW CREATETABLE命令查看外键名称。例如,给instructor表删除外键约束,假设外键名称为instructor_ibfk_1,可以使用以下命令:ALTER TABLE instructor DROP FOREIGN KEY instructor_ibfk_1;1.7 CREATE INDEXCREATE INDEX命令用于为一张表中的一列或多列创建索引,以提高查询效率。语法如下:CREATE INDEX <索引名> ON <表名> (<列名1>,<列名2>,...);
例如,为instructor表中的name列创建一个索引,可以使用以下命令:CREATE INDEX name_index ON instructor (name);1.8 DROP INDEXDROP INDEX命令用于删除一个已存在的索引,语法如下:DROP INDEX <索引名> ON <表名>;例如,删除instructor表中的name_index索引,可以使用以下命令:DROP INDEX name_index ON instructor;二、数据操纵语言(DML)数据操纵语言(DML)是用于对数据库中的数据进行操作的SQL语句,它包括以下几个命令:2.1 INSERT INTOINSERT INTO命令用于向一张表中插入一条或多条记录(行),有两种语法形式:指定要插入的列和值:语法如下:INSERT INTO <表名> (<列名1>,<列名2>,...) VALUES (<值1>,<值2>,...);例如,在instructor表中插入一条记录,指定ID、name、dept_name和salary的值,可以使用以下命令:INSERT INTO instructor (ID,name,dept_name,salary) VALUES ('001','Alice','Comp. Sci.',8000.00);不指定要插入的列,默认按照所有列的顺序插入值:语法如下:INSERT INTO <表名> VALUES (<值1>,<值2>,......);例如,在instructor表中插入一条记录,按照ID、name、dept_name和salary的顺序插入值,可以使用以下命令:INSERT INTO instructor VALUES ('002','Bob','Math',7000.00);如果要一次插入多条记录,可以使用以下语法:INSERT INTO <表名> (<列名1>,<列名2>,...) VALUES(<值1>,<值2>,...),(<值1>,<值2>,...),...;例如,在instructor表中一次插入两条记录,可以使用以下命令:INSERT INTO instructor (ID,name,dept_name,salary) VALUES('003','Charlie','Physics',6000.00),('004','David','Biology',5000.00);2.2 DELETE FROM
DELETE FROM命令用于从一张表中删除一条或多条记录(行),语法如下:DELETE FROM <表名> [WHERE <条件>];其中,WHERE子句用于指定要删除的记录的条件,如果省略,则删除表中的所有记录。例如,在instructor表中删除ID为'004'的记录,可以使用以下命令:DELETE FROM instructor WHERE ID='004';在instructor表中删除所有记录,可以使用以下命令:DELETE FROM instructor;2.3 UPDATEUPDATE命令用于修改一张表中的一条或多条记录(行),语法如下:UPDATE <表名> SET <列名1>=<值1>,<列名2>=<值2>,... [WHERE <条件>];其中,SET子句用于指定要修改的列和值,WHERE子句用于指定要修改的记录的条件,如果省略,则修改表中的所有记录。例如,在instructor表中将ID为'003'的记录的salary修改为6500.00,可以使用以下命令:UPDATE instructor SET salary=6500.00 WHERE ID='003';在instructor表中将所有记录的salary增加10%,可以使用以下命令:UPDATE instructor SET salary=salary * 1.1;三、数据控制语言(DCL)数据控制语言(DCL)是用于控制数据库的访问权限和事务管理的SQL语句,它包括以下几个命令:3.1 GRANTGRANT命令用于给用户或角色授予数据库对象的访问权限,语法如下:GRANT <权限列表> ON <对象列表> TO <用户列表> [WITH GRANT OPTION];其中,权限列表是指要授予的权限,如SELECT、INSERT、UPDATE、DELETE等。对象列表是指要授予权限的数据库对象,如TABLE、VIEW、PROCEDURE等。用户列表是指要授予权限的用户或角色。WITH GRANTOPTION表示被授权者可以将自己拥有的权限再授予给其他用户或角色。例如,给用户Alice授予instructor表的SELECT和UPDATE权限,可以使用以下命令:GRANT SELECT, UPDATE ON instructor TO Alice;给用户Bob授予所有数据库对象的所有权限,并允许他将这些权限再授予给其他用户或角色,可以使用以下命令:GRANT ALL ON * . * TO Bob WITH GRANT OPTION;
3.2 REVOKEREVOKE命令用于收回用户或角色已经拥有的数据库对象的访问权限,语法如下:REVOKE <权限列表> ON <对象列表> FROM <用户列表>;其中,参数的含义与GRANT命令相同。例如,收回用户Alice对instructor表的UPDATE权限,可以使用以下命令:REVOKE UPDATE ON instructor FROM Alice;收回用户Bob对所有数据库对象的所有权限,并取消他将这些权限再授予给其他用户或角色的能力,可以使用以下命令:REVOKE ALL ON * . * FROM Bob;3.3 COMMITCOMMIT命令用于提交一个事务,即将一个事务中对数据库的所有修改永久保存到数据库中,语法如下:COMMIT;例如,执行以下命令,将开始一个事务,并在instructor表中插入一条记录,然后提交这个事务:START TRANSACTION;INSERT INTO instructor VALUES ('005','Eve','Chemistry',4000.00);COMMIT;3.4 ROLLBACKROLLBACK命令用于回滚一个事务,即将一个事务中对数据库的所有修改撤销,恢复到事务开始之前的状态,语法如下:ROLLBACK;例如,执行以下命令,将开始一个事务,并在instructor表中插入一条记录,然后回滚这个事务:START TRANSACTION;INSERT INTO instructor VALUES ('006','Frank','History',3000.00);ROLLBACK;四、数据查询语言(DQL)数据查询语言(DQL)是用于从数据库中检索数据的SQL语句,它包括以下几个命令:4.1 SELECTSELECT命令是SQL语句中最常用的一种,它用于从一张或多张表中查询数据,语法如下:SELECT <列名列表> FROM <表名列表> [WHERE <条件>] [GROUP BY <分组列名列表>] [HAVING <分组条件>]
[ORDER BY <排序列名列表>];
其中,列名列表是指要查询的列,可以使用 * 表示所有列。表名列表是指要查询的表,可以使用JOIN子句来连接多张表。WHERE子句用于指定查询的条件,可以使用逻辑运算符(AND、OR、NOT)和比较运算符(=、<>、<、>、<=、>=、BETWEEN、IN、LIKE等)来组合条件。GROUP BY子句用于按照某些列来分组查询结果,可以使用聚合函数(SUM、AVG、MIN、MAX、COUNT等)来计算每个分组的统计信息。HAVING子句用于指定分组的条件,类似于WHERE子句。ORDER BY子句用于按照某些列来排序查询结果,可以使用ASC或DESC来指定升序或降序。例如,在instructor表中查询所有教师的姓名和薪水,可以使用以下命令:SELECT name,salary FROM instructor;在instructor表中查询薪水大于6000.00的教师的姓名和部门名称,并按照部门名称升序排序,可以使用以下命令:SELECT name,dept_name FROM instructor WHERE salary>6000.00 ORDER BY dept_name ASC;在instructor表中查询每个部门的教师数量和平均薪水,并只显示平均薪水大于5000.00的部门,可以使用以下命令:SELECT dept_name,COUNT( * ) AS num,AVG(salary) AS avg_salary FROM instructor GROUP BY dept_name
HAVING avg_salary>5000.00;在instructor表和department表中查询每个部门的教师数量和部门预算,并按照教师数量降序排序,可以使用以下命令:SELECT _name,COUNT( * ) AS num, FROM instructor i JOIN department d ON
_name=_name GROUP BY _name ORDER BY num DESC;
版权声明:本文标题:常见sql语句 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1702990207h438688.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论