一、数据定义语言(DDL):定义数据库中的数据对象
建立数据库操作:
语法:create database 数据库名
建立表操作:
语法:create table 表名(列名1 列类型 [<列的完整性约束>],列名2 列类型 [<列的完整性约束>], ... ... );
显示表结构操作:
语法:describe 表名;或 desc 表名;
删除表操作:
语法:drop table [if exists] tab_name [,tab_name]...
删除数据库操作:
语法:drop database [if exists] db_name
更改表结构操作:
语法:alter table 表名 action;
说明:action 可以是如下语句:
add 列名 建表语句 [first | after 列名]
可以为表添加一列,如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
add primary key (列名)
为表添加一个主键,如果主键已经存在,则出现错误
add foreign key(列名) references 表名(列名)
为表添加一个外键
alter 列名 set default 默认值
可以更改指定列默认值
change 旧列名 新列名 <建表语句> [first | after 列名]
可以更改列类型和列名称,如果原列的名字和新列的名字相同
modify 列名 <建表语句> [first | after 列名] 和change的作用相同
drop 列名 //可以删除一列
drop primary key //可以删除主键
engine 类型名 //可以改变表类型
rename as 新表名 //可以将表名更改
二、数据操纵语言(DML):操纵数据实现对数据库的基本操作(查询、插入、删除和修改)
插入记录操作:
INSERT [INTO] <表名> [列名] VALUES <值列表>
注意事项1:每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是否有效将按照整行的完整性的要求来检验;
注意事项2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配;
注意事项3:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;
注意事项4:具有缺省值的列,可以使用DEFAULT(缺省)关键字来代替插入的数值
插入多行数据:
INSERT INTO <表名>(列名)VALUES(<列名值>), (<列名值>), (<列名值>)……
INSERT INTO <表名>(列名)SELECT <列名>FROM <源表名>
例:INSERT INTO TongXunLu (‘姓名‘,‘地址‘,‘电子邮件‘) SELECT SName,SAddress,SEmail FROM Students
更改记录操作
UPDATE <表名> SET <列名 = 更新值> [WHERE <更新条件>]
删除记录操作
DELETE FROM <表名> [WHERE <删除条件>]
查询记录操作
from子句:指定查询数据的表
where子句:查询数据的过滤条件
group by子句:对匹配where子句的查询结果进行分组
having子句:对分组后的结果进行条件限制
order by子句:对查询结果结果进行排序,后面跟desc降序或asc升序(默认)。
limit子句:对查询的显示结果限制数目
procedure子句:查询存储过程返回的结果集数据
在WHERE子句中使用谓词 :
BETWEEN AND :在两数之间
NOT BETWEEN AND :不在两数之间
IN <值表> :是否在特定的集合里(枚举)
NOT IN <值表> :与上面相反
LIKE :是否匹配于一个模式
IS NULL(为空的)或 IS NOT NULL(不为空的)REGEXP : 检查一个值是否匹配一个常规表达式。
多表查询—分类
内连接(INNER JOIN)
外连接
——左外联结 (LEFT JOIN)
——右外联结 (RIGHT JOIN)
多表查询—内连接
SELECT Students.SName, Sc.CourseID, Sc.Grade
FROM Students,Sc
WHERE Students.SNo = Sc.StudentID
多表查询—三表内连接
SELECT S.SName AS 姓名, CS.CName AS 课程, C.Grade AS 成绩
FROM Students AS S
INNER JOIN Sc AS C ON (S.SCode = C.StudentID)
INNER JOIN Course AS CS ON (CS.CourseID = C.CourseID)
多表查询—左外连接
SELECT S.SName,C.CourseID,C.Grade
From Students AS S
LEFT JOIN Sc AS C
ON C.StudentID = S.SNo
多表查询—右外连接
SELECT Titles.Title_id, Titles.Title, Publishers.Pub_name
FROM titles
RIGHT OUTER JOIN Publishers
ON Titles.Pub_id = Publishers.Pub_id