SQL Server SQL语句实例说 明
|
感兴趣的小伙伴,下面一起跟随脚本之家 jb51.cc的小编两巴掌来看看吧! MySQL中模式就是数据库 SHOW DATABASES; show databases; CREATE DATABASE <数据库名> create database TEST; DROP DATABASE <数据库名> drop database TEST; USE <数据库名> use TEST; SHOW TABLES show tables; SHOW [FULL] COLUMNS FROM <表名> show [full] columns from <表名> DESC <表名> desc TEST; SHOW CREATE TABLE <表名> show create table TEST; 查看表TEST的所有信息,包括建表语句 创建基本表: create table STUDENT create table TEACHER 修改基本表: ALTER TABLE <表名> RENAME <修改后表名> alter table TEACHER rename S; ALTER TABLE <表名> ADD COLUMN <列名> <属性类型> alter table TEACHER add column ADDRESS varchar(255); ALTER TABLE <表名> CHANGE COLUMN <列名> <修改后列名> <属性类型> alter table TEACHER change column ADDRESS address varchar(230); ALTER TABLE <表名> DROP [COLUMN] <列名> alter table TEACHER drop [column] address; 删除基本表: DROP TABLE <表名> [RESTRICT|CASCADE]
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); 索引的删除: DROP INDEX <索引名> ON <表名> drop index id_index on teacher; 另外的方法: 新建索引: ALTER TABLE <表名> ADD [UNIQUE]|[CLUSTER] INDEX [<索引名>](<列名> [<次序>],[<列名> [<次序>]]……) alter table teacher add unique index id_index(id asc); 删除索引: ALTER TABLE <表名> DROP INDEX <索引名> alter table teacher drop index id_index; 数据库索引的建立有利也有弊,参考文章: 数据库索引的作用和优点缺点(一)数据库索引的作用和优点缺点(二)数据库建立索引的原则数据查询: SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]…… FROM <表名或视图名> [<表名或视图名>]…… [WHERE <条件表达式>] [GROUP BY <列名1> [HAVING <条件表达式>]] [ORDER BY <列名2> [ASC|DESC] [,<列名3> [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子句常用的查询条件:
select * from teacher where name = 'test'; select * from teacher where salary > 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 '<换码字符>'] _代表任意单个字符。例如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;
COUNT([DISTINCT|ALL]*) 统计元组个数 缺省值为ALL select count(distinct name) from teacher; select count(*) from teacher; select sum(salary) from teacher; select avg(salary) from teacher; select max(salary) from teacher; select min(salary) from teacher;
GROUP BY子句: GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。 select cno,count(*) from teacher group by cno; 如果分组后还要按照一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用HAVING语句指定筛选条件。 select cno,count(*) from teacher group by cno having count(*) >= 4;
连接查询: 连接查询是关系数据库中最主要的的查询,包括等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询和复合条件连接查询等。 等值与非等值连接查询: 连接查询的WHERE子句中用来连接两个表的条件称为连接条件或连接谓词,格式为: [<表名1>.]<列名> <比较运算符> [<表名2>.]<列名2> 其中比较运算符主要有:=,>,!=(或<>)等
select s.*,t.* from student as s,teacher as t where s.teacherid = t.teacherid;
一个表与自身进行连接,称为自身连接 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQL Server INSERT INTO SELECT语句与SELECT INTO FROM语句
- sqlalchemy – Alembic:自动生成迁移时如何忽略其他产品的
- 详解使用rpm命令从CentOS系统盘安装计划任务程序crontab
- 实体框架 – 获取SQL进行自动移动的策略
- sql-server – SQL Server 2005(32位)的双实例是否允许我使
- Linux下MySQL数据库的主从同步复制配置
- SQL Server 数据库备份方法菜鸟教程
- sql – 标签的数据库模式(例如,每个Post都有一些可选标签)
- 如何将OrderBy与GreaterThan Spring JPA一起使用
- 数据库设计 – 数据库日期字段 – 命名约定
