`

mySQL学习入门教程——3.SQL的设计和编写

 
阅读更多

一、SQL语句分类


数据定义语言(DDL):
用于定义和管理数据对象,包括数据库、数据表、视图、索引等。例如:CREATE、DROP、ALTER等语句。


数据操作语言(DML):【和表中的数据记录有关的语言】
用于操作数据库对象中所包含的数据。例如:INSERT、UPDATE、DELETE语句。


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


数据控制语言(DCL):
是用来管理数据库的语言,包含管理权限及数据更改。例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。


二、SQL语句应用案例
1、DDL【可以按照以下格式写入一个文件,然后再粘贴到MySQL数据库中】
create table if not exists cats (
id int not null auto_increment,
pid int not null default '0',
name varchar(30) not null default '',
desn text not null default '',
primary key(id),
index name(name,pid)
);
create table if not exists products(
id int not null auto_increment,
cid int not null default 0,
name varchar(60) not null default '',
price double (7,2) not null default 0.00,
num int not null default 0,
desn text,
ptime int not null default 0,
primary key(id),
key pname(name,price)
);

2、DML
a)insert插入表数据
insert into 表名([字段列表])values(值列表),(值列表2),(值列表3),...,(值列表n);
特点:
1.如果在表名后没有给出字段列表,则值列表必须填充所有字段的值,必须按表中默认的顺序插入
2.所有需要写字段名的地方都不加单引号或双引号,但是建议所有值都要以字符形式使用
3.建议在插入数据时,最好给出字段列表,则值只要和字段列表一一对应即可,可以不按表中字段的顺序
b)update 表名 set字段='值'[,字段2='值2',...,字段n='值n'][条件]#条件指定需要更改的记录
update cats set pid='3' where id='1';
update cats set pid='99' where id >= '1' && id <= '3';

c)delete from 表名 [条件]
delete from cats; #清空数据表
truncate cats; #也可以清空数据表,效率更高,truncate将...截断

d)where条件
无论更新、删除、查找,只要写对条件就能准确找到要管理的一条或多条数据
【都可以使用各种运算符号,可以把字段当作一个变量来使用】

3、DQL【select】
SELECT[ALL | DISTINCT]  //distinct有区别的,无重复的字段
{*|table.*|[table.]field1 [as alias1][,[table.]field2[as alias2]][.....]}
FROM 表名
[WHERE...]
[GROUP BY...]
[HAVING...]
[ORDER BY ...]
[LIMIT count]
使用SELECT查询语言,目的是可以按用户的想法将数据查出来,将结果返回!

 

1、字段要列出要查询的字段
e.g. select name,price from products;
select price,name from products;
select * from products;
select products.* from products; #单表其实不需要使用表名

2、可以为每个字段起个别名【后面会用到(关键字,多表查询)】【表也可起别名(多表查询)】
e.g. select name as bookname,price as bookprice from products;#使用别名,也可不加as;注意别名中有空格时,需要加单引号;

3、使用distinct作用与整个记录,取消重复的数据,只返回一个,而不是单独的一列
e.g. select distinct price 'book price' from products;

4、在SQL语句中使用表达式的列(可以使用算术运算符,条件运算符,逻辑运算符...)
e.g. select 1+2*3;
select 8%5
update products set num = num + 1 where id = 22;
select name,price,price*0.7 as 'discount price' from products where id <=15;
5、WHERE可以在SELECT/UPDATE/DELETE中
a)可使用的逻辑运算符号(将多个条件组合)
&&/AND ||/OR !/NOT
b)可使用的比较运算符号
=  #判断是否相等,与程序中的==作用相同
<=>  #判断是否相等,与=一致,但可以用于与NULL比较
!= / <>   #不等号
<
<=
>
>=
c)程序中没有的运算符
IS NULL   #与'<=>NULL' 相等
IS NOT NULL
BETWEEN ... AND ...
e.g.

select * from products where id between 10 and 20;
与 “select * from products where id >= 10 && id <= 20;”作用相同
NOT BETWEEN ... AND ...
IN
e.g.

select * from products where id in(5,10,15,20);
update products set num = 77 where id in(5,10,15,20);
delete from 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的数据

NOT LIKE
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.

select cats.name,products.name from cats,products;
select c.name cname,c.desn cdesn,p.name pname,p.price,p.desn pdesn,p.numfrom carts c,products as p;

#将A表中的记录与B表中的记录依次匹配,得到A*B种结果【笛卡尔乘积】,该结果是没有意义的。
select c.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;
select c.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;
select a.id aid,a.name aname,b.id bid,b.name bname from cats a,cats b; #将单表分为多表,进行查询
select a.id aid,a.name aname,b.id bid,b.name bname from cats a,cats b where a.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%'); #作用相同

8、order by 字段 [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结合使用
9、limit count【限制显示个数】
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个

10、group by 字段【分组】(聚合函数:对一组值执行计算并返回单一的值
常用函数:
count() #一个字段的总数:count(1)
sum()
avg()#平均值
max()
min()
e.g.

select count(*),sum(price),avg(price),max(price),min(price) from products;
select cid,count(price),sum(price),avg(price),max(price),min (price) from products group by cid;
select cid,count(price),sum(price),avg(price),max(price),min (price) from products group by cid having avg(price) > 50;  #加having条件,与where类似
#having必须与group by结合才能使用

 

http://blog.csdn.net/zjf280441589/article/details/19496417

http://blog.csdn.net/zjf280441589/article/details/19496527

 

分享到:
评论

相关推荐

    mysql语句编写资料.rar

    mysql语句编写资料,mysql入门练习,E-R关系图,MySQL安装图解,sql入门ppt,重置Root密码 ——这是一个资源特别好的,强烈推荐!!! 本资源转载自网络,供学习研究之用,如用于商业用途,请购买正版,如有侵权,请...

    程序员的SQL金典.rar

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    2021最新java面试合集pdf.rar

    Docker —— 从入门到实践 - v1.0.pdf Dubbo部署文档.doc Dubbo面试专题.docx java后端面试题答案.pdf Java并发Fork-Join框架原理解析.docx JAVA核心知识整理.pdf JAVA核心知识点整理.pdf Java面试笔记.docx JAVA...

    分布式数据库架构及企业实践-基于Mycat中间件

    本书对 Mycat 从入门到进阶、从高级技术实践到架构剖析、从网络通信协议解析到系统工作原理的方方面面进行了详细讲解,并剖析了 Mycat的 SQL 路由、跨库联合查询、分布式事务及原生 MySQL、PostgreSQL 协议等核心...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    86.3 驱动模型ModelDriven 8.7 实战检验 8.7.1 Struts2处理表单数据 8.7.2 使用M印类型的request、session、application 8.8 疑难解惑 8.8.1 Struts Prepare And Execute Filter过滤器 8.8.2 struts.xml文件配置出错...

    程序员的SQL金典4-8

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    程序员的SQL金典3-8

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    程序员的SQL金典6-8

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    程序员的SQL金典7-8

     1.2.9 数据库的语言——SQL  1.2.10 DBA与程序员 第2章 数据表的创建和管理  2.1 数据类型  2.1.1 整数类型  2.1.2 数值类型  2.1.3 字符相关类型  2.1.4 日期时间类型  2.1.5 二进制类型  2.2 通过SQL...

    java面试题及技巧3

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    Linux程序设计 第4版.haozip01

    16.5.3 gtkspinbutton 563 16.5.4 gtkbutton 565 16.5.5 gtktreeview 568 16.6 gnome构件 571 16.7 gnome菜单 572 16.8 对话框 576 16.8.1 gtkdialog 577 16.8.2 模式对话框 578 16.8.3 非模式对话框 579 ...

    asp.net知识库

    动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个时间转换的问题,顺便谈谈搜索技巧 .net中的正则表达式使用高级技巧 (一) C#静态成员和...

    Linux程序设计 第4版.haozip02

    16.5.3 gtkspinbutton 563 16.5.4 gtkbutton 565 16.5.5 gtktreeview 568 16.6 gnome构件 571 16.7 gnome菜单 572 16.8 对话框 576 16.8.1 gtkdialog 577 16.8.2 模式对话框 578 16.8.3 非模式对话框 579 ...

    java面试题以及技巧

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题目与技巧1

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题及技巧4

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题以及技巧6

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    分布式数据库架构及企业实践-基于Mycat中间件 学习书籍

    《分布式数据库架构及企业实践——基于Mycat中间件》对 Mycat 从入门到进阶、从高级技术实践到架构剖析、从网络通信协议解析到系统工作原理的方方面面进行了详细讲解,并剖析了 Mycat的 SQL 路由、跨库联合查询、...

    分布式数据库架构及企业实践-基于Mycat中间件.pdf

    《分布式数据库架构及企业实践——基于Mycat中间件》对 Mycat 从入门到进阶、从高级技术实践到架构剖析、从网络通信协议解析到系统工作原理的方方面面进行了详细讲解,并剖析了 Mycat的 SQL 路由、跨库联合查询、...

Global site tag (gtag.js) - Google Analytics