SQL学习笔记

-- 符号:斜`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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值