SQL基础
-
字段——列,记录——行
-
空值——具有空值的字段是在创建记录时留空的字段。
-
SQL约束
- NOT NULL约束:保证列中数据不能有 NULL 值
- DEFAULT约束:提供该列数据未指定时所采用的默认值
- UNIQUE约束:保证列中的所有数据各不相同
- 主键约束:唯一标识数据表中的行/记录
- 外键约束:唯一标识其他表中的一条行/记录
- CHECK约束:此约束保证列中的所有值满足某一条件
- 索引:用于在数据库中快速创建或检索数据
-
SQL语法
- 关键字:SELECT INSERT UPDATE DELETE DROP CREATE
- SQL语句以分号结尾
- SQL不区分大小写
-
一些重要的SQL命令
- SELECT - 从数据库中提取数据
- UPDATE - 更新数据库中的数据
- DELETE - 从数据库中删除数据
- INSERT INTO - 向数据库中插入新数据
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
-
SQL语句
- SELECT * FROM Customers ——选择“Customers”表中的所有记录
-
SELECT语法
--选择多个字段 SELECT column1, column2,... FROM table_name; --选择所有字段 SELECT * FROM table_name; --例子 SELECT city FROM Customers; --检索一列 SELECT CustomerName, city FROM Customers; --检索多列 SELECT * FROM Customers; --检索所有列
-
SELECT DISTINCT语法
--SELECT DISTINCT语法用于仅返回不同的(different)值。 SELECT DISTINCT column1, column2, ... FROM table_name; --例子 SELECT DISTINCT Country FROM Customers; --以下SQL语句列出了不同(distinct)客户国家的数量: --但是在Firefox和Microsoft Edge中不起作用 SELECT COUNT(DISTINCT Country) FROM Customers;
-
SQL WHERE 语法
--用于select语法 SELECT column1, column2, ... FROM table_name WHERE conditions; --用于update语法 UPDATE "table_name" SET "column_1" = [new value] WHERE "conditions"; --eg --从"Customers"表中选择其国家为"Mexico"的所有客户 SELECT * FROM Customers WHERE Country = 'Mexico'; SELECT * FROM Customers WHERE Country = 'Mexico' OR PostalCode = '05021'; --文本字段使用单引号,数值字段不用引号 SELECT * FROM Customers WHERE CustomerID = 1; --where子句中的运算符 < >:不等于 BETWEEN:在某个范围内 LIKE:搜索某种模式 IN:为列指定多个可能的值
-
AND, OR and NOT
--AND语法 SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND conditions ...; --OR语法 SELECT column1, colummn2,... FROM table_name WHERE condition1 OR condition2 OR condition3 ...; --NOT语法 SELECT column1, column2, ... FROM table_name WHERE NOT condition; --从 "Customers" 表中选择其国家为 "Germany" 、其城市为"Berlin" 的所有客户 SELECT * FROM Customers WHERE Country = 'Germany' AND City = 'Berlin'; --选择城市为“Berlin”或“München”的“Customers”的所有字段 SELECT * FROM Customers WHERE City='Berlin' OR City='München'; --以下SQL语句选择国家不是 "Germany"的"Customers"的所有字段 SELECT * FROM Customers WHERE NOT Country='Germany'; --结合AND和OR,从国家 "Germany" 且城市为"Berlin" 或"München"的"Customers" 表中选择所有客户 SELECT * FROM Customers WHERE Country = 'Germany' AND (City = 'Berlin' OR City = 'Munchen'); --结合AND,OR和NOT --选择国家是“德国”的“客户”的所有字段,城市必须是“柏林”或“慕尼黑”(用括号形成复杂表达式) SELECT * FROM Customers WHERE Country = 'Germany' AND (City = 'Berlin' OR City = 'Munchen')
-
ORDER BY KEYBOARD(按关键字排序)
--ORDER BY语法 SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC; --从 "Customers" 表中选取所有客户,并按照 "Country" 列排序 SELECT * FROM Customers ORDER BY Country; --从 "Customers" 表中选取所有客户,并按照 "Country" 列降序排序 SELECT * FROM Customers ORDER BY Country DESC; --从 "Customers" 表中选取所有客户,并按照 "Country" 和 "CustomerName" 列排序 SELECT * FROM Customers ORDER BY Country, CustomerName; --从"Customers" 表中选择所有客户,按 "Country" 升序排列,并按 "CustomerName" 列降序排列 SELECT * FROM Customer ORDER BY Country ASC, CustomerName Desc;
-
INSERT INTO 语法(在表中插入新的数据行)
--表单没有指定要插入数据的列的名称,只提供要插入的值,即可添加一行新的数据
INSERT INTO table_name(column1, column2,column3, ...)
VALUES(value1, value2, value3, ...);
--要为表中的所有列添加值,则不需要在SQL查询中指定列名称
INSERT INTO table_name
VALUES(value1, value2, value3, ...);
--可以通过另一个表上的SELECT语句查询出来的字段值,然后将数据填充到本表中,条件是另一个表所查询的字段与本表要插入数据的字段是一一对应的。
INSERT INTO first_table_name[(column1, column2, ... columnN)]
SELECT column1, column2, ...columnN
FROM second_table_name
[WHERE condition];
-
NULL VALUES语法
--IS NULL语法 SELECT column_names FROM table_name WHERE column_name IS NULL; --IS NOT NULL语法 SELECT column_names FROM table_name WHERE column_name IS NOT NULL; --创建表的时候,NULL的基本语法如下 CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDERSS CHAR(25), SALARY DECIMAL(18, 2), PRIMARY KEY (ID) );
-
UPDATE 语法(更新表中的记录)
--具有where子句和update查询的基本语法如下所示 UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition; --为第一个客户(CustomerID = 1)更新了“ContactName”和“City” UPDATE Customers SET ContactName = 'Alfred Schmidt', City = 'Frankfurt' WHERE CustomerID = 1; --将把国家/地区为"Mexico"的所有记录的联系人姓名更新为“Juan” UPDATE Customers SET ContactName = 'Juan' WHERE Country = 'Mexico'; --update警告! UPDATE Customers SET ContactName = 'Juan';
-
DELETE语法
--DELETE语法(没有写where的话会把所有的记录都删除了) DELETE FROM table_name WHERE conditions; --从"Customers" 表中删除客户“Alfreds Futterkiste” DELETE FROM Customers WHERE CustomerName = 'Alfreds Futterkiste'; --可以删除表中的所有行,而不需要删除该表。这意味着表的结构、属性和索引将保持不变 DELETE FROM table_name; 或者 DELETE * FROM table_name;
-
SQL 运算符
-
算术运算符:+、-、*、/、%
-
比较运算符:= != <> > < >= <= !< !>
-
逻辑运算符
-
ALL ALL运算符用于将值与另一个值集中的所有值进行比较。 AND AND运算符允许在SQL语句的WHERE子句中指定多个条件。 ANY ANY运算符用于根据条件将值与列表中的任何适用值进行比较。 BETWEEN BETWEEN运算符用于搜索在给定最小值和最大值内的值。 EXISTS EXISTS运算符用于搜索指定表中是否存在满足特定条件的行。 IN IN运算符用于将值与已指定的文字值列表进行比较。 LIKE LIKE运算符用于使用通配符运算符将值与类似值进行比较。 NOT NOT运算符反转使用它的逻辑运算符的含义。 例如:NOT EXISTS, NOT BETWEEN, NOT IN等等,这是一个否定运算符。 OR OR运算符用于组合SQL语句的WHERE子句中的多个条件。 IS NULL IS NULL运算符用于将值与NULL值进行比较。 UNIQUE UNIQUE运算符搜索指定表的每一行的唯一性(无重复项)。
-
-
-
SQL表达式
--句法 SELECT column1, column2, columnN FROM table_name WHERE [CONDITION|EXPRESSION]; --不同类型的sql表达式:布尔型、数值型、日期 --sql布尔表达式基于匹配单个花去数据 SELECT column1, column2, columnN FROM table_name WHERE SINGLE VALUE MATCHING EXPREESION; --EG SELECT * FROM CUSTOMERS WHERE SALARY = 10000; --数值表达式用于在任何查询中执行任何数学运算 SELECT numerical_expression as OPERATION_NAME [FROM table_name WHERE CONDITION]; --EG SELECT (15 + 6) AS ADDTION --EG SELECT COUNT(*) AS "RECORDS" FROM CUSTOMERS; --日期表达式用于返回当前系统日期和时间值 SELECT CURRENT_TIMESTAMP; SELECT GETDATE();
-
选择数据库USE语句
--USE语句 USE DatabaseName; --查看可用的数据库 SHOW DATABASES;