常用的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,列名2FROM 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 (NOTIN('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语句的主要内容,如果未能解决你的问题,请参考以下文章

MySQL高级SQL语句

求一条sql语句,按照成绩降序排序,并显示名次,如123

sql语句怎么让一个字符串的内容有升序有降序

SQL语句取最后100条数据

mssql指定的ID排在最前面,剩余的按照降序排列。sql语句该怎么写呀?

常用sql语句--DQL