常用的SQL语句
Posted yuanzhijing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用的SQL语句相关的知识,希望对你有一定的参考价值。
说明:为了帮助自己记忆,于是就做了一些常用SQL语句的整理。
1.创建数据库:
CREATE DATABASE database_name;
2.删除数据库:
DROP DATABASE database_name;
3.创建新表:
CREATE TABLE table_name(<列名1><数据类型1>[列级完整性约束条件1],
<列名2><数据类型2>[列级完整性约束条件2],
……);
eg:
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),
);
根据已有的表创建新表:
create table tab_new like tab_old; //使用旧表创建新表
create table tab_new as select 列名1,列名2 … FROM tab_old definition only;
4.删除新表:
DROP TABLE table_name [RESTRICT | CASCADE];
选择RESTRICT,则该表的删除是有限制条件的:欲删除的基本表不能被其他表的约束所引用(如check,foreign key等约束),不能有视图,不能有触发器,不能有存储过程或函数等。如果存在这些依赖该表的对象,则此表不能被删除。
选择CASCADE,则该表的删除没有限制条件,在删除该表的同时,相关的依赖对象,例如视图,都将被一起删除。
DROP TABLE Student CASCADE; //删除Student表
5.修改基本表:
ALTER TABLE tablename
[ADD<列名><数据类型>[完整性约束条件]]
[DROP<完整性约束名>]
[MODIFY COLUMN <列名><数据类型>]
eg1: 向Student表增加“入学时间”列,其数据类型为日期
ALTER TABLE Student ADD S_entrance DATE;
eg2: 将年龄的数据类型由字符型改为整数
ALTER TABLE Student MODIFY COLUMN Sage INT;
eg3: 增加Student表Sname必须取唯一值的约束条件
ALTER TABLE Student ADD UNIQUE(Sname);
6.数据查询:
SELECT [ALL | DISTINCT] <目标列表达式> [,<目标列表达式>]...
FROM <表名或视图名> [, <表名或视图名>]...
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC | DESC]];
查询名为Bill Gates的学生信息:
SELECT * from Student WHERE Sname = 'Bill Gates';
查询名字中有Bill的学生信息:
SELECT * from Student WHERE Sname like '%Bill%';
查询年龄在20~23岁(包括20岁与23岁)之间的学生的信息:
SELECT * from Student WHERE Sage BETWEEN 20 AND 23;
查询(不)在计算机系(CS)、信息系(MA)和数学系(IS)学生的姓名和性别:
SELECT Sname, Ssex FROM Student WHERE Sdept (NOT)IN('CS', 'IS', 'MA');
查询没有年龄信息的学生:
SELECT * FROM Student WHERE Sage IS NULL;
按学生年龄值的升序(降序)检索出全部学生的信息:
SELECT * FROM Student ORDER BY Sage ASC(DESC);
先按专业升序排序,然后同一专业的学生再按年龄降序排序,并输出全部学生信息:
SELECT * FROM Student ORDER BY Sdept, Sage desc; //注意:默认是升序
LIMIT子句:
SELECT * FROM Student LIMIT 5,10; //检索记录行6-15
SELECT * FROM Student LIMIT 5; //检索前5个记录行
总数: select count(*) as totalcount from table;
求和: 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;
查询表中具有相同年龄的每个组的人数:
select Sage, count(*) from Student group by Sage;
select Sage, count(*) from Student group by Sage having count(*) > 1;
7.连接查询:
若有表Student, SC, 要求查询每个学生及其选修课程的情况:
//自然连接、内连接
SELECT Student.*, SC.*;
FROM Student, SC WHERE Student.Sno = SC.Sno;
若某个学生没有选课,依然将其保存到结果中(在SC表的属性上填空值):
//这时要使用外连接
SELECT Student.*, SC.*
FROM Student LEFT JOIN SC ON(Student.Sno=SC.Sno);
8.数据操纵:
将一个新学生元组插入Student表中:
INSERT INTO Student(Sno, Sname, Ssex, Sdept, Sage)
VALUES('201009011', '张三', 'M', 'CS', 23);
将学生201009011的年龄改为22岁:
UPDATE Student SET Sage=22 WHERE Sno='201009011';
删除学号为201009011的学生记录:
DELETE FROM Student WHERE Sno='201009011';
以上是关于常用的SQL语句的主要内容,如果未能解决你的问题,请参考以下文章