当前位置:  数据库>sqlserver

SQL语句实例说明 方便学习mysql的朋友

    来源: 互联网  发布时间:2014-10-08

    本文导语:  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;显示当前...

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(30) primary key,
name varchar(255),
address varchar(255)
);
创建名为STUDENT的表格,有属性studentId,name,address,其中studentId为主键

create table TEACHER
(
teacherId int(30),
name varchar(255),
age int(20),
studentId int(30),
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(255);
在表名为TEACHER的表中加入名为ADDRESS的列

ALTER TABLE CHANGE COLUMN

alter table TEACHER change column ADDRESS address varchar(230);
修改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 [HAVING ]]

[ORDER BY [ASC|DESC] [, [ASC|DESC]]……];

查询经过计算的值:

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

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

 

使用函数和字符串:

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

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

 

消除取值重复的行:

select distinct name from teacher;

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

 

查询满足条件的元组:

WHERE子句常用的查询条件:

查询条件

谓词

比较

=, >, =, , ! 500;

select * from teacher where salary  500;

(2)确定范围:

select * from teacher where salary between 300 and 1000;

select * from teacher where salary not between 500 and 1000

(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 400 and 800;

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

 

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子句中用来连接两个表的条件称为连接条件或连接谓词,格式为:

[.] [.]

其中比较运算符主要有:=,>, =,
(
select avg(score) from student s2
where s2.name = s1.name
);

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

以上是相关子查询。

 

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

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

>ANY                          大于子查询结果的某个值
>ALL                           大于子查询结果的所有值 
=ALL                          大于等于子查询结果的所有值


    
 
 

您可能感兴趣的文章:

  • mysql中查询当前正在运行的SQL语句并找出mysql中运行慢的sql语句
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • Mysql增加主键或者更改表的列为主键的sql语句
  • sql语句实例 取得日志条目的sql语句
  • Mysql下在某一列后即表的某一位置添加新列的sql语句
  • SQL Server统计SQL语句执行时间的脚本
  • sql语句实例 统计页面链接的sql语句
  • 如何实现连接一次数据库,提交多个sql语句。(sql的批处理)
  • 一条SQL语句搞定Sql2000 分页
  • C#中验证sql语句是否正确(不执行语句)
  • SQL Server数据库的修复SQL语句
  • SQL 语句拦截 P6SPY
  • C#使用带like的sql语句时防sql注入的方法
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 在SQL Server的try...catch语句中获取错误消息代码的的语句
  • sql2005创建远程登录帐户的sql语句分享
  • SQL SERVER 查询正在实行的SQL语句
  • SQL语句中含有乘号报错的处理办法
  • sql无效字符引起的执行sql语句报错的解决方法
  • C#代码验证sql语句是否正确(只验证不执行sql)的方法
  • SQL Server中选出指定范围行的SQL语句代码
  • SQL分组排序去除重复实例
  • php防止sql注入代码实例
  • T-SQL实例 函数结果设置为列别名
  • 怎样不执行SELECT SQL语句即可获得ResultSetMetaData实例????
  • sql语句实例 统计一个特定页面中的相关链接
  • SQL分组排序去重复的小实例
  • 教你怎么使用sql游标实例分享
  • mysqli多条sql语句查询实例
  • MSSQL中递归SQL查询语句实例说明-
  • sql语句not and or执行顺序(实例解析)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性
  • java命名空间java.sql接口rowid的类成员方法: tostring定义及介绍
  • sql2005 大数据量检索分页的sql代码
  • java命名空间javax.sql.rowset接口joinrowset的类成员方法: getwhereclause定义及介绍
  • 微软网站下载的Ms SQL Server2000 JDBC Driver,必须用英文版的SQL server2000吗?
  • java命名空间java.sql接口statement的类成员方法: execute定义及介绍
  • 安装SQL2008时提示删除SQL2005Express工具的解决方法
  • java命名空间java.sql接口resultset的类成员方法: getcursorname定义及介绍
  • 创建 sql server 链接服务器的sql代码
  • java命名空间java.sql接口resultsetmetadata的类成员方法: getcolumntype定义及介绍
  • import Java.sql.*; 报错包 Java.sql 不存在?请帮帮我!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3