文档章节

MySQL使用教程(1)

d
 duan_3826
发布于 2017/05/12 22:28
字数 1981
阅读 4
收藏 0

1,sql语句分类

1.1,DDL(Data Definition Languages)语句:数据定义语句,用于定义不同的数据段、数据库、表、列、索引等数据库对象,常用关键字主要是create, drop, alter等;

1.2,DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,常用关键字主要是insert , delete, update, select 等;

1.3, DCL(Data Control Language) 语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,用于定义数据库、表、字段、用户的访问权限和安全级别,常用关键grant, revoke等。

2, DDL语句

2.1 创建数据库

MySQL服务一般都是随开机自动启动的,打开命令行窗口,输入: mysql -u root -p  回车,输入密码, 回车,启动MySQL。其中在上述命令中,mysql 代表客户端命令,"-u"后面跟连接的数据库用户,默认一般用root,"-p" 表示需要输入密码。如果命令输入正确,密码正确,进入MySQL欢迎界面,其中可以用";"或"\g" 表示sql命令的结束;"\h"或"help;"命令来显示帮助;"\c"命令清除命令行buffer。

创建数据库命令:create databases test1;然后可以使用show databases;命令查询所有数据库,看道自己刚刚创建的数据库;在使用查询所有数据库时,会显示很多数据库,其中,information_schema主要存储了系统中的一些数据库对象信息,比如用户表信息,列信息,权限信息,字符集信息,分区信息;mysql存储了系统的用户权限信息;test  系统自动创建的测试数据库,任何用户都可以使用。

可以使用命令drop  database test1;删除刚才 创建的数据库。

2.2 创建表

创建表必须在指定的数据库中,如果我想在刚刚创建的数据库test1中创建表,必须先执行命令:use test1;然后才能执行创建表的语句,例如: create table emp(ename  varchar(10), hiredate date, sal decimal(10,2),  deptno int(2));表创建完以后执行show tables;可以看到自己创建的表已经存在了。使用desc emp;可以查看该表的详细信息。

如果删除表执行:drop  table  emp;

2.3 修改表

2.3.1修改表类型

如修改emp表的ename字段定义,将varchar(10) 改为varchar(20),执行 alter table  emp  modify  ename  varchar(20);  然后在desc  emp; 可以看到enamel的类型已经发生变化。

2.3.2  增加表字段

例如在表emp中增加字段age 类型为int(3);执行 alter table  emp  add  column  age  int(3);然后执行desc  emp;可以表放入字段已经增加。

2.3.3 删除表字段

例如将字段age删除,执行命令:alter  table  emp  drop  column  age ;  然后执行desc  emp;发现age字段已经删除。

2.3.4 字段改名 

例如将age该为age1,同时修改字段类型为int(4),执行:alter table  emp  change  age  age1  int(4);  然后执行desc  emp; 查看表字段名已经发生变化。

注意:change  和modify都可以修改表的定义,不同是change后面需要写两次列名,不方面,但是change优点是可以修改列名称,modify不能。

2.3.5 修改字段排列顺序

默认情况下新增字段加在后面,但是我们也可以修改字段顺序:例如将新增的字段 birth date  加在ename之后,需要执行:alter  table  emp  add  birth  date  after  ename;

修改现有字段例如将age字段放在最前面,执行命令: alter  table  emp  modify  age  int(3)  first;

2.3.6  更改表名

将表名emp更改为emp1,执行命令:alter  table  emp  rename  emp1;

3 DML语句

3.1 插入记录

表创建完以后就可以往里面插入数据了,例如往表emp中插入数据,执行命令:insert  into  emp(ename, hiredate, sal, deptno)  values('lisa', '2017-05-12', '2000', 2);

插入数据时,含可空字段,非空但是含有默认值的字段,自增字段,可以不用在insert 后的字段列表里面出现,values后面只写对应字段名称的value,这些没写的字段可以自动设置为null,默认值,自增的下一个数字,大大缩短sql语句的复杂性。

3.2  更新记录

表里的记录值可以通过update命令进行更改,

例如将emp中ename为"lisa"的薪水"sal"从 2000更改为5000,执行命令:update emp  set  sal = 5000 where ename= 'lisa';update可以同时更新多个表中数据;例如更新emp表中字段sal和dept中的字段depname,执行命令:update  emp  a ,dept  b  set a.sal = a.sal * b.deptno , b.deptname = a.ename  where a.deptno = b.deptno;

3.3  删除记录

如果记录不再需要,可以使用delete删除,例如删除emp中ename = mack的记录,执行命令:delete from  emp  where  ename = 'mack';

3.4  查询记录

最简单查询,就是查询记录,例如查询emp表,执行命令:select  *  from  emp;

3.4.1  查询不重复的记录

有时需要将表中数据去掉重复的记录显示出来,需要使用关键字distinct,例如在emp表中执行:select  distinct  deptno  from  emp;

3.4.2 条件查询

例如查询所有deptno为1的记录,执行命令:select  *  from  emp  where  deptno = 1;(还可以使用>、<、>=、<=、!=等比较运算符,还可以多个条件之间用or 、and等多个条件联合查询)例如:select  *  from  emp  where  deptno = 1 and sal < 3000;

3.4.3 排序和限制

有时候需要对数据进行排序操作,例如将emp表中的记录按照工资高低进行显示,执行命令:select  *  from  emp  order  by  sal;如果排序子段的值一样,则值相同的字段按照第二个排序子段进行排序。如果对排序的数据我们只需要显示一部分,则使用limit,显示emp表中按sal排序后的前3条记录,执行命令:select  *  from emp  order  by  sal  limit 3; 如果从第二条记录开始显示3条记录,则是........limit 1, 3;

3.4.4  聚合

很多情况下用户需要进行一些汇总操作,例如要统计emp表中公司的总人数,执行命令:select  count(1)  from  emp;  或统计各个部门的人数,执行命令:select deptno , count(1)  from  emp  group  by  deptno;或者既要统计个部门人数,又要统计总人数,执行命令:select  deptno , count(1) from  emp group  by  deptno  with  rollup;

3.4.5  表连接

表连接分为内连接和外连接,其中外连接又分为左连接和右连接。

(内连接)例如要查询所有雇员的名字和所在部门的名称,因为雇员名称和部门分别在表emp和dept表中,执行命令:select  ename ,  deptname  from  emp ,dept  where  emp.deptno = dept.deptno;

左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录。

右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录。

例如查询emp中的所有用户名和所在部门名称,执行命令: select  ename  ,  deptname  from emp  left join  dept  on  emp.deptno = dept.deptno;(右查询类似)

3.4.6  子查询

例如从emp表中查询出所有部门在dept表中的所有记录,执行命令,select  *  from  emp  where  deptno  in(select  deptno  from  dept);如果查询记录数唯一,还可以执行..........deptno = (select  deptno  from  dept).

3.4.7  记录联合

我们经常会碰到这样的应用,将两个表的数据按照一定的查询条件查询出来以后,将结果合并到一起使用,这个时候用到union 和union  all关键字来实现这样的功能,例如将emp表和dept表中的部门编号的集合显示出来,执行命令:select  deptno  from  emp  union  select  deptno  from  dept;

 

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

未完待续。。。。

 

 

 

© 著作权归作者所有

d
粉丝 0
博文 14
码字总数 19715
作品 0
私信 提问
MySQL存储过程教程

在本节中,您将逐步学习如何在MySQL中开发存储过程。 首先,我们向您介绍存储过程概念,并讨论何时应该使用它。然后,我们向您演示如何使用过程代码的基本元素,例如:创建存储过程,if-else...

易百教程
2016/10/15
110
0
在Linux CentOS7系统中搭建LNMP

LNMP就是Linux+Nginx+MySQL+PHP,既然是在Linux CentOS7那么Linux就是已经安装好了。所以接下百度一下接下来的教程,整理测试如下: 教程是centos6.2的有点老,将就着看看,教程:https://www...

苟富贵,无相忘
2018/08/02
0
0
Mysql8.0.12安装教程方法 Mysql8.0.12安装教程

Mysql8.0.12安装教程方法 Mysql8.0.12安装教程 MySql安装教程 - 首先,MySql官网下载地址: 官网下载地址 主要下载server版本的 Archive版本,不需要安装解压即可使用 不需要登录注册,直接跳...

推荐码发放
2018/11/14
0
0
ALinq 使用教程(卓越的 Linq to DB 解决方案,移植 Linq to SQL 的利器)

ALinq 是什么? ALinq 是一个支持 Linq 的 ORM ,不但完整实现了 Linq to SQL 的全部功能和 API,注意,是完整实现!!!也就是说,Linq to SQL 中的功能和函数,你都可以在 ALinq 中找到,使...

长平狐
2013/06/17
452
0
【MySQL】Win10安装MySQL-5.7.24-winX64 启动服务器失败并且没有错误提示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Jinlong_Xu/article/details/86557271 今天安装mysql-5.24-winX64后,在bin目录下运行 net start mysql, 出现...

Jinlong_Xu
01/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

新架构、新角色:TiDB Community Upgrade!

作者:Jian Zhang 经过几年的发展,TiDB 社区已经逐渐成熟,但是随着社区的发展壮大,我们逐渐感受到了现在社区架构上的一些不足。经过一系列的思考和总结,我们决定升级和调整目前社区组织架...

TiDB
32分钟前
6
0
jquery qrcode库提示not function

jquery qrcode 这个库能用,但是必须在初始化的时候,官方给的使用方法是 引入qrcode的库文件后,在js中写以下 html <div id="qrcode"></div> js jQuery('#qrcode').qrcode({ render: ......

shikamaru
37分钟前
14
0
MySQL数据库去重的简单方案

利用 distinct 对需要处理的字段进行去重 select distinct 字段名 from 表名 利用group by select * from 表名 group by 字段名 利用having select * from 表名 group by 字段名 having 字段...

FeanLau
39分钟前
9
0
字符串转换成整数

实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该...

蔚蓝_晴天
51分钟前
8
0
Eureka客户端续约及服务端过期租约清理源码解析

在之前的文章:EurekaClient自动装配及启动流程解析中,我们提到了在构造DiscoveryClient时除了包含注册流程之外,还调度了一个心跳线程: scheduler.schedule( new Ti...

Java学习录
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部