MySQL(一)

本文介绍了SQL语言中的DDL、DML和DCL语句的具体用法,包括如何创建、删除和修改数据库及表,如何插入、更新和删除记录,以及如何进行权限管理。

首先看看SQL(结构化查询语言)的分类:

DDL语句:数据定义语言,这些语句定义了不同的数据段、表、列、索引等数据库对象的定义。(createdropaltershow,desc)

DML语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性。(insertdeleteupdateselect)

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.插入记录

1insert  into  tablename  values(.....................);

2)指定相应的段名,按位置插入(没有的用NULL代替)

insert  into  tablename(column,....,column)  values(..........);

3)一次性插入多条语句:

Insert into  tablename   values

                                           (....................),

                                          (....................),

                                          (....................),

                                          (....................);

扩展:insertselect语句:Insert  into  newtable(a,b,c)  select  d,e,f   from  oldtable;//old找出相应的三列插入到new里。(相当于复制数据)


2. 更新记录

1update  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]..]

descasc是排序顺序关键字,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语句的结果,这时候用子查询。

用于子查询的关键字主要包括innot in=!=existsnot  exists等。

Ey:emp表中查询出所有部门在dept表中的所有记录:


(7)记录联合。

将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,这时候用unionunion  all关键字来实现这样的功能。

语法:

Select  *from  t1

Union/union  all

Select  *from  t2

.............

Union/union  all

Select  *from  tn

unionunion  all的主要区别是union  all是把结果集合并在一起,而union是将union  all后的结果进行一次distinct,去除重复记录后的结果。


三.DCL语句

1.grant:授权。

2.revoke:回收权限。

自主存储控制:相当于数据的授权。

Root授予Z1权限,Z1授予Z2权限,Z2授予Z3权限,但是Z1不能回收Z3的权限,不能跨级别回收。Root---->Z1------>Z2------->Z3

强制存储控制:数据库分级别,可以查看比自己以下级别的信息。

EyA,B,C,D  B只可以访问C,D的信息。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值