【MYSQL】基础语句

实现

基础知识

DDL

DDL(Data Definition Language,数据定义语⾔) ⽤来创建或者删除存储数据⽤的数据库
以及数据库中的表等对象。DDL 包含以下⼏种指令。

  • CREATE : 创建数据库和表等对象
  • DROP : 删除数据库和表等对象
  • ALTER : 修改数据库和表等对象的结构

DML

DML(Data Manipulation Language,数据操纵语⾔) ⽤来查询或者变更表中的记录。DML
包含以下⼏种指令。

  • SELECT :查询表中的数据
  • INSERT :向表中插⼊新数据
  • UPDATE :更新表中的数据
  • DELETE :删除表中的数据

DCL

DCL(Data Control Language,数据控制语⾔) ⽤来确认或者取消对数据库中的数
的变更。除此之外,还可以对 RDBMS 的⽤户是否有权限操作数据库中的对象(数据库
等)进⾏设定。DCL 包含以下⼏种指令。

  • COMMIT : 确认对数据库中的数据进⾏的变更
  • ROLLBACK : 取消对数据库中的数据进⾏的变更
  • GRANT : 赋予⽤户操作权限
  • REVOKE : 取消⽤户的操作权限
    实际使⽤的 SQL 语句当中有 90% 属于 DML,本书同样会以 DML 为中⼼进⾏讲解

数据类型

四种最基本的数据类型

  • INTEGER 型
    ⽤来指定存储整数的列的数据类型(数字型),不能存储⼩数。
  • CHAR 型
    ⽤来存储定⻓字符串,当列中存储的字符串⻓度达不到最⼤⻓度的时候,使⽤半⻆
    补⾜,由于会浪费存储空间,所以⼀般不使⽤。
  • VARCHAR 型
    ⽤来存储可变⻓度字符串,定⻓字符串在字符数未达到最⼤⻓度时会⽤半⻆空格补
    变⻓字符串不同,即使字符数未达到最⼤⻓度,也不会⽤半⻆空格补⾜。
  • DATE 型
    ⽤来指定存储⽇期(年⽉⽇)的列的数据类型(⽇期型)。

基础语句

(习题链接)https://sqlzoo.net/wiki/SELECT_from_WORLD_Tutorial
幕布链接 https://share.mubu.com/doc/3G-8BRe-jtb

查询版本

在这里插入图片描述

where

在这里插入图片描述

where in

在这里插入图片描述

WHERE LIKE

在这里插入图片描述

“Luxembourg 盧森堡”中有一個x字母,還有一個國家的名字中有x。列出這兩個國家。
找出所有國家,其名字包括字母x。
在这里插入图片描述
在这里插入图片描述

where col_1 like '_[^JM]%'筛选出的是,第二个字符为非J且非M的数据。

在这里插入图片描述

“India 印度”和”Angola 安哥拉”的第二個字母都是 n。
你可以用底線符_當作單一個字母的萬用字元。
找出所有國家,其名字以t作第二個字母。

SELECT name FROM world
 WHERE name LIKE '_t%' -- 占位符
ORDER BY name

在这里插入图片描述

where or

在这里插入图片描述

顯示1980年物理學(physics)獲獎者,及1984年化學獎(chemistry)獲得者。

select yr,subject,winner from nobel
where (subject='Physics' AND yr='1980')
OR
(subject='Chemistry' AND yr='1984')

在这里插入图片描述

脱字符

在这里插入图片描述

where and 关联

在这里插入图片描述

round

在这里插入图片描述
在这里插入图片描述

BETWEEN

哪些國家是不是太小,又不是太大?
BETWEEN 允許範圍檢查 - 注意,這是包含性的。 此例子顯示面積為 250,000 及 300,000 之間的國家名稱和該國面積。

修改此例子,以顯示面積為 200,000 及 250,000 之間的國家名稱和該國面積。
在这里插入图片描述

顯示1980年至1989年(包含首尾)的文學獎(Literature)獲獎者所有細節(年,主題,獲獎者)。

在这里插入图片描述

length

在这里插入图片描述

left

在这里插入图片描述

LIKE 占位符

在这里插入图片描述

concat

在这里插入图片描述

select name from world
where capital = concat(name,' city');

replace

“Monaco-Ville"是合併國家名字 “Monaco” 和延伸詞”-Ville".
顯示國家名字,及其延伸詞,如首都是國家名字的延伸。
可以使用SQL函數 REPLACE 或 MID.

在这里插入图片描述

SELECT name, REPLACE(capital,name,'')
FROM world 
WHERE capital LIKE concat(name,'_%')

起名

SELECT 日期 AS 年月 FROM `销售表`;

在这里插入图片描述

select 日期 as 年月日 from 销售表

case

select …,case+end,…from world
在这里插入图片描述
输出结果:
在这里插入图片描述

case 练习

把地区是Europe and Asia作为Eurasia ,North America or South America or
Caribbean作为America ,只显示a开头或者b开头的国家

在这里插入图片描述

将各大洲摆放正确…

大洋洲成为大洋洲 欧亚大陆和土耳其的国家前往欧洲/亚洲 以’B’开头的加勒比海岛屿前往北美,其他加勒比海岛屿前往南美
输出: 显示所有国家的名称,原始大陆和新大陆。

SELECT name,continent,
CASE WHEN continent IN ('Eurasia', 'Turkey')
     THEN 'Europe/Asia'

     WHEN continent = 'Oceania'
     THEN 'Australasia'

     WHEN continent = 'Caribbean'
     THEN
          CASE
          WHEN name LIKE 'B%'
          THEN 'North America'
          ELSE 'South America'
          END
     ELSE continent
     END
FROM world
ORDER BY name ASC;
select name, continent, case
	when continent='oceania' then 'Australasia'
	when continent in ('eurasia', 'turkey') then 'Europe/Asia'
	when continent='caribbean' then case 
		when name like 'B%' 
		then 'North America'
		else 'South America'
		end
	else continent
	end
from world
order by name asc

总结:
1:这篇里面主要涉及到一个CASE WHEN THEN ELSE 的方法
CASE的话,类似于一个判断语句
他可以对字段的值进行判断,并返回你设定的值
内部逻辑代码有WHEN,THEN,ELSE,END

去重

SELECT DISTINCT 商品编码 FROM `销售表`;

在这里插入图片描述

表格合并

SELECT CONCAT(店号,店名) AS 店铺 FROM `店铺表`;

习题

习题一

在这里插入图片描述

create database shop
use shop
CREATE TABLE addressbook (
  regist_no INTEGER NOT NULL,
	name VARCHAR(128) NOT NULL,
	address VARCHAR(256) NOT NULL,
  tel_no CHAR(10),
	mail_address CHAR(20),
	PRIMARY KEY (regist_no)
) ;

在这里插入图片描述
在这里插入图片描述

习题二

假设在创建练习一中的 Addressbook 表时忘记添加如下⼀列 postal_code (邮政编码)
了,请把此列添加到 Addressbook 表中。
列名 : postal_code
数据类型 :定⻓字符串类型(⻓度为 8)
约束 :不能为 NULL

ALTER TABLE addressbook ADD COLUMN postal_code CHAR(8) NOT NULL;

在这里插入图片描述

习题三

编写 SQL 语句来删除 Addressbook 表。

TRUNCATE TABLE addressbook;
SHOW TABLES;

习题四

编写 SQL 语句来恢复删除掉的 Addressbook 表。

use shop
CREATE TABLE addressbook
(regist_no INTEGER NOT NULL,
 name VARCHAR(128) NOT NULL,
 address VARCHAR(256) NOT NULL,
 tel_no CHAR(10),
 mail_address CHAR(20),
 postal_code CHAR(8) NOT NULL,
 PRIMARY KEY (regist_no));
 SHOW TABLES;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值