-- 符号:斜`name`标识列名,为了和sql语法区分;
””’’标识字符串,对于字符串二者似乎没区别。
-- INSERT:INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees'); 注意格式!Values始终复数,括号不能省。
INSERT INTO 语句用于向表格中插入新的行。
-- WHERE:查找功能。多项时可以列名称 IN (值1,值2,值3);
-- LIKE:模糊查找,使用%模糊一位或者多位。
-- AS:命名为,或起别名。 跟谁后边是谁别名,注意紧随列还是表
Courses c等同于courses AS c,给courses表取别名为c
-- 整体判断顺序似乎从后至前:筛选->运算
-- SELECT `name`, `email`, ISNULL(`email`), IFNULL(`email`, 0);
ISNULL(`email`)将作为select出的表的列名。
-- DATE_FORMAT(date, format):将日期和时间值格式化为不同的字符串格式。
Eg.DATE_FORMAT(DATE(`created_at`),"%Y-%m-%d")
%m 表示月份,%d 表示日期,%Y 表示年份(大写4位,小写两位),%w 表示星期。等等。
-- AND: 用于连接条件,而不是用于连接列名。多个内容应加逗号分隔。
-- DATE_ADD:DATE_ADD(date, INTERVAL expr unit)
date是一个日期或日期时间表达式,expr是一个表示时间间隔的数字值。
unit 是时间单位,可以是 YEAR、MONTH、DAY、HOUR、MINUTE、SECOND 等。
Eg. SELECT DATE_ADD(order_date, INTERVAL 3 DAY) AS new_ship_date
FROM orders;
-- DATEDIFF() 和 TIMESTAMPDIFF() 计算日期或时间差异。注意没有_!
DATEDIFF(end_date, start_date) 计算天差值(测试后减前,存疑)
TIMESTAMPDIFF(unit, start_date, end_date) 计算指定目标目标差值(后减前)
注意:date不要写指定目标,函数自己识别!
-- 创建表:
CREATE TABLE `Persons` (
`ID` int NOT NULL,
`LastName` varchar(255) NOT NULL,
`FirstName` varchar(255) NOT NULL,
`Age` int
);
-- 更改已创建的表
ALTER TABLE `Persons`
---- 约束
-- 非空约束 NOT NULL
已建立表后更改:MODIFY `Age` int NULL; -- 删除 NOT NULL 约束,不是设置为空
-- 唯一约束
建表时 一个唯一约束:UNIQUE (`P_Id`)
建表时 多个唯一约束:CONSTRAINT uc_PersonID UNIQUE (`P_Id`,`LastName`)
命名唯一约束并命名为uc_PersonID,并定义多个列的 UNIQUE 约束:
ALTER TABLE `Persons` --修改表
ADD UNIQUE(`P_Id`) --修改表 添加唯一约束
DROP INDEX uc_PersonID --修改表 撤销唯一约束 -- 撤销约束的名字 即撤销操作
-- 主键约束
PRIMARY KEY (`P_Id`)
DROP PRIMARY KEY; -- 撤销主键约束
撤销唯一约束时通常需要提供约束的名称。如果没有显式为约束指定名称,系统通常会自动生成一个默认的约束名称。因此,如果你不知道约束的确切名称,可以通过查询系统表或使用数据库管理工具来查找它。
在某些数据库管理系统中,也可以使用类似于以下的语法来撤销最后一个添加的唯一约束,而无需指定名称:ALTER TABLE TableNameDROP CONSTRAINT UNIQUE;
-- 外键
添加外键 建立时:FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
添加外键 修改:
ALTER TABLE `courses`
ADD FOREIGN KEY(`teacher_id`) REFERENCES teachers(`id`); --注意此处 表teachers写成函数形式
-- CHECK约束
和条件判断词组合,似乎为了表示更丰富的约束
-- DEFAULT约束
删除是由于不像主键一样是唯一的,需要指定列
ALTER TABLE `Persons`
ALTER `City` DROP DEFAULT
-- 查看表
desc Persons;
-- 内连结 两表有匹配信息才显示出来
-- 外连结 不管匹配有一就显示出来
格式:SELECT column_name 1,column_name 2 ... column_name n2
FROM table13 LEFT | RIGHT | FULL (OUTER) JOIN table24 ON CONDITION;、
注意:在mysql数据库中暂未支持full join形式的全连接!不过我们可以使用union语句来变相实现全连接。
-- GROUP BY(搭配聚合函数使用)
SELECT `country`, COUNT(`country`) AS `teacher_count`
FROM `teachers`
GROUP BY `country`
ORDER BY `teacher_count`, `country`;
-- ORDER BY 排序,默认从小到大,反序写desc
eg.ORDER BY `teacher_count` desc