mysql-----(1)常用的sql语句使用

  • 对数据库的操作

创建

Create database mydb1;

Create database mydb2 character set gbk;

Create database mydb3 character set gbk COLLATE gbk_chinese_ci;

 

查询数据库

查看当前数据库服务器中的所有数据库

Show databases;

 

查看前面创建的mydb2数据库的定义信息

Show  create  database mydb2;

 

删除前面创建的mydb3数据库

Drop database mydb3;

 

修改

 查看服务器中的数据库,并把mydb2的字符集修改为utf8;

 alter database mydb2 character set utf8;

 

查看当前使用的数据库

Select database();

 

切换数据库

Use mydb2;

 

查看数据库编码的具体信息

Show variables like ‘character%’;

 

临时更改客户端和服务器结果集的编码

Set character_set_client=gbk;

Set character_set_results=gbk;

 

 

 

  • 作数据表

当前数据库中的所有表

SHOW TABLES;

 

查看表的字段信息

DESC employee;

 

在上面员工表的基本上增加一个image列。

ALTER TABLE empyee ADD image blob;

 

修改job列,使其长度为60。

ALTER TABLE employee MODIFY job varchar(60);

 

删除image列,一次只能删一列。

ALTER TABLE employee DROP image;

 

表名改为user。

RENAME TABLE employee TO user;

 

查看表格的创建细节

SHOW CREATE TABLE user;

 

修改表的字符集为gbk

ALTER TABLE user CHARACTER SET gbk;

 

列名name修改为username

ALTER TABLE user CHANGE name username varchar(100);

 

删除表

DROP TABLE user ;

 

 

  • 插入操作Insert

INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);

例句:

INSERT INTO emp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(1,'zhangsan','female','1990-5-10',10000,'2015-5-5-','good girl');

 

  • Update修改

UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值

例句:

将姓名为’aaa’的员工薪水修改为4000元,job改为ccc。

 UPDATE emp SET salary=4000,gender='female' WHERE name='lisi';

 

  • Delete删除

语法 : DELETE 表名 【WHERE 列名=值】

删除表中名称为’zs’的记录。

DELETE FROM emp WHERE name=‘zs’;

 

  • Select查询

查询关键字:SELECT

语法:

SELECT 列名

FROM 表名

【WHERE --> BROUP BY -->HAVING--> ORDER BY】

 

1、排序:

通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。

格式:

SELECT * FROM 表名 ORDER BY 字段ASC;

  1. ASC 升序 (默认)
  2. DESC 降序

例句:

1.查询所有的商品,按金额进行排序.(asc-升序,desc-降序)

select * from zhangwu order by money asc;

 

2、聚合

五个聚合函数:

  1. count:统计指定列不为NULL的记录行数;
  2. sum:计算指定列的数值和,如果指定列;
  3. max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串类型不是数值类型,那么计算结果为0排0序运算;
  4. min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

     5.avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

例如:

1. 统计账务表中共有多少条记录

SELECT COUNT(*) FROM zhangwu;

2. 统计账务表中金额大于3000的有多少条记录

SELECT COUNT(*) FROM zhangwu WHERE money>3000;

3. 统计有多少收入的账务信息

SELECT SUM(money) FROM zhangwu WHERE name like '%收入%';

4. 统计出记录中支出的平均值

SELECT AVG(money) FROM zhangwu where name like '%支出%';

5. 统计出商品表中收入的最大与最小值

SELECT MAX(money),MIN(money) FROM zhangwu;

 

3、分组

分组查询是指使用group by字句对查询信息进行分组

  1. 格式:SELECT 字段1,字段2… FROM 表名 GROUP BY 字段 HAVING 条件;

例如:

1. 对账务分种类统计,求出每个种类的账务总金额

SELECT parent,SUM(money) FROM zhangwu GROUP BY parent;

2. 对账务分种类统计,求出每个种类的账务总金额,金额要大于500才显示

SELECT parent,SUM(money)  FROM zhangwu GROUP BY parent HAVING SUM(money)>500;

 

 

 

 

内连接,左外连接,右外连接

  • 内连接  [INNER] JOIN  ON
  • 外连接  OUTER JOIN ON
  • 左外连接 LEFT [OUTER] JOIN
  • 右外连接 RIGHT [OUTER] JOIN
  • 全外连接(MySQL不支持)FULL JOIN

 

内连接:

内连接的特点:查询结果必须满足条件

SELECT * FROM

emp e

INNER JOIN

dept d 

ON e.deptno=d.deptno;

 

左外连接:

左连接是先查询出左表(即以左表为主),然后查询右表,右表中满足条件的显示出来,不满足条件的显示NULL。

SELECT * FROM

emp e

LEFT OUTER JOIN

dept d

ON e.deptno=d.deptno;

 

 

 

 

右外连接:

右连接就是先把右表中所有记录都查询出来,然后左表满足条件的显示,不满足显示NULL

SELECT * FROM

emp e

RIGHT OUTER JOIN

dept d

ON e.deptno=d.deptno;

 

 

 

触发器

 触发器(trigger):监视某种情况,并触发某种操作,它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,例如当对一个表进行操作( insert,delete, update)时就会激活它执行。

CREATE <触发器名>

< BEFORE | AFTER > <INSERT | UPDATE | DELETE > ON <表名>  FOR EACH Row

<触发器主体>

例句:

Create trigger trig_insert_stu

After insert on clazz for each row

Insert into clazz values(1,4ban,new.id);

 

 

存储过程

存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。

优点

存储过程可封装,并隐藏复杂的商业逻辑。存储过程可以回传值,并可以接受参数。存储过程无法使用 SELECT 指令来运行,因为它是子程序,与查看表,数据表或用户定义函数不同。存储过程可以用在数据检验,强制实行商业逻辑等。

缺点

存储过程,往往定制化于特定的数据库上,因为支持的编程语言不同。当切换到其他厂商的数据库系统时,需要重写原有的存储过程。存储过程的性能调校与撰写,受限于各种数据库系统。

注意:

DELIMITER |   :这是将sql的结尾设置为“|”符号

 

例句:

DELIMITER |             --------------将结束符该为“|”

Create procedure getCount(in id int,out count int)  --------------in是输入,out是输出

Begin                   --------------执行开始

Select count(*) into count  from clazz where sid=id;   --------------执行查询

End; |                   --------------执行开始

 

调用的时候:

Call getCount(10,@count); |

Select @count; |

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值