创建数据库:
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 Server、Oracle :
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 Server、Oracle :
ALTER TABLE 表名 DROP CONSTRAINT 约束名称
例,为说明此处,先新建一表
CREATE TABLE Course
(
C_ID int not null primary key,
C_Name varchar(30),
student int
);
如让student是表Person中ID的外键,则创建时可这样
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 Age,Name;
聚合函数 COUNT(),MAX(),MIN()等
抑制数据重复DISTINCT
如现向数据表Person中插入一条数据
insert into Person (id,name,gender,age) values (2,'Mary','girl','20');
则 select DISTINCT age from Person 只返回一条结果,否则两条一样的结果。
联合结果集 UNION和UNION ALL