位置: 编程技术 - 正文

SQL语句实例说明 方便学习mysql的朋友(sql语句示例)

编辑:rootadmin

MySQL中模式就是数据库

SHOW DATABASES;

show databases;罗列所有数据库名称

CREATE DATABASE <数据库名>

create database TEST;创建名为TEST的数据库

DROP DATABASE <数据库名>

drop database TEST;删除名为TEST的数据库

USE <数据库名>

use TEST;使用名为TEST的数据库

SHOW TABLES

show tables;显示当前数据库所有表格

SHOW [FULL] COLUMNS FROM <表名>

show [full] columns from <表名>在MySQL数据库中显示表的结构,如果加上full则更加详细

DESC <表名>

desc TEST;查看表TEST的结构,同show columns from TEST

SHOW CREATE TABLE <表名>

show create table TEST;

查看表TEST的所有信息,包括建表语句

创建基本表:CREATE TABLE <表名> (<列名> <数据类型>[列级完整性约束条件],<列名> <数据类型>[列级完整性约束条件],………………);

create table STUDENT (studentId int() primary key,name varchar(),address varchar());创建名为STUDENT的表格,有属性studentId,name,address,其中studentId为主键

create table TEACHER(teacherId int(),name varchar(),age int(),studentId int(),primary key (teacherId),foreign key (studentId) references STUDENT(studentId));创建名为TEACHER的表格,其中teacherId为主键,studentId为外键,引用STUDENT表的主键studentId

修改基本表:

ALTER TABLE <表名> RENAME <修改后表名>

alter table TEACHER rename S;将TEACHER表的表名改为S

ALTER TABLE <表名> ADD COLUMN <列名> <属性类型>

alter table TEACHER add column ADDRESS varchar();在表名为TEACHER的表中加入名为ADDRESS的列

ALTER TABLE <表名> CHANGE COLUMN <列名> <修改后列名> <属性类型>

alter table TEACHER change column ADDRESS address varchar();修改TEACHER表中的列,将ADDRESS的列名改为address

ALTER TABLE <表名> DROP [COLUMN] <列名>

alter table TEACHER drop [column] address;删除列名为address的列,column可有可无

删除基本表:

DROP TABLE <表名> [RESTRICT|CASCADE]删除表格

drop table STUDENT restrict;删除STUDENT表。受限制的删除,欲删除的基本表不能被其他表的约束所引用(如check,foreign key等约束), 不能有视图,不能有触发器,不能有存储过程或函数等。

drop table STUDENT cascade;

若选择cascade,则该表删除没有限制。在删除基本表的同时,相关的依赖对象,例如视图,都将被一起删除。

但是我在MySQL测试的时候给错误提示Cannot delete or update a parent row: a foreign key constraint fails,不予以删除,不知道是什么原因。

关于完整约束性:

参考文章:完整性约束的SQL定义

ALTER TABLE <表名> ADD CONSTRAINT <约束名> <约束条件>

alter table teacher add constraint pk_teacher_id primary key teacher(id);

在teacher表中增加名为pk_teacher_id的主键约束。

ALTER TABLE <表名> DROP <约束条件>

alter table teacher drop primary key;

删除teacher表的主键约束。

alter table student add constraint fk_student_teacher foreign key student(teacherId) references teacher(id);

在student表中增加名为fk_student_teacher的约束条件,约束条件为外键约束。

索引的建立与删除:

索引的建立:

CREATE [UNIQUE]|[CLUSTER] INDEX <索引名> ON <表名>(<列名> [次序][,<列名> [次序]]……);

UNIQUE 表明此索引的每一个索引值只对应唯一的数据记录。

CLUSTER 表示要建立的索引是聚簇索引。

create unique index id_index on teacher(id asc);对teacher表的id列建立unique索引,索引名为id_index

索引的删除:

DROP INDEX <索引名> ON <表名>

drop index id_index on teacher;在teacher表中删除索引,索引名为id_index

另外的方法:

新建索引:

ALTER TABLE <表名> ADD [UNIQUE]|[CLUSTER] INDEX [<索引名>](<列名> [<次序>],[<列名> [<次序>]]……)

alter table teacher add unique index id_index(id asc);在teacher表中对id列升序建立unique索引,索引的名字为id_index

删除索引:

ALTER TABLE <表名> DROP INDEX <索引名>

alter table teacher drop index id_index;删除teacher表名为id_index的索引

数据库索引的建立有利也有弊,参考文章:

数据库索引的作用和优点缺点(一)数据库索引的作用和优点缺点(二)数据库建立索引的原则

数据查询:

SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]……

FROM <表名或视图名> [<表名或视图名>]……

[WHERE <条件表达式>]

[GROUP BY <列名1> [HAVING <条件表达式>]]

[ORDER BY <列名2> [ASC|DESC] [,<列名3> [ASC|DESC]]……];

查询经过计算的值:

select teacherId as id,salary - as S from teacher;

查询经过计算的值,从teacher表中查询出teacherId字段,别名为id,并且查询出salary字段减去后的字段,别名为S

使用函数和字符串:

select teacherid as id,'birth',salary - as SA, lower(name) from teacher;

<目标表达式>可以是字符串常量和函数等,'birth' 为字符串常量,lower(name)为函数,将name字段以小写字母形式输出

消除取值重复的行:

select distinct name from teacher;

如果没有指定DISTINCT关键词,则缺省为ALL.

查询满足条件的元组:

WHERE子句常用的查询条件:

推荐整理分享SQL语句实例说明 方便学习mysql的朋友(sql语句示例),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:请列举sql语句的类型,sql语句大全实例教程,sql语句大全实例教程,sql 经典实例,sql的实例,sql的实例,sql的实例,sql语句示例,内容如对您有帮助,希望把文章链接给更多的朋友!

查询条件

谓词

比较

=, >, <, >=, <=, !=, <>, !>, !<

确定范围

BETWEEN AND, NOT BETWEEN AND

SQL语句实例说明 方便学习mysql的朋友(sql语句示例)

确定集合

IN, NOT IN

字符匹配

LIKE, NOT LIKE

空值

IS NULL, IS NOT NULL

多重条件(逻辑运算)

AND, OR, NOT

(1)比较大小:

select * from teacher where name = 'test';

select * from teacher where salary > ;

select * from teacher where salary <> ;

(2)确定范围:

select * from teacher where salary between and ;

select * from teacher where salary not between and

(3)确定集合

select * from teacher where name in('test','test2');

select * from teacher where name not in('test','test2');

(4)字符匹配:

[NOT] LIKE '<匹配串>' [ESCAPE '<换码字符>']<匹配串>可以是一个完整的字符串,也可以含有通配符%和_%代表任意长度(长度可以是0)的字符。例如a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab

_代表任意单个字符。例如a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串。

select * from teacher where name like '%2%‘;

select * from teacher where name like '_e%d';

注意一个汉字要占两个字符的位置。

(5)涉及空值查询:

select * from teacher where name is null;

select * from teacher where name is not null;

注意这里的"is"不能用符号(=)代替。

(6)多重条件查询:

select * from teacher where name = 'test' and salary between and ;

select * from teacher where name like '%s%' or salary = ;

ORDER BY子句:

ORDER BY 子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,缺省值为(ASC)

select salary from teacher order by salary asc;

select * from teacher order by name desc,salary asc;

聚集函数(aggregate functions):

COUNT([DISTINCT|ALL]*) 统计元组个数COUNT([DISTINCT|ALL]<列名>) 统计一列值的个数SUM([DISTINCT|ALL]<列名>) 计算一列值的总和AVG([DISTINCT|ALL]<列名>) 计算一列值的平均值MAX([DISTINCT|ALL]<列名>) 求一列值中的最大值MIN([DISTINCT|ALL]<列名>)   求一列值中的最小值

缺省值为ALL

select count(distinct name) from teacher;查询没有重复的名字的个数

select count(*) from teacher;查询teacher表格总记录数

select sum(salary) from teacher;查询teacher表的salary字段的总和

select avg(salary) from teacher;查询teacher表的salary字段的平均值

select max(salary) from teacher;查询teacher表的salary字段的最大值

select min(salary) from teacher;查询teacher表的salary字段的最小值

GROUP BY子句:

GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。对查询结果分组的目的是为了细化聚集函数的作用对象。分组后聚集函数将作用于每一个组,即每一组都有一个函数值。

select cno,count(*) from teacher group by cno;对teacher表格按照cno分组,并算出每组里面有多少个元素

如果分组后还要按照一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用HAVING语句指定筛选条件。

select cno,count(*) from teacher group by cno having count(*) >= 4;对teacher表格按照cno分组,并算出每组里面有多少个元素,得到元素个数大于等于4的值

连接查询:

连接查询是关系数据库中最主要的的查询,包括等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询和复合条件连接查询等。

等值与非等值连接查询:

连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词,格式为:

[<表名1>.]<列名> <比较运算符> [<表名2>.]<列名2>

其中比较运算符主要有:=,>, <, >=, <=, !=(或<>)等

select s.*,t.* from student as s,teacher as t where s.teacherid = t.teacherid;等值连接查询,将student表和teacher的信息连接查询出来,连接条件是s.teacherid = t.teacherid

自身连接:

一个表与自身进行连接,称为自身连接

select teacher.name,student.name from people as teacher,people as student where teacher.name = student.teacher;自身连接查询,在people表里有两种角色,一种是教师,一种是学生,利用自身连接查询,得到name字段和teacher字段相等的元组

外连接:

左外连接列出左边关系中所有元组,右外连接列出右边关系中所有元组。

左外连接:SELECT <目标列表达式>[,<目标列表达式>]…… FROM <表名1> LEFT [OUTER] JOIN <表名2> ON <连接条件>右外连接:SELECT <目标列表达式>[,<目标列表达式>]…… FROM <表名1> RIGHT [OUTER] JOIN <表名2> ON <连接条件>

select s.sno,s.name,c.cno,c.name from student as s left outer join class as c on (s.cno = c.cno);student表和class表进行左外连接,连接条件是s.cno=c.cno

select c.cno,c.name,s.sno,s.name from student as s right outer join class as c on (s.cno = c.cno); student表和class表进行右外连接,连接条件为s.cno=c.cno

student表数据:

+-----+-----+------+| sno | cno | name |+-----+-----+------+| 1 | 1 | 地心 || 2 | 2 | 华雄 || 3 | 1 | 孝慈 || 4 | 3 | 必须 |+-----+-----+------+

class表数据:

+-----+-----+------+| cid | cno | name |+-----+-----+------+| 1 | 1 | 化学 || 2 | 2 | 物理 || 3 | 3 | 政治 |+-----+-----+------+

左外连接效果:

+-----+------+-----+------+| sno | name | cno | name |+-----+------+-----+------+| 1 | 地心 | 1 | 化学 || 2 | 华雄 | 2 | 物理 || 3 | 孝慈 | 1 | 化学 || 4 | 必须 | 3 | 政治 |+-----+------+-----+------+

右外连接效果:

+-----+------+-----+------+| cno | name | sno | name |+-----+------+-----+------+| 1 | 化学 | 1 | 地心 || 1 | 化学 | 3 | 孝慈 || 2 | 物理 | 2 | 华雄 || 3 | 政治 | 4 | 必须 |+-----+------+-----+------+

MySQL不支持全外连接!

复合条件连接:

WHERE子句中可以有多个连接条件,称为复合条件连接

select s.sno,s.name,c.name,s.score from student s,class c where s.cno = c.cno and s.score < ;复合条件连接查询,查询学生信息和课程信息,并且成绩小于的记录

嵌套查询:

一个SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询称为嵌套查询。

子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY 子句只能对最终查询结果排序

带有IN谓词的子查询:

select sno,name from studentwhere cno in(select cno from studentwhere name = '华雄');

查询和"华雄"选同一课程的所有学生的学号和姓名。

子查询的查询条件不依赖于父查询,称为不相关子查询。

如果子查询条件依赖于父查询,这类子查询称为相关子查询,整个查询语句称为相关嵌套查询语句。

带有比较运算符的子查询:

select name,cno from student s1where score >(select avg(score) from student s2where s2.name = s1.name );

查询学生的大于各科平均成绩的科目

以上是相关子查询。

带有ANY(SOME)或ALL谓词的子查询

子查询返回单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓词修饰。使用ALL或ALL谓词时必须使用比较运算符。

>ANY 大于子查询结果的某个值>ALL 大于子查询结果的所有值 <ANY 小于子查询结果的某个值<ALL 小于子查询结果的所有值>=ANY 大于等于子查询结果的某个值 >=ALL 大于等于子查询结果的所有值<=ANY 小于等于子查询结果的某个值<=ALL 小于等于子查询结果的所有值=ANY 等于子查询结果的某个值=ALL 等于子查询结果的所有值(通常没有实际意义)!=(或<>)ANY 不等于子查询结果的某个值!=(或<>)ALL 不等于子查询结果的任何一个值

select name,score from student where score <= all (select score from student);查询成绩最小的学生姓名和成绩

集合查询:

SELECT语句的查询结果是元组的集合,所以多个SELECT语句的结果可进行集合操作。集合操作主要包括并操作(UNION),交操作(INTERSECT),差操作(EXCEPT)。参加集合操作的各查询结果的列数必须相同;对应项的数据类型也必须相同。MySQL数据库不支持INTERSECT和EXCEPT操作!

select * from student where cno=1 union select * from student where cno=2;查询班级1和班级2所有学生信息

数据更新:

插入数据:

插入元组:

INSERT INTO <表名> [(<属性列1>)[,<属性列2>]……]VALUES (<常量1>[,<常量2>]……);

例子:

insert into student (cno,name,score) values (2,'横切',);

插入子查询结果:

INSERT INTO <表名> [(<属性1>[,<属性2>]……)]子查询;

例子:

insert into studentcopy select * from student;将student表的信息全部复制到studentcopy表中

修改数据:

UPDATE <表名>SET <列名>=<表达式>[,<列名>=<表达式>]……[WHERE <条件>]

修改某一元组的值:

update studentcopy set score= where sno=1;

修改多个元组的值:

update studentcopy set score=score-;

删除数据:

DELETE FROM <表名>[WHERE <条件>];

删除某一元组:

delete from studentcopy where sno=1;

删除多个元组:

delete from studentcopy;

带子查询的删除语句:

delete from studentcopy where cno in (select cno from student as s where s.cno = 2);

视图:

关于视图,它的作用和优缺点可以参考文章:数据库视图介绍

建立视图:

CREATE VIEW <视图名> [(<列名>[,<列名>]……)]AS <子查询>[WITH CHECK OPTION]子查询可以是任意复杂的SELECT语句,但通常不允许含有ORDER BY子句和DISTINCT语句。

WITH CHECK OPTION 表示对视图进行UPDATA,INSERT和DELETE操作时要保证更新,插入或删除的行满足视图定义中的谓词条件

组成视图的属性列名或者全部省略或者全部指定,没有第三种选择。如果省略了视图的各个属性列名,则隐含该视图由子查询中SELECT子句目标列中的诸字段组成。但在下面三种情况下必须明确指定组成视图的所有列名:(1) 某个目标列不是单纯的属性名,而是聚集函数或列表达式。(2) 多表连接时选出了几个同名列作为视图的字段。(3) 需要在视图中为某个列启用新的更合适的名字。

create view part_studentasselect * from studentwhere cno = 2;建立物理班学生的视图

create view student_class (sno,student_name,class_name,score)asselect s.sno,s.name,c.name,s.scorefrom student as s,class as cwhere s.cno = c.cno;结合学生表和选课表建立视图

如果以后修改了基本表的结构,则基本表与视图的映射关系就被破坏了,该视图就不能正确工作了。为避免出现这类问题,最好在修改基本表之后删除由该基本表导出的视图,然后重建这个视图。

删除视图:

DROP VIEW <视图名> [CASCADE];

如果视图上还导出了其他视图,则使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除。

查询视图:

查询视图和查询基本表类似。

更新视图:

更新视图和更新基本表类似,不过有些限制。

SQL Server 到底需要使用哪些端口? 下面就来介绍下SQLServer中使用的端口有哪些:首先,最常用最常见的就是端口。这个是数据库引擎的端口,如果我们要远程连接数据库引擎,那么

sqlserver 存储过程带事务 拼接id 返回值 删除一条留言信息会级联删除回复信息,这时我们需要用到事务,如下SQLALTERPROCEDURE[dbo].[proc_tb_leaveword_delete](@leavewordIDINT,@recordTINYINTOUTPUT)ASBEGINBEGINTRYBEGIN

delete from 表名与truncate table 表名区别 1.delete不能使自动编号返回为起始值。但是truncate能使自动增长的列的值返回为默认的种子2.truncate只能一次清空,不能按条件删除。但是delete可以按条

标签: sql语句示例

本文链接地址:https://www.jiuchutong.com/biancheng/348195.html 转载请保留说明!

上一篇:使用SSIS创建同步数据库数据任务的方法

下一篇:SQL Server 2008 到底需要使用哪些端口?

  • 企业所得税负担变动率
  • 摊余成本的构成内容
  • 应交增值税销项税额借贷方向
  • 利润总额与毛利的区别
  • 企业入统的利弊
  • 怎么开具红票
  • 分公司与总公司承担责任的法律规定
  • 应付账款 暂估
  • 组织职工捐款取得的现金计入什么会计科目?
  • 实收资本叫别人代缴可以不
  • 营业外收入需要计提销项税吗
  • 工程成本哪些可以抵扣
  • 股权转让如何避免缴纳个税
  • 增值税有差额如何调账
  • 请问什么是全员安全生产责任制
  • 个人所得税纳税比例
  • 供应商返点抵应怎么做账
  • 收入与成本不匹配建议怎么写
  • 利润分配在利润表中如何列示
  • 个体工商户清算报告
  • 增值税普通发票和电子普通发票的区别
  • 多发的工资可以从下月扣除吗
  • 投资新公司的账务处理
  • windows 10 build 21354
  • 常用的php操作mysql的函数有哪些
  • php中imagecreatefromjpeg
  • 圣米厄尔教堂
  • vue前端开发常见问题
  • php中session使用
  • 总纳税与就地纳税区别
  • 募股方案
  • 企业如何利用期货对冲风险怎么操作
  • 帝国cms使用手册
  • 出口退税还需要交企业所得税吗
  • PostgreSQL中使用dblink实现跨库查询的方法
  • 业务招待费汇算清缴怎么填表
  • 企业管理费用的分类
  • 减值准备为什么不影响影响资产余额
  • 水电费进项税额转出情形
  • 什么叫做应税劳务
  • MySQL ERROR 2013 (HY000)错误解决方法
  • 平行结转分步法各步骤的费用
  • 个人对企事业单位的看法
  • 附加税多交了怎么抵税
  • 私人账户可以打钱到公司账户吗
  • 购买的服务如何申请退款
  • 暂估入账会计科目
  • 账务处理程序的种类及各自的适用范围
  • 公司车辆做账交增值税吗
  • 购买发票打印机如何账务处理?
  • 应收应付账款如何清理
  • 公司租用私人汽车怎么操作
  • 应交税费期初有余额吗
  • 存货期末报表列示
  • 会计年终决算怎么填写
  • SQL Server AlwaysOn读写分离配置图文教程
  • sql-3
  • 实现分页功能的多种原理方案
  • sql语句大全实例教程.pdf
  • win8.1关机没反应
  • 预览版与正式版
  • xp系统怎么删除系统
  • linux系统讲解
  • 直接在u盘上工作
  • freebsd操作命令
  • freebsd ifconfig
  • 安装程序不运行怎么回事
  • win7系统多久不动自动关机
  • 快速查看浏览的英语短语
  • 如何将win7系统装进移动硬盘
  • Win10 Mobile Redstone预览版14295出现问题 屏幕闪烁/应用自动关闭等
  • 批处理for命令详解
  • Interlnk、Intersvr、Qbasic命令的使用方法
  • python中requests小技巧
  • great 搬运工
  • 爬虫如何识别验证码
  • 税务协查函格式 范文
  • 合作社的税率是多少
  • 三免三减半是什么
  • 广东省地方税务局公告2017年第6号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设