参考资料:
《菜鸟课程–SQL基础教程》
一些重要的sql语句:
- SELECT - 从数据库中提取数据
- UPDATE - 更新数据库中的数据
- DELETE - 从数据库中删除数据
- INSERT INTO - 向数据库中插入新数据
- CREATE DATABASE - 创建新数据库
- ALTER DATABASE - 修改数据库
- CREATE TABLE - 创建新表
- ALTER TABLE - 变更(改变)数据库表
- DROP TABLE - 删除表
- CREATE INDEX - 创建索引(搜索键)
- DROP INDEX - 删除索引
注意:
- SQL不分大小写
- 有些数据库可能要求每一条SQL语句之后加个;代表一个语句结束,这样就可以执行多条SQL语句。
- SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
- 如果是数值字段,请不要使用引号。
显示一张数据表格
下面是选自 “Customers” 表的数据:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
上面的表包含五条记录(每一条对应一个客户)和七个列(CustomerID、CustomerName、ContactName、Address、City、PostalCode 和 Country)。
者保存到服务器草稿箱**。
基本SQL语句操作
SELECT语句:(从数据库选取数据,结果存储在结果表中,成为结果集)
语法:
SELECT column_name,column_name FROM table_name
例子:
从 “Customers” 表中选取 “CustomerName” 和 “City” 列:
select CustomerName,City from Customers;
选取所有列:
select * from Customers;
SELECT DISTINCT 语句:DISTINCT 关键词用于返回唯一不同的值。
例子:
仅从 “Customers” 表的 “City” 列中选取唯一不同的值。从 Company” 列中仅选取唯一不同的值:
select distinct city from Customers;
SQL WHERE语句:WHERE 子句用于提取那些满足指定标准的记录。
语法:
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;
例子:
从 “Customers” 表中选取国家为 “Mexico” 的所有客户:
select * from Customers where Country=’Mexico’;
数值字段:SELECT * FROM Customers
WHERE CustomerID=1;
SQL AND & OR 运算符:与其他语言的逻辑运算
例子:
从 “Customers” 表中选取国家为 “Germany” 且城市为 “Berlin” 的所有客户:
select * from Customers where Country = ‘Germany’ And City = ‘Berlin’;
从 “Customers” 表中选取城市为 “Berlin” 或者 “München” 的所有客户:
select * from Customers Where Country =’Berlin’ Or Country =’München’;
从 “Customers” 表中选取国家为 “Germany” 且城市为 “Berlin” 或者 “München” 的所有客户:
SELECT * FROM Customers WHERE Country=’Germany’ AND (City=’Berlin’ OR City=’München’);
SQL ORDER BY:ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
例子:
从 “Customers” 表中选取所有客户,并按照 “Country” 列排序:
select * from Cutomers ORDER BY Country;
从 “Customers” 表中选取所有客户,并按照 “Country” 列降序排序:
select * from Cutomers ORDER BY Country DESC;
SQL INSERT INTO 语句:INSERT INTO 语句用于向表中插入新记录。
语法:
INSERT INTO 语句可以有两种编写形式。
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
INSERT INTO table_name VALUES (value1,value2,value3,…);
第二种形式需要指定列名及被插入的值:(column不需要加引号,看例子)
INSERT INTO table_name (column1,column2,column3,…) VALUES (value1,value2,…);
例子:
插入一个新行,但是只在 “CustomerName”、”City” 和 “Country” 列插入数据(CustomerID 字段会自动更新):
insert into Customers (CustomerName,City,Country) Values (‘Cardinal’, ‘Stavanger’, ‘Norway’);
SQL UPDATE 语句:UPDATE 语句用于更新表中已存在的记录。
语法:
UPDATE table_name SET column1=value1,column2=value2,… WHERE some_column=some_value;
(注意:WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!)
例子:
把客户 “Alfreds Futterkiste” 更新为一个新的联系人和城市。
update Customers Set ContactName=’Alfred Schmidt’, City=’Hamburg’
Where CustomerName=’Alfreds Futterkiste’;
(若缺少where语句,所有人的联系人和城市都会被更新成ContactName=’Alfred Schmidt’, City=’Hamburg’ )
SQL DELETE 语句:DELETE 语句用于删除表中的行。
语法:
DELETE FROM table_name WHERE some_column=some_value;
(同样Where语句不可缺少!!!否则,后果严重)
例子:
从 “Customers” 表中删除客户 “Alfreds Futterkiste”。
Delete from Customers Where CustomerName = ‘Alfreds Futterkiste’ And ContactName=’Maria Anders’;
删除表中所有数据,保持表中索引,属性以及表的结构:
Delete * From Customers;*号可加可不加
补充: mysql的基本数据类型
三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型
Text 类型:
数据类型 | 描述 |
---|---|
CHAR(size) | 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 |
VARCHAR(size) | 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。 |
TINYTEXT | 存放最大长度为 255 个字符的字符串。 |
TEXT | 存放最大长度为 65,535 个字符的字符串。 |
BLOB | 用于 BLOBs(Binary Large OBjects)。存放最多 65,535 字节的数据。 |
MEDIUMTEXT | 存放最大长度为 16,777,215 个字符的字符串。 |
MEDIUMBLOB | 用于 BLOBs(Binary Large OBjects)。存放最多 16,777,215 字节的数据。 |
LONGTEXT | 存放最大长度为 4,294,967,295 个字符的字符串。 |
LONGBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。 |
ENUM(x,y,z,etc.) | 允许您输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。注释:这些值是按照您输入的顺序排序的。可以按照此格式输入可能的值: ENUM(‘X’,’Y’,’Z’) |
SET | 与 ENUM 类似,不同的是,SET 最多只能包含 64 个列表项且 SET 可存储一个以上的选择。 |
Number 类型:
数据类型 | 描述 |
---|---|
TINYINT(size) | -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。 |
SMALLINT(size) | -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。 |
MEDIUMINT(size) | -8388608 到 8388607 普通。0 to 16777215 无符号*。在括号中规定最大位数。 |
INT(size) | -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。 |
BIGINT(size) | -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。 |
FLOAT(size,d) | 带有浮动小数点的小数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。在 size 参数中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
*这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED 属性,那么范围将从 0 开始,而不是某个负数。
Date 类型:
数据类型 | 描述 |
---|---|
DATE() | 日期。格式:YYYY-MM-DD (注释:支持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’) |
DATETIME() | *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS(注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’) |
TIMESTAMP() | *时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的秒数来存储。格式:YYYY-MM-DD HH:MM:SS注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC |
TIME() | 时间。格式:HH:MM:SS(注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’) |
YEAR() | 2 位或 4 位格式的年。(注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。) |
*即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。