SQL (Structured Query Language)结构化查询语言总结(一)

创建数据库:

CREATE DATABASE 数据库名称;

例,CREATE DATABASE DB;

删除数据库

DROP DATABASE 数据库名称;

例,DROP DATABASE DB

 

 

创建数据表:

CREATE TABLE  表名

(

列名 列数据类型,

列名 列数据类型,

……

);

例,CREATE TABLE  Person

(

ID int

Name varchar(20),

Gender varchar(5),

Age int

);

更新数据表结构:

添加列 

ALTER TABLE 表名 ADD 列名 列数据类型

删除列 

ALTER TABLE 表名 DROP COLUMN 列名

修改列 

ALTER TABLE 表名 ALTER COLUMN 列名 列数据类型

例,ALTER TABLE Person ALTER COLUMN Name Varchar(30);

删除数据表:(数据和结构全部删除,表从此不再存在)

DROP TABLE 表名 ;

例,DROP TABLE Person

 

 

主键约束

建表时

MySQL:

CREATE TABLE 表名

(

主键列名 列数据类型  NOT NULL,

列名     列数据类型,

……,

PRIMARY KEY (主键列名)

)

SQL Server Oracle:

CREATE TABLE 表名

(

主键列名 列数据类型 NOT NULL PAIMARY KEY,

列名 列数据类型,

……

)

注:由于主键不能为空,在创建时必须加上NOT NULL

如果需要命名 PRIMARY KEY 约束,以及为多个列定义 PRIMARY KEY 约束:

MySQL SQL Server Oracle :

CREATE TABLE 表名

(

列名 列数据类型,

列名 列数据类型,

……,

CONSTRAINT 约束名称 PRIMARY KEY (列名1,列名2)

)

在已有的表中新添主键

单一列

ALTER TABLE 表名 ADD PRIMARY KEY (主键列名);

多个列

ALTER TABLE 表名 ADD CONSTRAINT 约束的名称 PRIMARY KEY (主键列1名,主键列2名,……)

例,ALTER TABLE Person ADD CONSTRAINT person_pk PRIMARY KEY (ID,Name)

单一列是多个列的特殊形式,例,可以这样写,ALTER TABLE Person ADD PRIMARY KEY (ID),也可以这样写,ALTER TABLE Person ADD CONSTRAINT person_pk PRIMARY KEY (ID);前一个是简化版,缺省了约束名称。

删除主键

MySQL:

ALTER TABLE 表名 DROP PRIMARY KEY  

SQL Server Oracle :

ALTER TABLE 表名 DROP CONSTRAINT 约束名称

例,ALTER TABLE Person DROP CONSTRAINT person_pk;

 

 

非空约束  NOT NULL 如前所示,同。

 

 

默认值约束

用于向列中插入默认值。如果没有赋予值,那么默认值将添加到新纪录中。

CREATE TABLE 表名

(

列名 列数据类型,

列名 列数据类型 DEFAULT 默认值,

……

)

例,CREATE TABLE Person

(

ID int NOT NULL PRIMARY KEY,

Name varchar(20),

Gender varchar(5) DEFAULT 'GIRL'

);

 

 

外键约束

建表时

MySQL:

CREATE TABLE 表名

(

列名 列数据类型,

列名 列数据类型,

……,

FOREIGN KEY (上述列名之一) REFERENCES 外表名称(外表的列名称)

)

SQL ServerOracle :

CREATE TABLE 表名

(

列名 列数据类型,

列名 列数据类型,

……,

列名 列数据类型 FOREIGN KEY REFERENCES 外表名称(外表的列名称)

)

如果需要命名外键约束,以及为多个列定义外键约束,

CREATE TABLE 表名

(

列名 列数据类型,

列名 列数据类型,

CONSTRAINT 约束名称 FOREIGN KEY (该表列名1,该表列名2)

REFERENCES 外表名称(外表的列名称1,外表的列名称2)

)

表已创建,增加外键约束

ALTER TABLE 表名

ADD FOREIGN KEY (该表列名)

REFERENCES 外表名称(外表的列名称)

如果需要命名外键约束,以及为多个列定义外键约束:

ALTER TABLE 表名

ADD CONSTRAINT 约束名称 FOREIGN KEY (该表列名1,该表列名2)

REFERENCES 外表名称 (外表的列名称1,外表的列名称2)

删除外键约束

MySQL:

ALTER TABLE 表名 DROP FOREIGN KEY 约束名称

SQL ServerOracle :

ALTER TABLE 表名 DROP CONSTRAINT 约束名称

例,为说明此处,先新建一表

CREATE TABLE Course

(

C_ID int not null primary key,

C_Name varchar(30),

student int

);

如让student是表PersonID的外键,则创建时可这样

CREATE TABLE Course

(

C_ID int not null primary key,

C_Name varchar(30),

student int,

CONSTRAINT FK_Cour_Per (student) FOREIGN KEY REFERENCES Person(ID)

);

删除外键约束

ALTER TABLE Course DROP CONSTRAINT FK_Cour_Per

 

增删改数据

插入数据

INSERT  INTO 表名 (列名,列名,列名,……) values (值,值,值,…… )

例,INSERT INTO Person (id,name,gender,age) values (1,'Tom','boy','20');  注:单引号

删除数据

DELETE  FROM 表名 WHERE 表达式条件;

例,DELETE FORM Person where id = 1;

修改数据

UPDATE 表名 SET 列名 = 值,列名 = 值,……  WHERE 条件表达式;

例,UPDATE Person SET name = 'Bob'  WHERE id = 1;

 

 

------------------------------------------------------------------------------

 

查询

基本方式

select  ...  from  ...  where ... (and) (or) ... (order by) ...

 

单字符匹配 '_'  例,   select * from person where name like '_ob'; 

多字符匹配 '%'  例,   select * from person where name like 'b%';

 

between ... and ...    select * from person where age between 10 and 30;

in                     select * from person where name in ('Bob','Tom');

 

数据分组GROUP BY

需要分组的所有列都必须位于GROUP BY子句的列名列表中,也就是没有出现在GROUP BY

子句中的列(聚合函数除外)是不能放到SELECT语句后的列名列表中的。比如下面的SQL语句

是错误的:

SELECT Age,Name FROM Person

GROUP BY Age

必须这样:

SELECT Age,Name FROM Person

GROUP BY AgeName

 

聚合函数 COUNT(),MAX(),MIN()

 

抑制数据重复DISTINCT

如现向数据表Person中插入一条数据

insert into Person (id,name,gender,age) values (2,'Mary','girl','20');

select DISTINCT age from Person 只返回一条结果,否则两条一样的结果。

 

联合结果集 UNIONUNION  ALL

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值