您的位置:首页 > 数据库 > MySQL

MySQL详解,第一章

2016-01-22 14:42 537 查看
目录

第一章
sql基础... 1

sql分类:...
1

1.DDL语句:...
1

2.DML语句...
3

3.DCL语句...
5

第一章 sql基础

sql分类:

1.DDL语句:

1.1.定义

DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象;常用的sql语句关键字包括create、drop、alter等;

1.2简单说明

DDL语句简单来说就是对数据库内部对象进行创建、删除、修改等操作的语言;其不涉及表的定义和节后的修改,更不会涉及其他对象;一般数DBA(数据库管理员)用的比较多。

1.3使用

1.3.1创建数据库
进入MySQL命令窗体,输入-u+用户名 –p 命令,然后输入密码链接数据库;

创建数据库命令:create database +数据库名;例:create database sunshine;

查看等钱用户下的数据库命令:show databases;

使用数据库命令:use +数据库名例:use sunshine;

1.3.2删除数据库
删除数据库命令:drop database +数据库名称例:drop database sunshine;

1.3.3创建表
创建表命令:create table 表名( 字段名字段类型 约束 ,主键约束);

例:CREATE TABLE test (

Id int(11) NOT NULL ,

name varchar(20) NULL ,

sex varchar(5) NULL ,

age int(3) NULL ,

PRIMARY KEY (id)

);

查看表结构命令:desc +
表名例:desc test;

查看创建表的sql语句命令:show creat table +表名 \g;

例:show create table test\g;

1.3.4删除表
删除表命令:drop table +表名; 例:drop table test;

1.3.5修改表
1.3.5.1修改表(字段)类型
修改表类型命令:alter table +表名 modify
字段名类型约束;

例:alter table test modifysex varchar(20);

1.3.5.2增加表字段
增加表字段命令:alter table
表名 add column
字段名类型约束;

例:alter table test addcolumn head varchar(20);

1.3.5.3删除表字段
删除表字段命令:alter table
表名 drop column
字段名;

例:alter table test dropcolumn head;

1.3.5.4修改表字段名
修改表字段名称命令:alter table
表名 change
原有字段名新字段名字段类型;

例:alter table test changesex sexs int(2);

1.3.5.5修改字段顺序(放在最前面或者放在某个字段后面)
修改表字段顺序命令:alter table
表名 modify
字段名类型 first;|| alter table
表名 modify
字段名类型 after
字段名;

例:alter table test modifyname varchar(20) first;|| alter table test modify name varchar(20) after id;

1.3.5.6修改表名
修改表名命令:alter table
原有表名 rename
新表名;

例:alter table test renameuser;

2.DML语句

2.1定义

DML(Data Manipulation Language)语句:数据库操纵语句,用于添加、修改、删除和查询数据库的记录;常用的sql语句关键字包括insert、delete、update、select等;

2.2简单说明

也就是对表的CRUD操作。

2.3使用

2.3.1插入记录
插入记录命令:insert into 表名 (字段名,字段名…) values (字段值,字段值…);

例:insert into user(id,name,age) values (1,'sunshine',22);

2.3.2更新记录
更新命令:update 表名 set
字段=字段值条件

例: update user setname='smile' where id = 1;

2.3.3删除记录
删除命令:delete from 表名条件

例:delete from user whereid = 1;

2.3.4查询记录
2.3.4.1查询特定字段
查询命令:select 字段名 from
表名条件;

例:select id , name , agefrom user where id = 1;

2.3.4.2查询全部字段
命令:select * from 表名条件;

例:select * from userwhere id = 1;

2.3.4.3查询不重复的记录
命令:select distinct 字段名 from
表名条件;

例:select distinct namefrom user;

2.3.4.4多条件查询
命令:select * from 表名 where
条件一 and
条件二

例:select * from userwhere name=’smile’ and age=22;

2.3.4.5排序和限制
排序查询命令:select * from 表名 order by
字段排序方式

例:select * from userorder by id DESC;

关键字:DESC:降序排序 ASC:升序排序

查询特定条数命令:select * from 表名 limit
开始条数,结束条数

例:select * from userlimit 1,3;

2.3.4.6聚合
常用的聚合函数:sum(求和)、count(*)(记录数)、max(最大值)、min(最小值)

关键字:

group by :表示要进行分类的聚合字段 比如要按照年龄统计人数,那么年龄就要写到group by 后面。

with rollup:可选语法,表明是否对分类聚合后的结果进行再汇总

having:表示对分类后的结果再进行条件的过滤

2.3.4.7表连接
用处:当需要显示多个表中的字段的时候,就可以用表连接来实现这样的需求。

说明:表连接主要分为内连接和外连接,主要的区别是:内连接仅选出两张表中相互匹配的记录,而外链接会选出其他不匹配的记录。我们常用的是内连接;内连接又分为左链接和右连接;

定义:左连接(left join):包括所有左表中的记录甚至是右表中没有和他匹配的记录。

右连接(rightjoin):包含所有右表中的记录甚至是左表中没有和他匹配的记录。

例:创建用户表 emp 其中字段有id(主键), name(姓名) , birthday(生日) , sal(薪水) , deptno(部门);创建部门表dept 其中字段有 deptno(主键) , deptname(部门名称);

查询所有用户名和所在部门的名称:select name , deptnamefrom emp left join dept on emp. deptno = dept. deptno;(左连接)

selectname , deptname from dept right join emp on dept. deptno = emp. deptno;(右连接)

2.3.4.8子查询
用处:有时候当进行查询的时候需要用到的条件是列一个select的结果,这个时候就可以使用子查询。

关键字:in(包含), not in(不包含), =(等于), !=(不等于), exists(存在), not exists(不存在)等;

例:从emp表中查出所有部门在dept表中的所有记录

select* from emp where deptno in(select deptno from dept);(如果子查询记录数唯一,还可以用=代替in)

2.3.4.9联合查询
用处:有时候我们会遇到分别查询两个表的记录,查出之后再讲两个表的数据合起来显示,这时就用到了联合查询。

关键字:union:将union all后的结果进行一次distinct,取出重复后再显示。

unionall:直接把查询结果联合在一块显示。

查询emp表和dept表中的部门编号集合(去除重复):

selectdeptno from emp union select deptno from dept;

查询emp表和dept表中的部门编号集合(不去除重复):

selectdeptno from emp union all select deptno from dept;

3.DCL语句

3.1定义

DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句包括grant、revoke等;

3.2简单说明

简单来说,DCL语句主要是DBA用来管理系统中的对象权限时使用,一般开发人员很少用到。

3.3使用

创建一个数据库用户user01,具有对sunshine数据库中所有表有select和insert权限:

例:grant select , inserton sunshine.* to ‘user01’@’localhost’ identified by ‘0000’;

权限变更,收回user01的insert权限:

例:revoke insert onsunshine.* from ‘user01’@’localhost’;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: