mysql基础操作

DDL:操作数据库、表、列等

一:对数据库的操作

创建

Createdatabase mydb1;

Create database mydb2 character setgbk;

Create database mydb3 character setgbk COLLATE gbk_chinese_ci;

查询

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

Show databases;

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

Show create database mydb2;

删除前面创建的mydb3数据库

Drop database mydb3;

修改

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

alter database mydb2 character set utf8;

删除

Drop database mydb3;

其他:

查看当前使用的数据库

Select database();

切换数据库

Use mydb2;

二:操作数据表

当前数据库中的所有表 SHOWTABLES;

查看表的字段信息 DESCemployee;

在上面员工表的基本上增加一个image列。 ALTERTABLE employee ADD image blob;

修改job列,使其长度为60。 ALTERTABLE employee MODIFY job varchar(60);

删除image列,一次只能删一列。 ALTERTABLE employee DROP image;

表名改为user。 RENAMETABLE employee TO user;

查看表格的创建细节 SHOWCREATE TABLE user;

修改表的字符集为gbk ALTERTABLE user CHARACTER SET gbk;

列名name修改为username ALTERTABLE user CHANGE name username varchar(100);

备份表结构和表数据 create tabletname2 as select * from tname1;

备份表结构 create tabletname2 like tname1;

删除表 DROP TABLE user ;

DML操作:据操作语言,用来定义数据库记录(数据)

一:插入:

练习:

create table emp(

id int,

name varchar(100),

gender varchar(10),

birthday date,

salary float(10,2),

entry_date date,

resume text

);

INSERTINTO emp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(1,‘zhangsan’,‘female’,‘1990-5-10’,10000,‘2015-5-5-’,‘goodgirl’);

INSERT INTOemp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(2,‘lisi’,‘male’,‘1995-5-10’,10000,‘2015-5-5’,‘goodboy’);

INSERT INTOemp(id,name,gender,birthday,salary,entry_date,resume)

VALUES(3,‘你’,‘male’,‘1995-5-10’,10000,‘2015-5-5’,‘good boy’);

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

Showvariables like ‘character%’;

二:修改:

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

三:删除

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

delete删除表中的数据,表结构还在,删除后的数据还可以找回

truncate 删除是把表直接DROP掉,然后再创建一个同样的新表。Truncate

删除的数据不能找回。执行速度比 delete 快。

DQL数据查询语言(重要)

查询返回的结果集是一张虚拟表

重要的sql语句:

一:分组查询

当需要分组查询时需要使用GROUPBY子句,例如查询每个部门的工资和,这说明要使用部门来分组。

//注:凡和聚合函数(组函数)同时出现的列名,则一定要写在groupby 之后

聚合函数(组函数也叫统计函数):

聚合函数是用来做纵向运算的函数:

COUNT():统计指定列不为NULL的记录行数;

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;

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

分组查询 : 查询每个部门的部门编号和每个部门的工资和:

SELECT deptno, SUM(sal)

FROM emp

GROUP BY deptno;

HAVING子句 : 查询工资总和大于9000的部门编号以及工资和:

SELECT deptno, SUM(sal)

FROM emp

GROUP BY deptno

HAVING SUM(sal) > 9000;

having与where的区别

1.having是在分组后对数据进行过滤

​ where是在分组前对数据进行过滤

having后面可以使用分组函数(统计函数)
​ where后面不可以使用分组函数。

WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。

LIMIT

LIMIT用来限定查询结果的起始行,以及总行数。

select * from emp limit 3,10;

3代表起始行为3; 10代表行数 (从第三行开始往下10行)

重要点:

1.使用统计查询时(存在GROUP BY子句),SELECT子句之中只允许出现统计函数与分组字段,其它的任何字段都不允许出现。

2.统计函数单独使用时(没有GROUP BY子句)只能够出现统计函数,不能够出现其它字段

3.此错误的意思就是where子句中不能使用组函数,因为where子句是在group by子句之前先执行的,所以在sql中要想给分组后的内容进行筛选则要依赖与having子句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值