《深入解析关系数据库语言SQL的功能》
一、数据定义功能(DDL)
1、创建数据库和表
图片来源于网络,如有侵权联系删除
- 在关系数据库中,SQL允许使用CREATE DATABASE
语句创建新的数据库,在MySQL中,CREATE DATABASE my_database;
语句可以创建一个名为my_database
的数据库,对于表的创建,CREATE TABLE
语句是关键,可以定义表的结构,包括列名、数据类型、约束条件等。CREATE TABLE employees (id INT PRIMARY KEY, name VARCHAR(50), age INT, salary DECIMAL(10, 2));
创建了一个名为employees
的表,其中包含id
(整数类型且为主键)、name
(最大长度为50的字符串类型)、age
(整数类型)和salary
(数值类型,总长度为10,小数点后2位)等列。
2、修改表结构
- 随着业务需求的变化,可能需要修改已存在表的结构。ALTER TABLE
语句提供了这样的功能,可以用于添加新列,例如ALTER TABLE employees ADD COLUMN department VARCHAR(30);
,这就在employees
表中添加了一个名为department
的新列,其数据类型为最大长度为30的字符串类型,还可以修改列的数据类型,如ALTER TABLE employees MODIFY COLUMN age SMALLINT;
将age
列的数据类型从INT
修改为SMALLINT
,通过ALTER TABLE
语句也能删除列,像ALTER TABLE employees DROP COLUMN old_column;
(假设old_column
是表中不再需要的列)。
3、删除数据库和表
- 当某些数据不再需要时,可以使用DROP DATABASE
和DROP TABLE
语句进行删除操作。DROP DATABASE
用于删除整个数据库,不过要谨慎使用,因为这将永久删除数据库中的所有数据、表、视图等对象。DROP DATABASE my_database;
会删除my_database
数据库。DROP TABLE
则用于删除单个表,如DROP TABLE employees;
将删除employees
表。
二、数据操作功能(DML)
1、数据插入
- 使用INSERT INTO
语句可以向表中插入数据,有多种插入数据的方式,最基本的是插入单条记录。INSERT INTO employees (id, name, age, salary) VALUES (1, 'John', 30, 5000.00);
将一条包含id
为1、name
为John
、age
为30、salary
为5000.00的记录插入到employees
表中,还可以插入多条记录,在一些数据库中,可以使用类似INSERT INTO employees (id, name, age, salary) VALUES (2, 'Jane', 25, 4000.00), (3, 'Bob', 35, 6000.00);
这样的语法一次性插入多条记录。
2、数据更新
- 当需要修改表中的数据时,UPDATE
语句发挥作用,如果要给所有员工加薪10%,可以使用UPDATE employees SET salary = salary * 1.1;
,如果只想更新满足特定条件的记录,比如给部门为Sales
的员工加薪20%,则可以使用UPDATE employees SET salary = salary * 1.2 WHERE department = 'Sales';
。
3、数据删除
- 对于不再需要的数据,可以用DELETE FROM
语句进行删除,如果要删除表中的所有数据,可以使用DELETE FROM employees;
,若只想删除满足特定条件的数据,例如删除年龄大于60岁的员工记录,可以使用DELETE FROM employees WHERE age > 60;
,需要注意的是,DELETE
语句只是删除表中的数据行,表结构仍然保留。
图片来源于网络,如有侵权联系删除
三、数据查询功能(DQL)
1、简单查询
- 最基本的查询是选择表中的所有列或特定列。SELECT * FROM employees;
会选择employees
表中的所有列和所有行的数据,如果只想查看员工的姓名和工资,可以使用SELECT name, salary FROM employees;
,可以使用DISTINCT
关键字去除重复值,如SELECT DISTINCT department FROM employees;
将返回employees
表中不同的部门名称。
2、条件查询
- 通过WHERE
子句可以进行条件查询,查询年龄在25到35岁之间的员工,可以使用SELECT * FROM employees WHERE age BETWEEN 25 AND 35;
,还可以使用逻辑运算符(如AND
、OR
、NOT
)组合多个条件,如SELECT * FROM employees WHERE age > 25 AND salary < 5000;
,这将选择年龄大于25岁并且工资小于5000的员工记录。
3、排序查询
- 使用ORDER BY
子句可以对查询结果进行排序,按照工资从高到低对员工进行排序,可以使用SELECT * FROM employees ORDER BY salary DESC;
,如果想按照年龄升序排列,可以使用SELECT * FROM employees ORDER BY age ASC;
。
4、聚合查询
- SQL提供了一系列聚合函数,如SUM
、AVG
、MAX
、MIN
和COUNT
等,计算员工的平均工资可以使用SELECT AVG(salary) FROM employees;
,统计员工的人数可以使用SELECT COUNT(*) FROM employees;
,还可以结合GROUP BY
子句进行分组聚合查询,如SELECT department, AVG(salary) FROM employees GROUP BY department;
,这将按照部门分组并计算每个部门的平均工资。
四、数据控制功能(DCL)
1、用户权限管理
- 在关系数据库中,SQL可以用于管理用户权限,在MySQL中,可以使用GRANT
语句授予用户权限,如GRANT SELECT, INSERT ON my_database.employees TO 'user1'@'localhost';
授予user1
用户在本地主机上对my_database
数据库中的employees
表有SELECT
(查询)和INSERT
(插入)的权限,可以使用REVOKE
语句撤销用户权限,如REVOKE INSERT ON my_database.employees FROM 'user1'@'localhost';
撤销user1
用户对employees
表的插入权限。
图片来源于网络,如有侵权联系删除
2、事务控制
- SQL支持事务处理,事务是一组数据库操作,要么全部成功执行,要么全部失败回滚,在一个银行转账系统中,从一个账户转出资金并转入另一个账户的操作应该在一个事务中进行,在SQL中,可以使用BEGIN TRANSACTION
(或START TRANSACTION
)开始一个事务,使用COMMIT
提交事务,使事务中的所有操作生效,使用ROLLBACK
回滚事务,撤销事务中的所有操作。
```sql
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;
```
这段代码在一个事务中从account_id
为1的账户转出100元到account_id
为2的账户,如果在执行过程中出现错误,可以使用ROLLBACK
回滚这两个操作。
关系数据库语言SQL的功能非常强大,涵盖了从数据库和表的定义、数据的操作、查询到数据控制等多个方面,为数据库的管理和应用开发提供了全面的支持。
评论列表