SQL语言1

 创建数据库 CREATE DATABASE

展示数据库 SHOW DATABASE

整数 INT 

有小数点的数 DECIMA(m, n) #m是有几位数,n是有几位小数

字符串 VARCHAR(n)

(Binary Large Object)图片 影片 BLOB

‘YYYY-MM-DD’日期  DATA

'YYYY-MM-DD HH:MM:SS' 记录时间 TIMESTAMP

数据库中加入表格

CREATE DATABASE `sql_tutorial`;
SHOW DATABASES;
USE `sql_tutorial`;

CREATE TABLE student(
  `student_id` INT PRIMARY KEY,
  `name` VARCHAR(20),
    `major`VARCHAR(20)
  --PRIMARY KEY(student)
);
 DESCRIBE `student`;--显示表格
DROP TABLE 'student'; --删除表格

ALTER TABLE `student` ADD gpa DECIMAL(3,2); --增加属性
ALTER TABLE `student` DROP COLUMN gpa;--删除属性

--存入数据
INSERT INTO `student` VALUES(1,'小白','历史');
INSERT INTO `student` ('name','major','student_id')VALUES('小白','历史',1);
SELECT * FROM 'student'--列出全部数据

--constraints 限制

CREATE TABLE student(
  `student_id` INT PRIMARY KEY,
  `name` VARCHAR(20) NOT NULL,--数据不能为空
    `major`VARCHAR(20) UNIQUE,--数据不能重复
  `major_1`VARCHAR(20) DEFAULT'历史',--新增预设值
  `name` VARCHAR(20) AUTO_INCREMENT,--自动增加
);

--删除表格
DROP TABLE `student`

SET SQL_SAFE_UPDATAS = 0; --关闭预设模式

--更改表格内容
UPDATA `student` SET `major` = `英语文学` WHERE `major` = `英语`;

UPDATA `student` SET `major` = `生化` WHERE `major` = `生物` OR `major` = `化学`;

UPDATA `student` SET `name`=`小惠`,`major` = `生化` WHERE `student` =1 ;

UPDATA `student` SET `name`=`小惠`;--name属性全改为小惠

--删除数据

DELETE FROM `student` WHERE `name`=`小惠` ;

DELETE FROM `student` WHERE `score`>60;

DELETE FROM `student` --删除整个表格

--取得资料,排序
SELECT `name`,`major` FROM `student`;
SELECT * FROM `student`;--取得所有数据
SELECT * FROM `student` ORDER BY `score` ASC; --若什么都没写则预设ASC,由低到高。DESC由高到低。asc(ascend )是升序,就是这个值按照从小到大进行排序;desc(descend)是降序,就是这个值按照从大到小进行排序。

SELECT * FROM `student` ORDER BY `score` ,`student_id`;--先根据score做排序,如果score相同,再根据student_id做排序。
SELECT * FROM `student` LIMIT 2;--回传前两笔资料。
SELECT * FROM `student` ORDER BY `score` LIMIT 2; --先按照score做排序,然后回传前两笔资料。
SELECT * FROM `student` WHERE`major`=`英语`OR`score`>=70;--回传主修是英语或者分数大于等于70
SELECT * FROM `student` WHERE`major` IN(`历史`,`英语`,`生物`);








大于 >

小于 <

大于等于 >=

等于=

不等于<>

-- 创建公司资料表格

 CREATE DATABASE `sql_tutorial`;

 SHOW DATABASES;

 USE `sql_tutorial`;

DROP TABLE `student`;

 SET SQL_SAFE_UPDATES = 0; --关闭预设自动更新

 --创建表格

CREATE TABLE `employee`(

 `emp_id` INT PRIMARY KEY,

 `name` VARCHAR(20),

 `brith_date` DATE,

 `sex` VARCHAR(1),

 `salary` INT,

 `branch_id` INT,

 `sup_id` INT

);



DROP TABLE `employee`;

describe TABLE employee;



 --创建部门表格

 CREATE TABLE `branch`(

 `branch_id` INT PRIMARY KEY,

 `branch_name` VARCHAR(20),

 `manager_id` INT,

 FOREIGN KEY (`manager_id`) REFERENCES `employee`(`emp_id`) ON DELETE SET NULL   --FOREIGN KEY表示外键;REFERENCES 表示外键接的表格名,再加外接的表格的primary key

 );

 

--对公司表格补上外键foreign key,

 ALTER TABLE `employee` 

 ADD FOREIGN KEY(`branch_id`) --加外键 branch_id属性

 REFERENCES `branch`(`branch_id`) --对应到branch表格的branch_id的属性

 ON DELETE SET NULL;

 

 ALTER TABLE `employee`

 ADD FOREIGN KEY(`sup_id`) --加外键sup_id

 REFERENCES `employee`(`emp_id`) --对应到branch表格的branch_id的属性

 ON DELETE SET NULL; 

 

--创建客户表格

CREATE TABLE `client`(

 `client_id` INT PRIMARY KEY,

 `client_name` VARCHAR(20),

 `phone` VARCHAR(20)

 );

  

--创建worh_with表格

 CREATE TABLE `work_with`(

 `emp_id` INT,

 `client_id` INT,

 `total_sales` INT,

 PRIMARY KEY ( `emp_id`, `client_id`),

 FOREIGN KEY (`emp_id`) REFERENCES `employee`(`emp_id`) ON DELETE CASCADE,

 FOREIGN KEY (`client_id`) REFERENCES `client`(`client_id`) ON DELETE CASCADE  

 );

  

 --填写表格数据

 --有foreign key时,对应的表没有相应资料时,直接输入会报错,要用NULL代替

 INSERT INTO `branch` VALUES(1,'研发',NULL);

 INSERT INTO `branch` VALUES(2,'行政',NULL);

 INSERT INTO `branch` VALUES(3,'查询',NULL); 

INSERT INTO `employee` VALUES(206,'小黄','1998-10-08','F',50000,1,NULL); 


--把原本branch的manager_id=NULL改回来

 UPDATE `branch`

 SET `manager_id`=206

 WHERE `branch_id`=1;

 UPDATE `branch`

 SET `manager_id`=207

 WHERE `branch_id`=2;

 UPDATE `branch`

 SET `manager_id`=208

 WHERE `branch_id`=3; 

--增加客户信息
 INSERT INTO `client` VALUES(400,'阿狗','1234567'); 

--增加work_with 信息
NSERT INTO `work_with` VALUES(206,400,70000);

--取得员工资料
SELECT * FROM`employee`;

--按薪水由低到高取得员工资料
SELECT * FROM `employee`OREDER BY`salary`;
--取得薪水前3高的员工
SELECT * FROM `employee`OREDER BY`salary`DESC LIMIT3;
--取得所有员工的名字
SELECT `name` FROM `employee`;
--取得所有员工的性别
SELECT DISTINCT `sex`FROM`employee`--distinct显示不重复的。
--取得客户资料
SELECT * FROM`client`;
--取得员工人数
SELECT COUNT(`sup_id`)FROM`employee`;--输出是员工数量


--取得所有出生在1996-10-01之后出生的女性员工

SELECT COUNT(*) FROM `employee`

WHERE `brith_date` > '1996-10-01' AND `sex`='F'; 


--取得所有员工的平均薪水

SELECT AVG(`salary`) FROM `employee`;

--取得所有员工的总和薪水 sum

SELECT SUM(`salary`) FROM `employee`;

--取得最高/低员工的薪水 max,min

SELECT MAX(`salary`) FROM `employee`; 

--widcards 万用字元 %代表多个字元;_代表一个字元
--1、取得电话号码尾数是335的客户
SELECT * FROM `client` WHERE `phone` LIKE`%335`;
--2、取得电话号码开头是245的客户
SELECT * FROM `client` WHERE `phone` LIKE`245%`;
--3、取得电话号码中间是245的客户
SELECT * FROM `client` WHERE `phone` LIKE`%245%`;
--4、取得姓艾的客户
SELECT * FROM `client` WHERE `client_name` LIKE`艾%`;
--取得生日在10月的员工

SELECT * FROM `employee`WHERE `brith_date` like '_____10%'; --五个_

--union 连集 可以合并搜寻的结果,合并的属性资料形态要一样,不同表格的属性数目要一样,不能用表格1的2个属性去和表格2的1个属性合并

--员工名字和客户名和部门名字字合并 

SELECT `name` FROM `employee` UNION SELECT `client_name` FROM `client`;

SELECT `name` FROM `employee` UNION SELECT `client_name` FROM `client`UNION SELECT `branch_name` FROM `branch`;

--员工id+员工名字UNION 客户id+客户名字
SELECT `emp_id`,`name` FROM`employee`UNION SELECT `client_id`,'client_name' FROM`client`;
--员工id+员工名字UNION 客户id+客户名字,并且改名字
SELECT `emp_id`AS`total_id`,`name`AS`total_name` FROM`employee`UNION SELECT `client_id`,'client_name' FROM`client`;

--员工薪水union销售金额
SELECT `salary` FROM`employee`UNION SELECT `total_sales` FROM`works_with`;

--join 链接 在join左边是左边表格,在join右边是右边表格,右边表格条件成立才回传资料,左边表格全部资料都会回传,没有对应右边的,则显示NULL
--right join则相反
INSERT INTO `branch`VALUES(4,`偷懒`,NULL);--新增一笔资料
--取得所有部门经理的名字
SELECT `emp_id`,`name`,`branch_name` FROM `employee` JOIN `branch` ON `emp_id`=`manager_id`;--在属性前面加上表格名称。`employee`.`emp_id`,防止多个表格存在相同属性


--subquery 子查询
--1、找出研发部门的经理名字
SELECT `name` FROM`employee` WHERE`emp_id`=(
SELECT `manager_id`FROM `branch` WHERE `branch_name`=`研发`);
--找出一位客户销售金额超过50000的员工名字:当子查询回传结果不止一个,要用in不用=

SELECT `name` FROM `employee`

WHERE `emp_id` IN (

	SELECT `emp_id` FROM `work_with`

    WHERE `total_sales` > 50000

  );

--on delete删除某一行
--on delete set null;(对应不到,设置为null) 如果删除某个资料1,其他表格的资料2用外键对应的该资料1,在其他表格中把资料2设为null,当资料2为primary key时,不能设置为null,只能为on delete cascade
--on delete cascade; (对应不到,把整笔资料删掉)如果删除某个资料1,其他表格的资料2用外键对应的该资料1,在其他表格中把资料2也删掉。


--创建worh_with表格

 CREATE TABLE `work_with`(

 `emp_id` INT,

 `client_id` INT,

 `total_sales` INT,

 PRIMARY KEY ( `emp_id`, `client_id`),

 FOREIGN KEY (`emp_id`) REFERENCES `employee`(`emp_id`) ON DELETE CASCADE,

 FOREIGN KEY (`client_id`) REFERENCES `client`(`client_id`) ON DELETE CASCADE --primary ley同时又是foreign key不能设置为null 

 );

 --创建部门表格

 CREATE TABLE `branch`(

 `branch_id` INT PRIMARY KEY,

 `branch_name` VARCHAR(20),

 `manager_id` INT,

 FOREIGN KEY (`manager_id`) REFERENCES `employee`(`emp_id`) ON DELETE SET NULL   #FOREIGN KEY表示外键;REFERENCES 表示外键接的表格名,再加外接的表格的primary key

 );



 DELETE FROM `employee`

 WHERE `emp_id`= 207;

 

SELECT * FROM `work_with`;

SELECT * FROM `branch`;



UPDATE `branch`

SET `manager_id`=207

WHERE `branch_id`=2; 

INSERT INTO `employee` VALUES(207,'小绿','1995-10-09','M',51000,2,206);

INSERT INTO `work_with` VALUES(207,400,'56000');






  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值