首页 数据库 mysql教程 Mysql研究之SQL语言的设计与编撰完全解析

Mysql研究之SQL语言的设计与编撰完全解析

Jun 07, 2016 pm 04:27 PM
mysql sql 研究 解析 设计 语言

Mysql研究之SQL语言的设计与编写完全解析 一、 SQL 语句分类 数据定义语言( DDL ): 用于定义和管理数据对象,包括数据库、数据表、视图、索引等。例如: CREATE 、 DROP 、 ALTER 等语句。 数据操作语言( DML ):【和表中的数据记录有关的语言】 用于操

Mysql研究之SQL语言的设计与编写完全解析

一、SQL语句分类

数据定义语言(DDL):

用于定义和管理数据对象,包括数据库、数据表、视图、索引等。例如:CREATEDROPALTER等语句。

数据操作语言(DML):【和表中的数据记录有关的语言】

用于操作数据库对象中所包含的数据。例如:INSERTUPDATEDELETE语句。

数据查询语言(DQL):

用于查询数据库对象中所包含的数据,能够进行单表查询、连接查询、嵌套查询,以及集合查询等各种复杂程度不同的数据库查询,并将数据返回到客户机中显示。例如:SELECT语句(占60%)。

数据控制语言(DCL):

是用来管理数据库的语言,包含管理权限及数据更改。例如:GRANTREVOKECOMMITROLLBACK等语句。

二、SQL语句应用案例

1DDL【可以按照以下格式写入一个文件,然后再粘贴到MySQL数据库中】

createtable if not exists cats (

idint not null auto_increment,

pidint not null default ’0′,

namevarchar(30) not null default ”,

desntext not null default ”,

primarykey(id),

indexname(name,pid)

);

createtable if not exists products(

idint not null auto_increment,

cidint not null default 0,

namevarchar(60) not null default ”,

pricedouble (7,2) not null default 0.00,

numint not null default 0,

desntext,

ptimeint not null default 0,

primarykey(id),

keypname(name,price)

);

2DML

ainsert,插入表数据

insertinto 表名([字段列表])values(值列表),(值列表2),(值列表3),…,(值列表n);

特点:

1.如果在表名后没有给出字段列表,则值列表必须填充所有字段的值,必须按表中默认的顺序插入

2.所有需要写字段名的地方都不加单引号或双引号,但是建议所有值都要以字符形式使用

3.建议在插入数据时,最好给出字段列表,则值只要和字段列表一一对应即可,可以不按表中字段的顺序

?

bupdate表名 set字段=’‘[,字段2='2',...,字段n='n'][条件]#条件指定需要更改的记录

e.g. updatecats set pid=’3′ where id=’1′;

updatecats set pid=’99′ where id >= ’1′ && id <= ’3′;

cdeletefrom 表名 [条件]

deletefrom cats; #清空数据表

truncatecats; #也可以清空数据表,效率更高,truncate截断

?

dwhere条件

无论更新、删除、查找,只要写对条件就能准确找到要管理的一条或多条数据

【都可以使用各种运算符号,可以把字段当作一个变量来使用】

3DQLselect

SELECT[ALL | DISTINCT]

{*|table.*|[table.]field1[asalias1][,[table.]field2[as alias2]][.....]}

FROM 表名

[WHERE...]

[GROUPBY...]

[HAVING...]

[ORDERBY ...]

[LIMITcount]

使用SELECT查询语言,目的是可以按用户的想法将数据查出来,将结果返回!

SELECT[ALL | DISTINCT] #distinct 明显的,清楚的,有区别的

{*|table.*|[table.]field1[asalias1][,[table.]field2[as alias2]][.....]} #alias 别名,化名

FROM 表名

[WHERE...]

[GROUPBY...]

[HAVING...]

[ORDERBY ...]

[LIMITcount]

使用SELECT查询语言,目的是可以按用户的想法将数据查出来,将结果返回!

?

1、字段要列出要查询的字段

e.g. selectname,price from products;

selectprice,name from products;

select* from products;

selectproducts.* from products; #单表其实不需要使用表名

?

2、可以为每个字段起个别名【后面会用到(关键字,多表查询)】【表也可起别名(多表查询)】

e.g. selectname as bookname,price as bookprice from products;#使用别名;也可不加as;注意别名中有空格时,需要加单引号;

?

3、使用distinct作用与整个记录,取消重复的数据,只返回一个,而不是单独的一列

e.g. selectdistinct price ‘book price’ from products;

?

4、在SQL语句中使用表达式的列(可以使用算术运算符,条件运算符,逻辑运算符

游戏编程网www.cgzhw.com有详细的说明,这里就不再重复了。

5WHERE可以在SELECT/UPDATE/DELETE

a)可使用的逻辑运算符号(将多个条件组合)

&&/AND ||/OR !/NOT

b)可使用的比较运算符号

=#判断是否相等,与程序中的==作用相同

<=>#判断是否相等,与=一致,但可以用于与NULL比较

!=/ <> #不等号

?

<

<=

>

>=

c)程序中没有的运算符

ISNULL #‘<=>NULL’ 相等

ISNOT NULL

?

BETWEENAND

e.g. select* from products where id between 10 and 20;

“select* from products where id >= 10 && id <= 20;”作用相同

?

NOTBETWEEN AND

?

IN

e.g. select* from products where id in(5,10,15,20);

updateproducts set num = 77 where id in(5,10,15,20);

deletefrom products where id in(5,10);

?

d)模糊查询

LIKE _(任意一个字符)和%0个或多个任意字符)两个通配符号

e.g. select* from products where name like ‘______’; #查找任意名字为6个字符的数据

select* from products where name like ‘%java%’; #查询名字中包含有java的数据

?

NOTLIKE

e.g. select* from products where name not like ‘%java%’; #查询名字中不包含java字样的数据。

?

REGEXP/RLIKE【正则表达式】 #RegExp 正则表达式

e.g. select* from products where name regexp ‘^java’; #查找所有以java开头的数据

select* from products where name regexp ‘s$’; #查找所有以s结尾的数据

?

6、多表查询(连接查询),比较常用 #ambiguous

e.g. selectcats.name,products.name from cats,products;

selectc.name cname,c.desn cdesn,p.name pname,p.price,p.desn pdesn,p.numfrom carts c,products as p;#A表中的记录与B表中的记录依次匹配,得到A*B种结果【笛卡尔乘积】,该结果是没有意义的。

selectc.name cname,c.desn cdesn,p.name pname,p.price,p.desn pdesn,p.numfrom carts c,products as p where c.id=p.cid;

selectc.name cname,c.desn cdesn,p.name pname,p.price,p.desn pdesn,p.numfrom carts c,products as p where c.id=p.cid and c.id=3;

selecta.id aid,a.name aname,b.id bid,b.name bname from cats a,catsb; #将单表分为多表,进行查询

selecta.id aid,a.name aname,b.id bid,b.name bname from cats a,cats b wherea.pid = b.id;

?

7、嵌套查询子查询

e.g. select* from products where cid in(select id from carts where name regexp’^j’) ;

select* from products where cid in(select id from carts where name like’j%’); #作用相同

?

8orderby 字段 [asc正序]desc倒序

e.g. select* from order by name;

select* from order by price; #按价格非递减排序

select* from order by price desc; #非递增排序

select* from where cid > 5 order by price desc; #where结合使用

?

9limitcount【限制显示个数】

e.g. select* from limit 7;

select* from order by id desc limit 7;

select* from where id < 10 order by id desc limit 7;

select* from where id > 14 order by id asc limit 0,1; #limit0,1表示从第0个开始取,取1

?

10groupby 字段【分组】

常用函数:

count() #一个字段的总数

sum()

avg()#平均值

max()

min()

e.g. selectcount(*),sum(price),avg(price),max(price),min(price) from products;

selectcid,count(price),sum(price),avg(price),max(price),min (price) fromproducts group by cid;

selectcid,count(price),sum(price),avg(price),max(price),min (price) fromproducts group by cid having avg(price) > 50; #having条件,与where类似

#having必须与gropby结合才能使用

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1422
52
Laravel 教程
1316
25
PHP教程
1267
29
C# 教程
1239
24
laravel入门实例 laravel入门实例 Apr 18, 2025 pm 12:45 PM

Laravel 是一款 PHP 框架,用于轻松构建 Web 应用程序。它提供一系列强大的功能,包括:安装: 使用 Composer 全局安装 Laravel CLI,并在项目目录中创建应用程序。路由: 在 routes/web.php 中定义 URL 和处理函数之间的关系。视图: 在 resources/views 中创建视图以呈现应用程序的界面。数据库集成: 提供与 MySQL 等数据库的开箱即用集成,并使用迁移来创建和修改表。模型和控制器: 模型表示数据库实体,控制器处理 HTTP 请求。

MySQL和PhpMyAdmin:核心功能和功能 MySQL和PhpMyAdmin:核心功能和功能 Apr 22, 2025 am 12:12 AM

MySQL和phpMyAdmin是强大的数据库管理工具。1)MySQL用于创建数据库和表、执行DML和SQL查询。2)phpMyAdmin提供直观界面进行数据库管理、表结构管理、数据操作和用户权限管理。

MySQL与其他编程语言:一种比较 MySQL与其他编程语言:一种比较 Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。 MySQL以其高性能、可扩展性和跨平台支持着称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

解决数据库连接问题:使用minii/db库的实际案例 解决数据库连接问题:使用minii/db库的实际案例 Apr 18, 2025 am 07:09 AM

在开发一个小型应用时,我遇到了一个棘手的问题:需要快速集成一个轻量级的数据库操作库。尝试了多个库后,我发现它们要么功能过多,要么兼容性不佳。最终,我找到了minii/db,这是一个基于Yii2的简化版本,完美地解决了我的问题。

laravel框架安装方法 laravel框架安装方法 Apr 18, 2025 pm 12:54 PM

文章摘要:本文提供了详细分步说明,指导读者如何轻松安装 Laravel 框架。Laravel 是一个功能强大的 PHP 框架,它 упростил 和加快了 web 应用程序的开发过程。本教程涵盖了从系统要求到配置数据库和设置路由等各个方面的安装过程。通过遵循这些步骤,读者可以快速高效地为他们的 Laravel 项目打下坚实的基础。

解决MySQL模式问题:TheliaMySQLModesChecker模块的使用体验 解决MySQL模式问题:TheliaMySQLModesChecker模块的使用体验 Apr 18, 2025 am 08:42 AM

在使用Thelia开发电商网站时,我遇到了一个棘手的问题:MySQL模式设置不当,导致某些功能无法正常运行。经过一番探索,我找到了一个名为TheliaMySQLModesChecker的模块,它能够自动修复Thelia所需的MySQL模式,彻底解决了我的困扰。

MySQL:结构化数据和关系数据库 MySQL:结构化数据和关系数据库 Apr 18, 2025 am 12:22 AM

MySQL通过表结构和SQL查询高效管理结构化数据,并通过外键实现表间关系。1.创建表时定义数据格式和类型。2.使用外键建立表间关系。3.通过索引和查询优化提高性能。4.定期备份和监控数据库确保数据安全和性能优化。

MySQL:解释的关键功能和功能 MySQL:解释的关键功能和功能 Apr 18, 2025 am 12:17 AM

MySQL是一个开源的关系型数据库管理系统,广泛应用于Web开发。它的关键特性包括:1.支持多种存储引擎,如InnoDB和MyISAM,适用于不同场景;2.提供主从复制功能,利于负载均衡和数据备份;3.通过查询优化和索引使用提高查询效率。

See all articles