0

0

MySQl数据库必须知道的sql语句

怪我咯

怪我咯

发布时间:2017-04-30 10:27:55

|

1272人浏览过

|

来源于php中文网

原创

本文给大家分享了一篇关于mysql数据库必会sql语句加强版内容,非常不错,具有参考借鉴价值,需要的朋友参考下吧

这一篇属于加强版,问题和sql语句如下。

创建users表,设置id,name,gender,sal字段,其中id为主键 

drop table if exists users; 
create table if not exists users( 
  id int(5) primary key auto_increment, 
  name varchar(10) unique not null,   
  gender varchar(1) not null, 
  sal int(5) not null 
); 
insert into users(name,gender,sal) values('AA','男',1000); 
insert into users(name,gender,sal) values('BB','女',1200);

-------------------------------------------------------------------------------------- 

一对一:AA的身份号是多少 

drop table if exists users; 
create table if not exists users( 
  id int(5) primary key auto_increment, 
  name varchar(10) unique not null,   
  gender varchar(1) not null, 
  sal int(5) not null 
); 
insert into users(name,gender,sal) values('AA','男',1000); 
insert into users(name,gender,sal) values('BB','女',1200); 
drop table if exists cards; 
create table if not exists cards( 
  id int(5) primary key auto_increment, 
  num int(3) not null unique, 
  loc varchar(10) not null, 
  uid int(5) not null unique, 
  constraint uid_fk foreign key(uid) references users(id) 
); 
insert into cards(num,loc,uid) values(111,'北京',1); 
insert into cards(num,loc,uid) values(222,'上海',2);

【注:inner join表示内连接】 

select u.name "姓名",c.num "身份证号" 
from users u inner join cards c 
on u.id = c.uid 
where u.name = 'AA'; 
-- 
select u.name "姓名",c.num "身份证号" 
from users u inner join cards c 
on u.id = c.uid 
where name = 'AA';

--------------------------------------------- 

一对多:查询"开发部"有哪些员工 

创建groups表 

drop table if exists groups; 
create table if not exists groups( 
  id int(5) primary key auto_increment, 
  name varchar(10) not null 
); 
insert into groups(name) values('开发部'); 
insert into groups(name) values('销售部');

创建emps表 

drop table if exists emps; 
create table if not exists emps( 
  id int(5) primary key auto_increment, 
  name varchar(10) not null, 
  gid int(5) not null, 
  constraint gid_fk foreign key(gid) references groups(id) 
); 
insert into emps(name,gid) values('哈哈',1); 
insert into emps(name,gid) values('呵呵',1); 
insert into emps(name,gid) values('嘻嘻',2); 
insert into emps(name,gid) values('笨笨',2);

查询"开发部"有哪些员工 

select g.name "部门",e.name "员工" 
from groups g inner join emps e 
on g.id = e.gid 
where g.name = '开发部'; 
-- 
select g.name "部门",e.name "员工" 
from groups g inner join emps e 
on g.id = e.gid 
where g.name = '开发部';

------------------------------------------------------ 

多对多:查询"赵"教过哪些学生 

创建students表 

drop table if exists students; 
create table if not exists students( 
  id int(5) primary key auto_increment, 
  name varchar(10) not null 
); 
insert into students(name) values('哈哈'); 
insert into students(name) values('嘻嘻');

创建teachers表 

drop table if exists teachers; 
create table if not exists teachers( 
  id int(5) primary key auto_increment, 
  name varchar(10) not null 
); 
insert into teachers(name) values('赵'); 
insert into teachers(name) values('刘');

创建middles表   primary key(sid,tid)  表示联合主键,这两个字段的整体要唯一 

drop table if exists middles; 
create table if not exists middles( 
  sid int(5), 
  constraint sid_fk foreign key(sid) references students(id), 
  tid int(5), 
  constraint tid_fk foreign key(tid) references teachers(id), 
  primary key(sid,tid)  
); 
insert into middles(sid,tid) values(1,1); 
insert into middles(sid,tid) values(1,2); 
insert into middles(sid,tid) values(2,1); 
insert into middles(sid,tid) values(2,2);

查询"赵"教过哪些学生 

select t.name "老师",s.name "学生" 
from students s inner join middles m inner join teachers t 
on (s.id=m.sid) and (m.tid=t.id) 
where t.name = '赵'; 
-- 
select t.name "老师",s.name "学生" 
from students s inner join middles m inner join teachers t  
on (s.id=m.sid) and (t.id=m.tid) 
where t.name = "赵";

-------------------------------------------------------------------------------------------------------- 

将5000元(含)以上的员工标识为"高薪",否则标识为"起薪" 

将薪水为NULL的员工标识为"无薪" 

将5000元(含)以上的员工标识为"高薪",否则标识为"起薪" 

将7000元的员工标识为"高薪",6000元的员工标识为"中薪",5000元则标识为"起薪",否则标识为"试用薪"

--------------------------------------------------------------------------------------------------------- 

内连接(等值连接):查询客户姓名,订单编号,订单价格 

Psky企业网站系统1.1.2
Psky企业网站系统1.1.2

Psky企业网站是基于PHP+MYSQL开发的一款企业官网宣传网站,支持PC、wap浏览。 主要功能包括导航管理、轮播新闻、单位动态、通知通报、单位简介、后台管理等。运行环境下载安装PHPStudy(小皮)即可。系统采用PHP语言(版本:7.3.4nts)和MYSQL(版本:5.7.26)数据库进行开发,安装PHPStudy(小皮)集成环境进行测试通过。安装步骤:1、导入SQL文件到PHPmyad

下载

【注:customers c inner join orders o使用了别名,以后o就代表orders】 

select c.name "客户姓名",o.isbn "订单编号",o.price "订单价格" 
from customers c inner join orders o 
on c.id = o.customers_id; 
-- 
select c.name "客户姓名",o.isbn "订单编号",o.price "订单价格" 
from customers c inner join orsers o 
on c.id = o.customers_id;

on+两张表连接的条件.一张表的主键,一张表的外键 

内连接:只能查询出二张表中根据连接条件都存在的记录,有点类似于数学中交集 

---------------------------------------------------- 

外连接:按客户分组,查询每个客户的姓名和订单数 

外连接:既可以根据连接条件查询出二张表中都存在的记录,也能根据一方,强行将另一方就算不满兄条件的记录也能查询出来 

外连接可以细分为:

<左外连接 : 以左侧为参照,left outer join表示 
select c.name,count(o.isbn) 
from customers c left outer join orders o 
on c.id = o.customers_id 
group by c.name; 
-- 
>右外连接 : 以右侧为参照,right outer join表示 
select c.name,count(o.isbn) 
from orders o right outer join customers c 
on c.id = o.customers_id 
group by c.name;

left outer join表示左边的内容都会显现出来,例如customers c left out join 表示会把customers中的某列所有内容都找出来  

------------------------------------------------------ 
自连接:求出AA的老板是EE。把自己想象成两张表。左右各一张 

select users.ename,bosss.ename 
from emps users inner join emps bosss 
on users.mgr = bosss.empno; 
select users.ename,bosss.ename 
from emps users left outer join emps bosss 
on users.mgr = bosss.empno;

----------------------------------------------------------------------------------------------- 
演示MySQL中的函数(查询手册)  

日期时间函数: 

select addtime('2016-8-7 23:23:23','1:1:1');  时间相加 
select current_date(); 
select current_time(); 
select now(); 
select year( now() ); 
select month( now() ); 
select day( now() ); 
select datediff('2016-12-31',now());

字符串函数:

select charset('哈哈'); 
select concat('你好','哈哈','吗'); 
select instr('www.baidu.com','baidu'); 
select substring('www.baidu.com',5,3);

数学函数: 

select bin(10); 
select floor(3.14);//比3.14小的最大整数---正3 
select floor(-3.14);//比-3.14小的最大整数---负4 
select ceiling(3.14);//比3.14大的最小整数---正4 
select ceiling(-3.14);//比-3.14大的最小整数---负3,一定是整数值 
select format(3.1415926,3);保留小数点后3位,四舍五入 
select mod(10,3);//取余数 
select rand();//

加密函数: 

select md5('123456'); 

返回32位16进制数 e10adc3949ba59abbe56e057f20f883e  

演示MySQL中流程控制语句 

use json; 
drop table if exists users; 
create table if not exists users( 
  id int(5) primary key auto_increment, 
  name varchar(10) not null unique, 
  sal int(5) 
); 
insert into users(name,sal) values('哈哈',3000); 
insert into users(name,sal) values('呵呵',4000); 
insert into users(name,sal) values('嘻嘻',5000); 
insert into users(name,sal) values('笨笨',6000); 
insert into users(name,sal) values('明明',7000); 
insert into users(name,sal) values('丝丝',8000); 
insert into users(name,sal) values('君君',9000); 
insert into users(name,sal) values('赵赵',10000); 
insert into users(name,sal) values('无名',NULL);

将5000元(含)以上的员工标识为"高薪",否则标识为"起薪"

select name "姓名",sal "薪水", 
    if(sal>=5000,"高薪","起薪") "描述" 
from users;

将薪水为NULL的员工标识为"无薪"

select name "姓名",ifnull(sal,"无薪") "薪水" 
from users;

将5000元(含)以上的员工标识为"高薪",否则标识为"起薪"

select name "姓名",sal "薪水", 
    case when sal>=5000 then "高薪" 
    else "起薪" end "描述" 
from users;

将7000元的员工标识为"高薪",6000元的员工标识为"中薪",5000元则标识为"起薪",否则标识为"试用薪"

select name "姓名",sal "薪水", 
    case sal 
      when 3000 then "低薪" 
      when 4000 then "起薪" 
      when 5000 then "试用薪" 
      when 6000 then "中薪" 
      when 7000 then "较好薪" 
      when 8000 then "不错薪" 
      when 9000 then "高薪" 
      else "重薪" 
    end "描述" 
from users;

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

27

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

7

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

29

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

3

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

5

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

34

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

11

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

40

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

7

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.9万人学习

SQL 教程
SQL 教程

共61课时 | 3.6万人学习

C 教程
C 教程

共75课时 | 4.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号