可以把sql分为 数据操作语言(DML)和数据定义语言(DDL)
查询和更新指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
SQL 中最重要的 DDL 语句:
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
SELECT
SELECT * FROM TABLE
DISTINCT用来返回唯一不同的值
SELECT DISTINCT FROM TABLE
WHERE
如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。
数据库名 Persons,选取居住在城市 "Beijing" 中的人
SELECT * FROM Persons WHERE City='Beijing'
AND OR 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
用AND 显示 所有FirstName为Thomas 并且LastName 为Carter的人
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'
用OR显示 所有FirstName为Thomas 并且LastName 为Carter的人
SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'
ORDER BY 语句
用于对结果集进行排序。
降序对记录进行排序,可以使用 DESC 关键字。
SELECT Company, OrderNumber FROM Orders ORDER BY Company
升序对记录进行排序,可以使用 ASC 关键字。
SELECT Company, OrderNumber FROM Orders ORDER BY OrderNumber ASC
INSERT INTO
INSERT INTO 语句用于向表中插入新记录。
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
UPDATA
UPDATE 语句用于更新表中的记录。
UPDATE Websites
SET alexa='5000', country='USA' //set后面是更新的值
WHERE name='菜鸟教程'; //WHERE后面将决定哪一条数据会被修改
注意如果没有WHERE 那么所有的数据都将被修改
在 MySQL 中可以通过设置 sql_safe_updates 这个自带的参数来解决,
当该参数开启的情况下,你必须在update 语句后携带 where 条件,否则就会报错。
set sql_safe_updates=1; 表示开启该参数
DELETE
DELETE 语句用于删除表中的行。
DELETE FROM table_name
WHERE some_column=some_value;
DELETE FROM table_name; 或 DELETE * FROM table_name;
这两条DELETE将会在不改变 表 的结构、属性、索引的情况下删除数据
DROP、TRUNCATE、DELETE的区别
- DROP test:删除表test,并释放空间,将test删除的一干二净。
- TRUNCATE test:删除表test里的内容,并释放空间,但不删除表的定义,表的结构还在。
- DELETE:
- 1、删除指定数据
- DELETE FROM test WHERE age=30 AND country='US';
- 2、删除整个表
- 仅删除表test内的所有内容,保留表的定义,不释放空间。
- DELETE FROM test 或者 DELETE FROM test;
- DELETE * FROM test 或者 DELETE * FROM test;
- 1、删除指定数据
SELECT TOP子句
下面的 SQL 语句从 "Websites" 表中选取头两条记录:
SELECT * FROM Websites LIMIT 2;
下面的 SQL 语句从 websites 表中选取前面百分之 50 的记录:
SELECT TOP 50 PERCENT * FROM Websites;
LINK
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
下面的 两条 SQL 语句分别选取 name 以字母 "G" 开始的所有客户和所有以字母“k”结尾的客户:
1.SELECT * FROM Websites WHERE name LIKE 'G%'; //"%" 符号用于在模式的前后定义通配符(缺省字母)。
2.SELECT * FROM Websites WHERE name LIKE '%k';
下面的 SQL 语句选取 name 包含模式 "oo" 的所有客户 和 不包含模式"oo"的所有客户:
SELECT * FROM Websites WHERE name LIKE '%oo%';
SELECT * FROM Websites WHERE name NOT LIKE '%oo%';
'%a' //以a结尾的数据
'a%' //以a开头的数据
'%a%' //含有a的数据
'_a_' //三位且中间字母是a的
'_a' //两位且结尾字母是a的
'a_' //两位且开头字母是a的