根据b站视频学习,自用
sql(structured query language)
table and key
sql语法
关键字大小写都可以,但习惯用大写来写关键字
数据类型
1.创建资料库
CREATE DATABASE `名字`;
反引号是为了避免名字与关键字冲突,这样就可以命名为database而不报错
2.列出所有资料库
SHOW DATABASES;
3.删除资料库
DROP DATABASE `名字`;
4.创建表格(首先要选择资料库)
USE `name`;
CREATE TABLE `student`(
`student_id` INT PRIMARY KEY,//主键不可重复
`name` VARCHAR(20),
`major` VARCHAR(20)
);
5.显示表格
DESCRIBE `name`;
6.删除表格
DROP TABLE `name`;
7.新增表格属性(删除表格属性)
ALTER TABLE `name` ADD shuxing DECIMAL(3,2);//删除就是把ADD换成DROP COLUMN shuxing
8.新增表格里面的资料
INSERT INTO `student` VALUES(1,'小白','历史');//没有就填NULL
9.列出表格中所有资料
SELECT * FROM `student`;
10.constraints 限制
USE `name`;
CREATE TABLE `student`(
`student_id` INT PRIMARY KEY,
`name` VARCHAR(20) NOT NULL//UNIQUE,//DEFAULT 'LISHI'//不写name就直接变成预设的lishi
`major` VARCHAR(20)
);
AUTO_INCREMENT//自动增加
10.修改,删除资料
UPDATA `student`
SET `major` = '英语文学', `major` = '物理'
where `major` = '英语' OR `major` = '化学';
DELETE FROM `student`
WHERE `student_id` = 4 AND `major` = '物理';//WHERE `score` < 60
//不加WHERE就把student表格所有资料删除
11.取得资料
SELECT `name`,`major` FROM `student`;//全都要写*
想要有顺序(descending 降序的 ascending 升序的)
SELECT *
FROM `student`
ORDER BY `score` //DESC 从高到低,默认是ASC,从低到高
//ORDER BY `score`,`student_id`;//要是score一样就用student_id排序
想要少许资料
SELECT *
FROM `student`
ORDER BY `score` DESC
LIMIT 3;//可以和order by一起用
where限制
SELECT *
FROM `student`
WHERE `major` = '英语' OR `score` <> 70;//不等于
LIMIT 2;
//WHERE `major` IN('历史','英语','生物');//相当于or
实践(公司)
只能先新增branch,因为employee有外键在branch
后面的不想看了qwq,有机会再学
练习
1.取得所有员工资料
SELECT * FROM `employee`;
2.按薪水低到高取得员工资料
SELECT * FROM `employee` ORDER BY `salary`;
3.取得所有员工名字
SELECT `name` FROM `employee`;
//SELECT DINTINCT `sex` FROM `employee`;//就会只有一个f与m,不会有多个
聚合函数
1.取得员工人数
SELECT COUNT(*) FROM `employee`;//用*就是直接知道资料个数,把*换成属性就是看有这个属性的资料个数,因为NULL就不算有
2.取得所有出生在某时间后的女性员工人数
SELECT COUNT(*) `employee` WHERE `birth_data` > '1970-01-01' AND `sex` = 'F';
3.取得所有员工的平均薪水
SELECT AVG(`salary`) FROM `employee`;
4.取得所有员工薪水的总和
SELECT SUM(`salary`) FROM `employee`;
5.取得薪水最高的员工,最低就是换成MIN
SELECT MAX(`salary`) FROM `employee`;
万用字元
%代表多个字元, _代表一个字元
1.取得电话号码尾数是335的客户
SELECT *
FROM `client`
WHERE `phone` LIKE '%335';//开头就是'335%',中间就是'%335%'
2.取得生日在12月的员工
SELECT *
FROM `employee`
WHERE `birth_data` LIKE '_____12%';//5个_是因为是2022-
union 并集
1.员工名字 union 客户名字
SELECT `name`
FROM `employee`
UNION
SELECT `client_name`
FROM `client`
UNION
SELECT `branch_name`
FROM `branch`;//数目要对应,类型要对应
2.员工id加名字union客户id加名字 偷个懒截图啦
3.员工薪水 union 销售金额
join 连接
1.取得所有部门经理的名字
SELECT *
FROM `employee`
JOIN `branch`
ON `emp_id` = `manager_id`;
子查询 subquery
1.找出研发部门的经理名字
3小时的课看到了18号下午捏