数据库的一些基本语法二

-- 给出诺贝尔奖获奖总人数
SELECT COUNT(DISTINCT winner) FROM nobel;

-- 给出诺贝尔物理奖获奖次数
SELECT COUNT(SUBJECT) FROM nobel WHERE SUBJECT='Physics';

-- 显示每个奖项获奖总次数
SELECT SUBJECT,COUNT(*) FROM nobel GROUP BY SUBJECT;
 
-- 显示每个奖项第一次获得该奖的年份
SELECT SUBJECT,yr FROM nobel GROUP BY SUBJECT ORDER BY yr;
SELECT SUBJECT,MIN(yr)FROM nobel GROUP BY SUBJECT;


-- 显示每个奖项在2000年获奖的人数
SELECT SUBJECT,COUNT(CASE WHEN yr>='2000-01-01' AND yr<='2000-12-31'THEN 1 END)AS '总计' FROM nobel GROUP BY SUBJECT ;
SELECT SUBJECT,COUNT(SUBJECT) FROM nobel WHERE yr=2000 GROUP BY SUBJECT;


-- 显示每个奖项不同获奖者人数
SELECT SUBJECT,COUNT(DISTINCT winner) FROM nobel GROUP BY SUBJECT;


-- 显示每个奖项有多少年获奖
SELECT COUNT(DISTINCT yr),SUBJECT FROM nobel GROUP BY SUBJECT;

-- 显示当年有三个物理奖的年份
SELECT yr FROM nobel GROUP BY yr HAVING COUNT(CASE WHEN SUBJECT='Physics'THEN 1 END)>=3;
SELECT yr FROM nobel WHERE SUBJECT='Physics' GROUP BY yr HAVING COUNT(SUBJECT)=3;


-- 显示得奖超过一次的获奖者
SELECT winner,COUNT(*) FROM nobel GROUP BY winner HAVING COUNT(*)>1; 

-- 显示得到多个奖项的获奖者
SELECT winner FROM nobel GROUP BY winner HAVING COUNT(DISTINCT SUBJECT)>1;

-- 显示2000年及以后,有三个人获得同一奖项的年份及奖项 GROUP BY yr,SUBJECT 指的是多分组
SELECT yr,SUBJECT FROM nobel WHERE yr>=2000 GROUP BY yr,SUBJECT HAVING COUNT(DISTINCT winner)=3;


-- not null 表示非空,该列必须有值不能为空
 -- default 表示不输入值的时候 默认为该值
DROP TABLE t_man;
CREATE TABLE t_man(
	id INT PRIMARY KEY AUTO_INCREMENT,
	manName VARCHAR(20) NOT NULL,
	gender VARCHAR(10)DEFAULT'男'
);
INSERT INTO t_man (manName,gender) VALUES('张三','男');

INSERT INTO t_man (manName,gender) VALUES('张三','男');

DROP TABLE t_room;
CREATE TABLE t_room(
	id INT PRIMARY KEY AUTO_INCREMENT,
	address VARCHAR(50),
	price INT,
	manID INT
);
-- 为房间添加外键约束
ALTER TABLE t_room ADD CONSTRAINT fk_1 FOREIGN KEY(manID) REFERENCES t_man(id);
INSERT INTO t_room (address,price,manID)VALUES ('人民南路',200000,1);
INSERT INTO t_room (address,price,manID)VALUES ('人民南路',200000,2);

-- 要删除主表的键,必须先删除从表和主表级联的值
DELETE FROM t_room WHERE manID=1;
DELETE FROM t_man WHERE id=1;

-- 删除主表的键,另一种方法是把从表的外键值设置为空
UPDATE t_room SET manID =NULL WHERE manID=2;
DELETE FROM t_man WHERE id =2;

-- 两个表之间如果存在外键约束,删除主表记录的时候,由于有外键约束存在,无法删除又从表记录引用的主表记录
-- 删除方式一:级联删除,讲主表记录对应的从表记录先做删除,在删除主表记录
-- 删除方式二:外键设空,讲主表记录的对应的从表记录的外键设置为空,在删除主表记录

-- 外键和外键约束
-- 没有建立外键约束不等于没有外键
-- 外键是值从表的某列和主表的某列存在依附关系
-- 外键约束是指在外键关联的主键上强制加上一个约束,如果违反该约束,则不允许该条数据的修改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
神州通用数据库(CZDB)是一种高性能、高可靠的分布式关系型数据库系统。其基本语法与传统的SQL语法相似,包括以下几个方面: 1. 数据库操作: - 创建数据库:CREATE DATABASE database_name; - 删除数据库:DROP DATABASE database_name; - 使用数据库:USE database_name; 2. 表操作: - 创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, ...); - 删除表:DROP TABLE table_name; - 修改表结构:ALTER TABLE table_name ADD column datatype; 3. 数据操作: - 插入数据:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); - 更新数据:UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition; - 删除数据:DELETE FROM table_name WHERE condition; - 查询数据:SELECT column1, column2, ... FROM table_name WHERE condition; 4. 数据查询: - SELECT语句用于从表中查询数据,可以使用以下关键字和子句进行筛选、排序、分组等操作: - WHERE:条件筛选 - ORDER BY:排序 - GROUP BY:分组 - HAVING:对分组结果进行筛选 - LIMIT:限制返回结果的数量 5. JOIN操作: - INNER JOIN:返回两个表中符合条件的记录 - LEFT JOIN:返回左表中所有记录和右表中符合条件的记录 - RIGHT JOIN:返回右表中所有记录和左表中符合条件的记录 - FULL JOIN:返回左右表中所有记录 6. 索引操作: - 创建索引:CREATE INDEX index_name ON table_name (column1, column2, ...); - 删除索引:DROP INDEX index_name; - 查询索引:SHOW INDEX FROM table_name; 7. 事务处理: - 开启事务:START TRANSACTION; - 提交事务:COMMIT; - 回滚事务:ROLLBACK;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值