SQL 对大小写不敏感!
SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
DML:select, update, delete, insert into
DDL: create database, alter database, create table, alter table, drop table, create index, drop index
去重选择:select distinct 列 from 表
升序或降序关键字放在列名后面:order by 列1 desc, 列2 asc
直接在表中插入一行: insert into 表 values (值1, 值2, ......)
或是指定要插入的列: insert into 表(列1, 列2, ...) values (值1, 值2, ...)
update 表 set 列1=值1, 列2=值2, ... where 列0=值0
其中,值1值2是要修改赋给列1列2的新值,值0是列0中已存在的值
delete删除的最小单位是行,而不是行中的某一列,要删除某行的某一列,可以用update赋予其空值
限制返回的结果数量:selecttop数1列 from 表 ,
在mysql中的语法为:select 列 from 表limit数1
like通配符
%:一个或多个字符
_:单指一个字符
方括号例如[ABC]:A、B、C中任意自由组合的字符集和
where多个条件筛选用 in :select * from 表 where 列 in (值1, 值2, ...)
不同的数据库对 between 值1 and 值2 的处理方式是有差异的。有的返回结果包括值1值2,有的不包括,还有的只包括值1不包括值2。
select 表1.列a, 表2.列b from 表1 join 表2 on 表1.x=表2.x 等同于 select 表1.列a, 表2.列b from 表1, 表2 where 表1.x=表2.x
(例子:http://www.w3school.com.cn/sql/sql_join.asp)
不同join的差异:
- JOIN: 如果表中有至少一个匹配,则返回行, 与inner join是一个东西
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行,另,在某些数据库中, LEFT JOIN 称为 LEFT OUTER JOIN
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行,另,在某些数据库中,RIGHT JOIN 称为RIGHT OUTER JOIN
- FULL JOIN: 只要其中一个表中存在匹配,就返回行,另,在某些数据库中, FULL JOIN 称为 FULL OUTER JOIN
union的适用条件:
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
select 列a from 表1 union select 列a from 表2
union 会自动去重,要包含重复值,使用 union all。
create index 索1 on 表1( 列1,列2,...)
一般在插入删除更新等操作较少、而查询较多的情况下,可以使用索引
create unique index 唯一性索引,意味着两个列不能拥有相同的索引值
mysql 去除索引:alter table 表1 drop index 索1
仅仅删除表中的数据,同时保留表本身:truncate table 表1
在表1中增加一列(指明新增列的列名和数据类型):alter table 表1 add 列1 类型1
在表1中删除一列(指明删除列的列名即可):alter table 表1 drop column 列1
修改列1的数据类型(指明列1的新数据类型):alter table 表1 alter column 列1 类型2
mysql主键字段自增:
CREATE TABLE Persons (P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255),PRIMARY KEY (P_Id)
)
MySQL 中最重要的几个内建日期函数:
函数 | 描述 |
---|---|
NOW() | 返回当前的日期和时间 |
CURDATE() | 返回当前的日期 |
CURTIME() | 返回当前的时间 |
DATE() | 提取日期或日期/时间表达式的日期部分 |
EXTRACT() | 返回日期/时间按的单独部分 |
DATE_ADD() | 给日期添加指定的时间间隔 |
DATE_SUB() | 从日期减去指定的时间间隔 |
DATEDIFF() | 返回两个日期之间的天数 |
DATE_FORMAT() | 用不同的格式显示日期/时间 |
为了查询简单且更易维护,尽量请不要在日期中使用时间部分!
NULL值与0是两码事
判断空值不能用=或<>,应该用IS NULL或 IS NOT NULL
当需要把NULL转换为0使用时,mysql使用IFNULL()函数或COALESCE()函数,例如100+IFNULL( 列1 , 0 )