MySQL使用教程(1)

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;

 

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

未完待续。。。。

 

 

 

转载于:https://my.oschina.net/ykduan/blog/898565

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值