重要的 SQL 命令
SELECT - 从数据库中提取数据
查找数据列
SELECT column1, column2, … FROM table_name;
SELECT column_name(s) FROM table_name
条件查询
SELECT [*] FROM [TableName] WHERE [condition1] [AND [OR]] [condition2]…
SELECT column_name() FROM table _name ORDER BY column_name() ASC or DESC
SELECT * FROM Products WHERE Price BETWEEN 10 AND 20;
数据去重
SELECT DISTINCT username from test.user_table;
SELECT COUNT(DISTINCT username) from test.user_table ();
数据分页
– 先将查询结果截取前5条,然后按help_topic_id降序排序
(SELECT * from help_topic where name like ‘co%’ limit 5) order by help_topic_id desc– 先将查询结果根据help_topic_id降序排序,然后从第二条开始截取5条数据
SELECT * from help_topic where name like ‘co%’ order by help_topic_id desc limit 2,5
–多表数据查询
SELECT * from func t, help_topic t1 where t.ret = t1.help_topic_id
– 子查询 + 算术运算 (算数运算符包括:count , max, min, avg)
SELECT * from help_topic where help_topic_id = (select avg(help_topic_id)-0.5 from help_topic)
UPDATE - 更新数据库中的数据
(注意:如果UPDATE语句中的WHERE字句未指定那些记录更新,则所有记录都将更新)
– 更新数据
UPDATE table_name SET column=value, column1=value1,… WHERE someColumn=someValue
DELETE - 从数据库中删除数据
–删除某一行数据
DELETE FROM tableName WHERE someColumn = someValue
–删除所有行
DELETE FROM table_name; /// 等同于DELETE * FROM table_name;
– 批量删除匹配模糊查询的数据
DELETE from func where name like ‘evan%’
– 批量删除数据
DELETE from func where name in (‘luke2’, ‘luke3’)
INSERT INTO - 向数据库中插入新数据
–单词插入单条数据
INSERT INTO table_name VALUES (value1, value2, value3, …);
INSERT INTO table_name (column, column1, column2, column3, …) VALUES (value, value1, value2, value3 …)
– 单次插入多条数据
INSERT into func (name, ret, dl, type)
VALUES
(‘evan2’, 2, ‘a’, 3),
(‘evan3’, 2, ‘a’, 3),
(‘evan4’, 2, ‘a’, 3),
数据库操作
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
WHERE子句可以与AND,OR和NOT运算符结合使用(AND和OR运算符用于根据多个条件筛选记录)。
- 如果由AND分隔的所有条件为TRUE,则AND运算符显示记录。
- 如果由OR分隔的任何条件为真,则OR运算符显示记录。
- 如果条件不为真,则NOT运算符显示记录。
SQL ORDER BY Keyword(按关键字排序)
SELECT column1, column2, … FROM table_name ORDER BY column1, column2, … ASC|DESC;
SELECT * FROM Customers ORDER BY Country ASC, CustomerName DESC; (两列单独排序,非一行锁定关联)
IS NULL 或者 IS NOT NULL 来检测某个字段是否为 NULL。
- (NULL 用于表示缺失的值,数据表中的 NULL 值表示该值所处的字段为空)
- 值为 NULL 的字段没有值。尤其要明白的是,NULL 值与 0 或者包含空白(spaces)的字段是不同的。
- 使用比较运算符(例如=,<或<>)来测试NULL值是不可行的,我们将不得不使用IS NULL和IS NOT NULL运算符。
SELECT column_names FROM table_name WHERE column_name IS NULL
;
LIMIT
SELECT * FROM Persons LIMIT 5;
SELECT * from help_topic limit 3,2
外连
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author
SQL LIKE 操作符(LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。)
有两个通配符与LIKE运算符一起使用:
- % - 百分号表示零个,一个或多个字符
- _ - 下划线表示单个字符
SQL Wildcards通配符(1.通配符用于替换字符串中的任何其他字符,可以组合使用)
通配符与SQL LIKE运算符一起使用
- % - 百分号表示零个,一个或多个字符
- _ - 下划线表示单个字符
使用 SQL [charlist] 通配符
- SELECT * FROM Customers WHERE City LIKE ‘[bsp]%’; (以b、s或者p开头的) SELECT
- FROM Customers WHERE City LIKE ‘[a-c]%’; (以a到z的任意字符开头的)
使用[!charlist]通配符
- SELECT * FROM Customers WHERE City LIKE ‘[!bsp]%’;
- SELECT * FROM Customers WHERE City NOT LIKE ‘[bsp]%’;
查询语句各关键词的优先级
可得 from > where > group by > select > order by。这就是一条基本sql的执行顺序。
实例操作