SQL(Structured Query Language结构化查询语言)是一种高级的语言,通过SQL语句我们可以操作关系型数据库,如:创建、更新、查询和删除记录。SQL定义了一组实现这类功能的命令:如:SELECT, INSERT, UPDATE, DELETE, CREATE TABLE, DROP TABLE等。
SQL事例:
这里已经在数据库“studentdb”中创建好一个表“class101”,这个表有三个字段id, name和gpa(Grade Point Average – 平均分)。对于表的列需要为其指定数据类型,此处给id指定为int类型,gpa指定为float类型,name指定为varchar(50)(长度可变,最长50个英文字符)。表中已经写入了3条数据。
Database:studentdb
Table:class101
+-----------+--------------------+-------------+
| id (INT) | name (VARCHAR(50)) | gpa (FLOAT) |
+-----------+--------------------+-------------+
| 11 | Tom | 4.4 |
| 33 | Jack | 4.8 |
| 44 | Kevin | 4.6 |
+-----------+--------------------+-------------+
SQL为我们提供了简单并且直观的方式用于实现关系型数据库的交互。
SELECT语句:
–语法
SELECT column1, column2,... FROM tableName WHERE criteria
SELECT * FROM tableName WHERE criteria -- 查询所有列
–示例
SELECT name, gpa FROM class101
–查询表class101中的name和gpa字段
SELECT * FROM class101
— *表明查询表class101中的全部字段
SELECT name, gpa FROM class101 WHERE gpa >= 2.0
— 你可以将以下操作符用于数字的比较:=, >, <, >=, <=, <> (!=)
SELECT name, gpa FROM class101 WHERE name = 'Tom'
— 完全匹配字符串 (= or !=),字符串必须由单引号’括起来
SELECT name, gpa FROM class101 WHERE name LIKE 'K_v%'
- “LIKE”用于字符串模糊匹配
- 通配符%匹配0个或多个字符
- 通配符_匹配1个字符
SELECT * FROM class101 WHERE gpa > 3.0 OR name LIKE '%K_v%' ORDER BY gpa DESC, name ASC
— 在查询条件中我们可以使用AND(与),OR(或),NOT(非)
— 结果的排序可以使用DESC(倒序)或ASC(正序)
DELETE语句
— 语法
DELETE FROM tableName WHERE criteria
— 示例
DELETE FROM class101
— 删除表”class101”中的所有数据,该命令一定要谨慎使用!
DELETE FROM class101 WHERE id = 33
— 删除id为33的记录
INSERT语句
— 语法
INSERT INTO tableName VALUES (firstColumnValue, ..., lastColumnValue) -- 填写所有列值
INSERT INTO tableName (column1, column2, ...) VALUES (value1, value2, ...) -- 填写指定列值
— 示例
INSERT INTO class101 VALUES (88, 'Jerry', 4.88)
— 为表class101中的每一个字段进行赋值
INSERT INTO class101 (name, gpa) VALUES ('Jack', 4.55)
— 未提供值的列将被赋予默认值NULL
UPDATE更新
— 语法
UPDATE tableName SET column = value WHERE criteria
— 示例
UPDATE class101 SET gpa = 5.0
— 更新所有记录gpa的值为5.0
UPDATE class101 SET gpa = gpa + 1.0 WHERE name = 'Tom'
— 更新用户Tom的gpa为当前数值+1
CREATE TABLE创建表
— 语法
CREATE TABLE tableName (column1Name column1Type, column2Name column2Type, ...)
— 示例
CREATE TABLE class101 (id INT, name VARCHAR(50), gpa FLOAT)
— 创建表class101
DROP TABLE删除表
— 语法
DROP TABLE tableName
— 示例
DROP TABLE class101
— 删除表class101,谨慎操作!
备注: SQL关键字,名称(字段名、表名),字符串可能区分大小写也可能不区分大小写,这完全取决于数据库的具体实现。多数情况下数据库中的关键字是不区分大小写的(如MySQL)。为了清晰起见,以上例子中我们的关键字全部采用大写字母。
对于程序员来说,最好的方式就是把名称和字符串按照大小写严格区分对待。 SQL字符串使用单引号’括起来,但是大多数数据库同时也支持双引号”。