首先看看SQL(结构化查询语言)的分类:
DDL语句:数据定义语言,这些语句定义了不同的数据段、表、列、索引等数据库对象的定义。(create,drop,alter,show,desc等)
DML语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。(insert,delete,update,select)
DCL语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句主要定义了数据库、表、字段、用户的访问权限和安全级别。(grant,revoke)
一.DDL语句
启动mysql服务器。(可以看到mysql的版本号)。

1. 创建数据库
(1)创建数据库:create database dbname
(2)查看数据库下创建的所有表:show tables

2.删除数据库
(1)删除数据库:drop database dbname
3.创建表
(1)创建一张表的基本语法:
Create table tablename(column_name_1 column_type_1 constraints,
column_name_2 column_type_2 constraints,
column_name_3 column_type_3 constraints,
);
Column_name是列的名字,column_type是列的数据类型,contraints是约束条件

查看表的定义:desc tablename
为了更全面的查看表的信息:show create table student \G;


4. 删除表
drop table tablename;
5. 修改表
(1)修改表类型:
alter table tablename modify column column_typename [first | after colname]

(2)增加表字段
alter table tablename add column column_typename [first | after colname]

(3)删除表字段
alter table tablename drop column col_name

(4)字段改名
alter table tablename change old_name new_name column_type [first | after colname]

(5)表改名
Alter table old_tablename rename [to] new_tablename

二.DML语句
1.插入记录
(1)insert into tablename values(.....................);
(2)指定相应的段名,按位置插入(没有的用NULL代替):
insert into tablename(column,....,column) values(..........);
(3)一次性插入多条语句:
Insert into tablename values
(....................),
(....................),
(....................),
(....................);
扩展:insert加select语句:Insert into newtable(a,b,c) select d,e,f from oldtable;//从old找出相应的三列插入到new里。(相当于复制数据)

2. 更新记录
(1)update tablename set filed1=value1,.... [where condition]
Update也可以更新多个表:

3. 删除记录
(1)单表删除:delete from tablename [where condition]
(2)多表删除:Delete t1,t2 from t1,t2 [where tablename1.column==tablename2.column]
4. 查询记录
将记录全部选出:select * from tablename;《表示将所有的记录都选出来》
查询部分字段信息:select column1,column2 from tablename;
(1)查询不重复的记录。
将表中的记录去掉重复后显示出来,用distinct关键字

(2)条件查询
结果集中将符合条件的记录列出来。用where关键字来实现,where后面是用比较运算符=,<,>,!=等的比较,多个条件还可以用or,and等逻辑运算符进行多条件联合查询。

(3)排序和限制
1>.用关键字order by来实现
Select * from tablename [where condition] /[order by column [desc|asc]..]
desc和asc是排序顺序关键字,desc表示按照字段进行降序排列,asc则表示升序排列,默认的是升序排列。

2>.对于排序后的记录,如果希望只显示一部分,而不是全部,则使用limit关键字来实现。
Select ........[limit offset_start,row_count]

(4)聚合
Select [column1,...columnn] fun_name
From tablename
[where where_contition]
[group by column1,column2,.....,columnn]
[with rollup]
[having where_contition]
fun_name:聚合函数(sum,count,max,min)
group by:表示要进行分类聚合的字段(比如学生按照年龄进行分类,group by后面应写age)
with rollp:是可选语法,表明是否对分类聚合后的结果进行在汇总。
having:表示对分类后的结果再进行条件的过滤。
(5)表连接
用表连接来实现同时显示多个表中的字段。
大类分为:内连接:仅选出两张表中互相匹配的记录。
外连接:选出其他不匹配的记录。
外连接分为:左连接:包含所有的左边表中的纪录甚至是右边表中没有和它匹配的纪录。
右连接:包含所有的右边表中的纪录甚至是左边表中没有和它匹配的纪录。
Ey:查询emp中所有用户名和所在部门名称:

(6)子查询。
当查询时需要的条件是另外一个select语句的结果,这时候用子查询。
用于子查询的关键字主要包括in、not in、=、!=、exists、not exists等。
Ey:从emp表中查询出所有部门在dept表中的所有记录:

(7)记录联合。
将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这时候用union和union all关键字来实现这样的功能。
语法:
Select *from t1
Union/union all
Select *from t2
.............
Union/union all
Select *from tn
union和union all的主要区别是union all是把结果集合并在一起,而union是将union all后的结果进行一次distinct,去除重复记录后的结果。

三.DCL语句
1.grant:授权。
2.revoke:回收权限。
自主存储控制:相当于数据的授权。
Root授予Z1权限,Z1授予Z2权限,Z2授予Z3权限,但是Z1不能回收Z3的权限,不能跨级别回收。Root---->Z1------>Z2------->Z3
强制存储控制:数据库分级别,可以查看比自己以下级别的信息。
Ey;A,B,C,D B只可以访问C,D的信息。
本文介绍了SQL语言中的DDL、DML和DCL语句的具体用法,包括如何创建、删除和修改数据库及表,如何插入、更新和删除记录,以及如何进行权限管理。

6759

被折叠的 条评论
为什么被折叠?



