SQL基本语句
### SQL基本语句详解 #### 一、数据库操作 ##### 创建数据库 ```sql CREATE DATABASE database-name; ``` - **用途**:创建一个新的数据库。 - **示例**:`CREATE DATABASE myDatabase;` ##### 删除数据库 ```sql DROP DATABASE dbname; ``` - **用途**:删除指定的数据库。 - **示例**:`DROP DATABASE myDatabase;` ##### 备份数据库 (SQL Server 示例) 备份数据库的过程通常涉及以下步骤: 1. **创建备份设备** ```sql USE master; EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'; ``` 2. **执行备份** ```sql BACKUP DATABASE pubs TO testBack; ``` - **用途**:为SQL Server数据库创建物理备份。 - **注意事项**:备份路径应确保可写入。 #### 二、表操作 ##### 创建新表 ```sql CREATE TABLE tabname ( col1 type1 [NOT NULL] [PRIMARY KEY], col2 type2 [NOT NULL], ... ); ``` - **用途**:定义新的数据表结构。 - **示例**:`CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL);` ##### 根据已有表创建新表 ```sql -- 方法 A: 使用 LIKE CREATE TABLE tab_new LIKE tab_old; -- 方法 B: 使用 SELECT 子句定义新表结构 CREATE TABLE tab_new AS SELECT col1, col2 FROM tab_old DEFINITION ONLY; ``` - **用途**:基于现有表的结构创建新表。 - **示例**:`CREATE TABLE new_users LIKE users;` ##### 删除表 ```sql DROP TABLE tabname; ``` - **用途**:删除指定的数据表。 - **示例**:`DROP TABLE users;` ##### 增加列 ```sql ALTER TABLE tabname ADD COLUMN col type; ``` - **用途**:向现有表中添加新列。 - **示例**:`ALTER TABLE users ADD COLUMN age INT;` - **注意事项**:一旦添加列后,在大多数数据库系统中无法直接删除该列或更改其数据类型。 ##### 添加/删除主键 ```sql -- 添加主键 ALTER TABLE tabname ADD PRIMARY KEY (col); -- 删除主键 ALTER TABLE tabname DROP PRIMARY KEY (col); ``` - **用途**:为主键字段设置或移除约束。 - **示例**:`ALTER TABLE users ADD PRIMARY KEY (id);` ##### 创建/删除索引 ```sql -- 创建索引 CREATE [UNIQUE] INDEX idxname ON tabname (col...); -- 删除索引 DROP INDEX idxname; ``` - **用途**:创建或删除索引来加速查询性能。 - **示例**:`CREATE INDEX idx_users_name ON users (name);` - **注意事项**:索引创建后不可直接修改,如需更改须先删除再重建。 ##### 创建/删除视图 ```sql -- 创建视图 CREATE VIEW viewname AS SELECT statement; -- 删除视图 DROP VIEW viewname; ``` - **用途**:基于查询结果创建视图,提供简化查询的方式。 - **示例**:`CREATE VIEW top_users AS SELECT * FROM users WHERE age > 18;` #### 三、基本SQL语句 ##### 查询 ```sql SELECT * FROM table1 WHERE 范围; ``` - **用途**:检索满足条件的数据行。 - **示例**:`SELECT * FROM users WHERE age > 18;` ##### 插入 ```sql INSERT INTO table1 (field1, field2) VALUES (value1, value2); ``` - **用途**:向表中插入新记录。 - **示例**:`INSERT INTO users (name, age) VALUES ('张三', 25);` ##### 删除 ```sql DELETE FROM table1 WHERE 范围; ``` - **用途**:删除表中满足条件的记录。 - **示例**:`DELETE FROM users WHERE age < 18;` ##### 更新 ```sql UPDATE table1 SET field1 = value1 WHERE 范围; ``` - **用途**:更新表中满足条件的记录。 - **示例**:`UPDATE users SET age = 26 WHERE name = '张三';` ##### 查找(模糊匹配) ```sql SELECT * FROM table1 WHERE field1 LIKE '%value1%'; ``` - **用途**:模糊匹配查询。 - **示例**:`SELECT * FROM users WHERE name LIKE '%张%';` ##### 排序 ```sql SELECT * FROM table1 ORDER BY field1, field2 [DESC]; ``` - **用途**:按指定字段排序。 - **示例**:`SELECT * FROM users ORDER BY age DESC;` ##### 统计函数 - **总数** ```sql SELECT COUNT(*) AS total_count FROM table1; ``` - **求和** ```sql SELECT SUM(field1) AS sum_value FROM table1; ``` - **平均值** ```sql SELECT AVG(field1) AS avg_value FROM table1; ``` - **最大值** ```sql SELECT MAX(field1) AS max_value FROM table1; ``` - **最小值** ```sql SELECT MIN(field1) AS min_value FROM table1; ``` #### 四、高级查询 ##### UNION 运算符 ```sql (SELECT col1, col2 FROM table1) UNION (SELECT col1, col2 FROM table2); ``` - **用途**:合并两个结果集,并自动去除重复行。 - **示例**:`SELECT id, name FROM users UNION SELECT id, name FROM customers;` ##### EXCEPT 运算符 ```sql (SELECT col1, col2 FROM table1) EXCEPT (SELECT col1, col2 FROM table2); ``` - **用途**:返回第一个结果集中存在但第二个结果集中不存在的行。 - **示例**:`SELECT id, name FROM users EXCEPT SELECT id, name FROM customers;` ##### INTERSECT 运算符 ```sql (SELECT col1, col2 FROM table1) INTERSECT (SELECT col1, col2 FROM table2); ``` - **用途**:返回两个结果集中都存在的行。 - **示例**:`SELECT id, name FROM users INTERSECT SELECT id, name FROM customers;` #### 五、外连接 ##### 左外连接 (LEFT OUTER JOIN) ```sql SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a LEFT OUTER JOIN b ON a.a = b.c; ``` - **用途**:返回左表中的所有记录,以及右表中符合条件的记录。如果右表中没有匹配,则结果中的右表字段为空。 - **示例**:`SELECT users.id, users.name, orders.order_id FROM users LEFT OUTER JOIN orders ON users.id = orders.user_id;` ##### 右外连接 (RIGHT OUTER JOIN) ```sql SELECT a.a, a.b, a.c, b.c, b.d, b.f FROM a RIGHT OUTER JOIN b ON a.a = b.c; ``` - **用途**:返回右表中的所有记录,以及左表中符合条件的记录。如果左表中没有匹配,则结果中的左表字段为空。 - **示例**:`SELECT users.id, users.name, orders.order_id FROM users RIGHT OUTER JOIN orders ON users.id = orders.user_id;` 通过以上总结,我们可以看到SQL语言提供了丰富的功能来处理各种数据库操作需求,无论是基本的CRUD操作还是复杂的查询和分析。对于初学者而言,掌握这些基本概念是十分重要的,随着经验的积累,可以进一步探索更高级的功能和技术。
剩余16页未读,继续阅读
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
前往页