【LittleXi】sql学习笔记

【LittleXi】sql学习笔记

数据类型

INT 整数型

VARCHAR 字符串

DECIMAL(a,b) 浮点型(a代表位数,b代表小数位位数)

BLOB 图片、影片、档案

DATA 日期 XXXX-MM-DD

TIMESTAMP 记录时间 XXXX-MM-DD HH-MM-SS

创建数据库

CREATE DATABASE sql_tutorial;

查看数据库

SHOW DATABASES;

移除数据库

DROP DATABASE sql_tutorial;

使用数据库

USE sql_tutorial;

创建表单

CREATE TABLE student(
	`student_id` INT auto_increment, --auto_increment指可以自动修改键的值
    `name` varchar(20) not null,
    `major` varchar(20) unique,
    primary key(`student_id`) --primary key 指索引关键字
);

删除表单

drop table student;

显示表单

describe student;

插入表单内容

alter table student add gpa decimal(3,2);

删除表单内容

alter table student drop column gpa;

显示表单具体内容

select * from student;

插入表单具体内容的三种方式

insert into `student` values(1,"小夕","家妻修养指南");

insert into `student` values(2,"德克萨斯","剑雨");

insert into `student` (`name`,`major`) values("羽毛笔","卖萌"); --仅限primary key有自动自增的时候

更新表单中的内容

update`student`
set `major` = "近战"
where `major` = "术士";
update `student`
set `major` = "近战"
where `student_id` =  1;

删除表单

delete from `student`
where `student_id` in (1,3);
delete from `student`
where `student_id` % 2 = 1;

从表单中取得资料(三种方法)

-- 取得资料
select `name` , `major` from `student`;

select * from `student` 
order by `student_id` desc  -- 默认asc由低到高,desc由高到低
limit 2; -- 限制取回的资料的数目

select * from `student` 
order by `student_id` , 'score' desc; -- 先根据student_id排序,如果student_id 一样的话,就按照score进行排序                                 

aggregate functions 聚合函数

– 1、取得员工人数
select count(*) from `employee`;

– 2、取得所有出生日1970-01-01之后的女性员工人数
select count(*) from `employee` where `birth_data` > "1970-01-01" and `sex`='F';

– 3、取得所有员工的平均薪水
select avg(`salary`) from `employee`;

– 4、取得所有员工薪水的总和
select sum(`salary`) from `employee`;

– 5、取得薪水最高的员工
select max(`salary`) from `employee`;

– 6、取得薪水最低的员工
elect min(`salary`) from `employee`;

wildcards 万用字元 %代表多个字元 , _ 代表一个字元

1、取得电话号码位数是114514的客户

select *
from `client`
where `phone` like "%114514";

2、取得姓小的用户

select *
from `client`
where `client_name` like "小%";

3、取得生日在12月的员工

select *
from `employee`
where "birth_data" like "_____12%";  -- 2000-12-19

union 联集

1、员工名字 union 客户名字

select `name`
from `employee`
union 
select `client_name`
from `client`
union
select `branch_name`
from `branch`;

2、员工id + 员工名字 union 客户id + 客户名字

select `emp_id` as `changed_id`, `name` as `changed_name`
from `employee`
union 
select `client_id`,`client_name`
from `client`;

3、员工薪水 union 销售金额

select `salary` as `changed_salary`
from `employee`
union 
select `total_sales`
from `work_with`;

join 连接:可以帮助我们把两个表格连接在一起

取得所有部门经理的名字

  • left : 条件成不成立都会传回左边的表格
  • right ;条件成不成立都会传回右边的表格
select `emp_id`,`name`,`branch_name`
from `employee` left join `branch`
on `employee`.`emp_id` = `branch`.`manager_id`;

subquery 子查询
1、找出研发部门的经理名字

select `name`
from `employee`
where `emp_id` = (
	select `manager_id`
	from `branch`
	where `branch_name` = "研发"
);

2、找出对单一客户销售金额超过50000的员工的名字

select `name`
from `employee`
where `emp_id` in (
	select `emp_id`
	from `works_with`
	where `total_sales` > 50000
);

on delete

删除之后把联系的table设置为null

create table `branch`(
	`brach_id` int primary key,
    `branch_name` varchar (20),
    `manager_id` int ,
    foreign key(`manager_id`) references `employee`(`emp_id`) on delete set null
);

删除之后把联系的table对应元素也删除了

create table `works_with`(
	`brach_id` int primary key,
    `branch_name` varchar (20),
    `manager_id` int ,
    foreign key(`manager_id`) references `emp_id` on delete cascade,
	foreign key(`client_id`) references `emp_id` on delete cascade
);

猜你喜欢

转载自blog.csdn.net/qq_68591679/article/details/127698331