SQL笔记

参考资料:

《菜鸟课程–SQL基础教程》

一些重要的sql语句:

  • SELECT - 从数据库中提取数据
  • UPDATE - 更新数据库中的数据
  • DELETE - 从数据库中删除数据
  • INSERT INTO - 向数据库中插入新数据
  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

注意

  1. SQL不分大小写
  2. 有些数据库可能要求每一条SQL语句之后加个;代表一个语句结束,这样就可以执行多条SQL语句。
  3. SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
  4. 如果是数值字段,请不要使用引号。

显示一张数据表格
下面是选自 “Customers” 表的数据:

CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico
4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

上面的表包含五条记录(每一条对应一个客户)和七个列(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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值