1.空值与非空值
NULL:字段值可以为空;
NOT NULL:字段值不可以为空。
例如:
CREATE TABLE tb2(
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED NULL
);
2.AUTO_INCREMENT自动编号
必须与主键组合使用;默认情况下,起始值为1,每次的增量为1。
3.PRIMARY KEY主键约束
每张数据表只能存在一个主键;主键保证记录的唯一性;主键自动为NOT NULL。
例如:
CREATE TABLE tb3(
id SMALLINT UNSIGNED AUTO_INCRMENT PRIMARY KEY,
username VARCHAR(30) NOT NULL
);
4.UNIQUE KEY唯一约束
唯一约束可以保证记录的唯一性;唯一约束的字段可以为空值(NULL);每张数据表可以存在多个唯一约束。
5.DEFAUT默认约束
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。
6.UPDATE更新记录(表单更新)
UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET [column_name1={expr | DEFAULT}]
[column_name2={expr | DEFAULT}]...[WHERE where_codition]]
省略掉WHERE条件将全部更新。
7.DELETE删除记录(表单删除)
DELETE FROM tbl_name [WHERE where_condition]
省略WHERE条件将整表删除。
8.查询表达式
每个表达式表示想要的一列,必须有至少一个。多个列之间以英文逗号分隔。星号(*)表示所有列。tbl_name *可以表示命名表的所有列。查询表达式可以使用[AS] alias_name为其赋予别名。别名可以用于GROUP BY,ORDRE BY或者HAVING子句。
例如:
SELECT id,username FROM users;
GROUP BY查询结果分组
[GROUP BY{column_name|postion}[ASC|DESC],...];
ASC表示升序(ascend),DESC表示降序(descend);
例如:
SELECT sex FROM users GROUP BY;
HAVING分组条件
[HAVING where_condition]
例如:
SELECT sex FROM users HAVING count(id)>=2;
OEDER BY对查询结果进行排序
[ORDER BY {cd_name|expr|postion} [ASC|DESC],...];
例如按照id降序排列SELECT * FROM users ORDER BY id DESC;
LIMIT限制查询结果返回的数量(PHP中分页操作可以使用)
[LIMIT {[offset] row_count|row_count OFFSET offset}];
例如:SELECT * FROM users LIMIT 2;
显示第0条,第1条记录;
SELECT * FROM users LIMIT 2,2;
显示第2条,第3条记录。
INSERT插入记录
INSERT [INTO] tbl_name SET column_name={expr|DEFAULT},...;
说明:与第一种方式的区别在于,此方法可以使用子查询(SubQuery)
例如:
INSERT test(username) FROM users WHERE age>=30;
将数据表users中年龄大于等于30的username插入test的username中。
SELECT * FROM test\G;
将数据表以网格的形式显示出来。
SET NAMES gbk;
在客户端以gbk的格式显示出来。
8.子查询:子查询(subquery)是指出现在其他SQL语句内的SELECT子句。
例如:
SELECT * FROM t1 WHERE col1=(SELECT col2 FROM t2);
其中SELECT * FROM t1称为Outer Query/Outer statement,SELECT col2 FROM t2称为SubQuery。
子查询是嵌套在查询内部,且不许出现在圆括号内;
子查询可以包含多个关键字或条件。
如DISINCT,GROUP BY,ORDER BY,LIMIT,函数等。
子查询的外层查询可以是SELECT,INSERT,UPDATE,SET或DO。