mysql的经典sql语句大全_重学大学计算机教程--mysql 经典sql语句大全
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语句大全相关推荐
- 线条边框简笔画图片大全_每天学一幅简笔画教师节简笔画图片大全
点击上方蓝色字体关注「每天学一幅简笔画」 11111111111111111111111111111111111111111111111111111111111111111111111111111观自 ...
- mysql支持的并发数_重学MySQL系列(五):谈谈对MySQL的存储引擎的理解
原创作者,公众号[程序员读书],欢迎关注公众号,转载文章请注明出处哦. MySQL关于存储引擎的架构设计,相较于其他关系数据库管理系统,比如Oracle,SQL Server等数据库,这是MySQL最 ...
- mysql sql执行效率_一顿操作猛如虎,SQL执行效率提高250
原标题:一顿操作猛如虎,SQL执行效率提高250 用的数据库是mysql5.6,下面简单的介绍下场景 课程表: 数据100条 学生表: 数据70000条 学生成绩表SC: 数据70w条 查询目的: 查 ...
- python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法
这个工具类十分简单和简洁. sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import seri ...
- mysql root用户可以同时几个人连接_重学MySQL系列(四):10分钟快速掌握MySQL用户与权限管理
在这篇文章中,我们来聊聊怎么管理MySQL的用户及如何为不同用户分配不同的管理权限,其实,在日常使用MySQL的过程中,这部分的工作是由DBA(数据管理员)来完成的. 而我们作为一般的开发人员,只要拿 ...
- mysql 单表字段多少合适_复制信息记录表|全方位认识 mysql 系统库
在上一期<时区信息记录表|全方位认识 mysql 系统库>中,我们详细介绍了mysql系统库中的时区信息记录表,本期我们将为大家带来系列第七篇<复制信息记录表|全方位认识 mysql ...
- sql 删除数据_从零开始学SQL:是什么、如何安装、基本语法、表格(创建、删除、更新)、数据(插入、删除、更新)...
一.学习知识的黄金圈思维 用黄金圈思维分析自己学习SQL,能增加自己的效率和坚持下去的动力. 二.SQL基础知识 1.数据库概念: database ,按照数据结构来组织.存储和管理数据的仓库. 2. ...
- mysql服务启动成功后卸载_安装,启动与卸载Mysql系统服务(MYSQL常见问题)
将Mysql添加到Windows系统服务中: 1.. 安装服务. 在Windows2000下,安装完成后,并没有把MySQL安装成服务,我们必须执行下面的语句把MySQL注册为服务:installdi ...
- md5后得到的32位字符串存储到mysql中太占空间了_面试官:你对MySQL高性能优化有什么规范建议?...
推荐阅读:吊打面试官!MySQL灵魂100问,你能答出多少? 文章篇幅较长,建议先收藏再找个合适的时间阅读 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 ...
最新文章
- Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)
- 86岁还在录网课:MIT教授Gilbert Strang最新「线性代数」课程上线
- 微软开放 AI 系统工具 Counterfit 源代码
- WordPress自动升级插件时需要填写FTP信息的解决
- Dapper.NET——轻量ORM
- Linux 中执行命令 ls -l 后,文件详细信息(文件属性/文件详情)说明
- RUNTIME_CLASS
- 华为ipd项目管理流程_开发一个产品,就是开发一门新的生意IPD落地直播问答精选...
- Torch环境搭建遇到的问题
- 2020-08-21 第一次面试小结
- java实现屏幕共享功能_屏幕共享功能的应用
- html中的js代码测试,w3school JS测验
- muduo学习笔记:base部分之高性能日志库-Logger
- 数仓建模—元数据管理
- 华三 mstp-路由聚合-ospf-三层聚合 入门全套实验
- Apriori 算法分析
- visual studio 2019安装教程(C++版)
- STM32 OLED显示屏--SPI通信知识汇总
- 什么是可变参数列表?以及可变参数列表是如何实现的?
- 断糖饮食和蜂蜜冲突吗?断糖减肥可以喝蜂蜜吗?