SQL 语句分类

DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。

DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和select 等。(增添改查)

DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。

DDL 语句:

DDL 是数据定义语言的缩写,简单来说,就是对数据库内部的对象进行创建、删除、修改的操作语言。它和 DML 语言的最大区别是 DML 只是对表内部数据的操作,而不涉及到表的定义、结构的修改,更不会涉及到其他对象。DDL 语句更多的被数据库管理员(DBA)所使用,一般的开发人员很少使用。

1、说明:创建数据库

CREATE DATABASE database-name

CREATE DATABASE database default charset utf8;

2、说明:删除数据库

drop database dbname

3、说明:备份sql server

--- 创建 备份数据的 device

USE master

EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'

--- 开始 备份

BACKUP DATABASE pubs TO testBack

还原一个数据库:

​ mysql -h localhost -u root -p123456 先登录

​ source ./xxx.sql 执行sql文件进行还原

备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql

其中WWW为数据库名

eg:

mysqldump -hlocalhost -uzhougy -p123456 sh_1801_lesson > ./database.sql

选择你所创建的数据库

mysql> USE database; (按回车键出现Database changed 时说明操作成功!)

4:查看现在的数据库中存在什么表

mysql> SHOW TABLES;

5:创建一个数据库表

mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));

6:显示表的结构:

mysql> DESCRIBE MYTABLE; (or desc mytable;)

7、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表:

A:create table tab_new like tab_old (使用旧表创建新表)

B:create table tab_new as select col1,col2… from tab_old definition only

8、说明:删除新表

drop table tabname

9、说明:增加一个列

Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

10、说明:添加主键: Alter table tabname add primary key(col)

说明:删除主键: Alter table tabname drop primary key(col)

11、说明:创建索引:create [unique] index idxname on tabname(col….)

删除索引:drop index idxname

注:索引是不可更改的,想更改必须删除重新建。

12、说明:创建视图:create view viewname as select statement

删除视图:drop view viewname

13、导入.sql文件命令(例如D:/mysql.sql)

mysql>use database;

mysql>source d:/mysql.sql;

14、清空表

mysql>delete from MYTABLE; (or truncate table MYTABLE; )

delete 清空表的记录

truncate table: 清空表的结构和记录

15、更新表中数据

mysql>update MYTABLE set sex=”f” where name='hyq';

17.去除重复的值

格式: select distinct 字段名 from 表名 where 条件;

例: select distinct gender from student;

18.聚合函数

count(*) 求当前结果总共有多少条数据

sum(列名) 求列名对应列的和

avg(列名) 求当前列的平均值

max(列名) 求当前列的最大值

min(列名) 求当前列的最小值

例: 求当前表总共有多少条数据?

select count(*) from student;

求年龄最小的?

select min(age) from student;

19.分组 group by

格式: select 字段名... from 表名 where 条件 group by 字段名

查看有多少种性别

例: select gender from student group by gender;

需求:统计 男生 和 女生 各有多少个

select gender,count() from student group by gender;

需求: 统计所有女生的个数?

例: select gender,count() from student group by gender having gender = 1;

where 查询条件, 是对select数据结果加的查询条件

having 查询条件 是对group by分组后结果加的查询条件

排序

格式: select 字段名... from 表名 where 条件 order by 字段名1,字段名2...

例: 年龄小到大

select from student order by age;

默认是从小到大排列

asc 从小到大

desc 从大到小

select from student order by age asc;

分页

格式: select 字段名... from 表名 where 条件 limit 起始值,多少条数据

起始值可以从 0 开始

例: select * from student limit 0,3;

如果每页数据量为30,页码从1开始

page = 1: limit 0,30;

page = 2: limit 30,30;

page = 3: limit 60,30;

...

page = n: limit (n-1)*30,30;

存在一个问题:

数据更新比较快,过度依赖数据库进行计算,比较耗费资源

案例分析

如何采用python语言操作mysql数据库?

采用pymysql ---- python3推荐一种mysql数据库连接库

安装过程: pip install pymysql

相关操作案例见code

10、说明:几个简单的基本的sql语句

选择:select from table1 where 范围

插入:insert into table1(field1,field2) values(value1,value2)

删除:delete from table1 where 范围

更新:update table1 set field1=value1 where 范围

查找:select from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

排序:select * from table1 order by field1,field2 [desc]

总数:select count as totalcount from table1

求和:select sum(field1) as sumvalue from table1

平均:select avg(field1) as avgvalue from table1

最大:select max(field1) as maxvalue from table1

最小:select min(field1) as minvalue from table1

11、说明:几个高级查询运算词

A: UNION 运算符

UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。

B: EXCEPT 运算符

EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。

C: INTERSECT 运算符

INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。

注:使用运算词的几个查询结果行必须是一致的。

12、说明:使用外连接

A、left (outer) join:

左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

B:right (outer) join:

右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。

C:full/cross (outer) join:

全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。

12、分组:Group by:

一张表,一旦分组完成后,查询后只能得到组相关的信息。

组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准)

在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据

在selecte统计函数中的字段,不能和普通的字段放在一起;

13、对数据库进行操作:

分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名

14.如何修改数据库的名称:

sp_renamedb 'old_name', 'new_name'

二、提升

1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)

法一:select into b from a where 1<>1(仅用于SQlServer)

法二:select top 0 into b from a

2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用)

insert into b(a, b, c) select d,e,f from b;

3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用)

insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件

例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4、说明:子查询(表名1:a 表名2:b)

select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)

5、说明:显示文章、提交人和最后回复时间

select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、说明:外连接查询(表名1:a 表名2:b)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:在线视图查询(表名1:a )

select from (SELECT a,b,c FROM a) T where t.a > 1;

8、说明:between的用法,between限制查询数据范围时包括了边界值,not between不包括

select from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 数值1 and 数值2

9、说明:in 的使用方法

select from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’)

10、说明:两张关联表,删除主表中已经在副表中没有的信息

delete from table1 where not exists ( select from table2 where table1.field1=table2.field1 )

11、说明:四表联查问题:

select from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、说明:日程安排提前五分钟提醒

SQL: select from 日程安排 where datediff('minute',f开始时间,getdate())>5

13、说明:一条sql 语句搞定数据库分页

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

具体实现:

关于数据库分页:

declare @start int,@end int

@sql nvarchar(600)

set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’

exec sp_executesql @sql

mysql的经典sql语句大全_重学大学计算机教程--mysql 经典sql语句大全相关推荐

  1. 线条边框简笔画图片大全_每天学一幅简笔画教师节简笔画图片大全

    点击上方蓝色字体关注「每天学一幅简笔画」 11111111111111111111111111111111111111111111111111111111111111111111111111111观自 ...

  2. mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解

    原创作者,公众号[程序员读书],欢迎关注公众号,转载文章请注明出处哦. MySQL关于存储引擎的架构设计,相较于其他关系数据库管理系统,比如Oracle,SQL Server等数据库,这是MySQL最 ...

  3. mysql sql执行效率_一顿操作猛如虎,SQL执行效率提高250

    原标题:一顿操作猛如虎,SQL执行效率提高250 用的数据库是mysql5.6,下面简单的介绍下场景 课程表: 数据100条 学生表: 数据70000条 学生成绩表SC: 数据70w条 查询目的: 查 ...

  4. python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法

    这个工具类十分简单和简洁. sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import seri ...

  5. mysql root用户可以同时几个人连接_重学MySQL系列(四):10分钟快速掌握MySQL用户与权限管理

    在这篇文章中,我们来聊聊怎么管理MySQL的用户及如何为不同用户分配不同的管理权限,其实,在日常使用MySQL的过程中,这部分的工作是由DBA(数据管理员)来完成的. 而我们作为一般的开发人员,只要拿 ...

  6. mysql 单表字段多少合适_复制信息记录表|全方位认识 mysql 系统库

    在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...

  7. sql 删除数据_从零开始学SQL:是什么、如何安装、基本语法、表格(创建、删除、更新)、数据(插入、删除、更新)...

    一.学习知识的黄金圈思维 用黄金圈思维分析自己学习SQL,能增加自己的效率和坚持下去的动力. 二.SQL基础知识 1.数据库概念: database ,按照数据结构来组织.存储和管理数据的仓库. 2. ...

  8. mysql服务启动成功后卸载_安装,启动与卸载Mysql系统服务(MYSQL常见问题)

    将Mysql添加到Windows系统服务中: 1.. 安装服务. 在Windows2000下,安装完成后,并没有把MySQL安装成服务,我们必须执行下面的语句把MySQL注册为服务:installdi ...

  9. md5后得到的32位字符串存储到mysql中太占空间了_面试官:你对MySQL高性能优化有什么规范建议?...

    推荐阅读:吊打面试官!MySQL灵魂100问,你能答出多少? 文章篇幅较长,建议先收藏再找个合适的时间阅读 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 ...

最新文章

  1. Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)
  2. 86岁还在录网课:MIT教授Gilbert Strang最新「线性代数」课程上线
  3. 微软开放 AI 系统工具 Counterfit 源代码
  4. WordPress自动升级插件时需要填写FTP信息的解决
  5. Dapper.NET——轻量ORM
  6. Linux 中执行命令 ls -l 后,文件详细信息(文件属性/文件详情)说明
  7. RUNTIME_CLASS
  8. 华为ipd项目管理流程_开发一个产品,就是开发一门新的生意IPD落地直播问答精选...
  9. Torch环境搭建遇到的问题
  10. 2020-08-21 第一次面试小结
  11. java实现屏幕共享功能_屏幕共享功能的应用
  12. html中的js代码测试,w3school JS测验
  13. muduo学习笔记:base部分之高性能日志库-Logger
  14. 数仓建模—元数据管理
  15. 华三 mstp-路由聚合-ospf-三层聚合 入门全套实验
  16. Apriori 算法分析
  17. visual studio 2019安装教程(C++版)
  18. STM32 OLED显示屏--SPI通信知识汇总
  19. 什么是可变参数列表?以及可变参数列表是如何实现的?
  20. 断糖饮食和蜂蜜冲突吗?断糖减肥可以喝蜂蜜吗?

热门文章

  1. QTP学习笔记,六月十号
  2. 红人营销干货:不要让你的营销经费打水漂
  3. 六月A股还有没有好戏 十大博客看后市
  4. 计算机辅助工程在焊接中的作用,焊接材料在焊接过程中的作用
  5. 从无到有建立一个外贸网站,这些是你应该准备好的
  6. 【0205】哪些信号可kill掉postmaster?内核如何实现?
  7. CSS实现横或竖的分隔线分界线
  8. linux 日志颜色修改,如何在linux中更改echo的输出颜色
  9. 新浪付稳:揭秘微博如何10分钟快速应对百亿级访问量
  10. 常见的三维点云数据下载链接,自己整理+网上收集