MySQL学习笔记
Posted 车臣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL学习笔记相关的知识,希望对你有一定的参考价值。
m 转载:http://www.cnblogs.com/best/p/6517755.html
1. 创建数据库
create database databasename;
例如: create database study; 创建一个study的数据库
使用数据库
use databasename;
例如: use study;
创建表:
create table student(Id int , name varchar(20));
插入数据:
insert into student values(2001,\'梅西\');
执行插入操作发现报错了:
因为涉及到中文了,在此有两种解决办法:
第一种:
1.先把表删除:drop table student;
2.alter database study character set gbk;
3. create table student(Id int , name varchar(20));
4. insert into student values(2001,\'梅西\');
第二种:
1. create database study default character set utf8 collate utf8_general_ci;
db.opt 内容改为这样
2.查看数据库编码
show variables like \'character_set%\';
3.查看表结构
desc tablename;
4.外键:
例子:员工表和部门表
create table t_emp(empno int,deptno int ,ename varchar(20),esex char(2)); alter table t_emp add constraint pk_empno primary key (empno); create table t_dept(deptno int , dname varchar(20)); alter table t_dept add constraint pk_deptno primary key(deptno);
增加外键
alter table t_emp add constraint fk_depno foreign key(deptno) references t_dept(deptno);
部门表是父(主)表 员工表是子(从)表
5.外部导入数据库
source C:\\Users\\Administrator\\Desktop\\test.sql
6.数据查询-列指定别名
select empno \'工号\',ename \'姓名\' from emp;
7.数据查询-连接符函数
select empno , concat(ename,\'#\') from emp;
oracle可以用 ||作为连接符
select empno,ename||\'#\' from emp;
8.where条件查询
查询员工表中名字是Smith的员工信息
select empno,ename,job from emp where ename=\'smith\';
查询员工表名字不等于Smith的员工信息
select empno,ename,job from emp where ename <> \'smith\';
这里的<>用作不等于(!=)
9.查询部分行-条件(and, or, between ... and ...)
查询部门号是30同时工资大于1500的员工信息
select empno,ename,job from emp where deptno=30 and sal >1500;
查询职位是经理或者是销售员
select empno,ename,job from emp where job=\'manager\' or job=\'salesman\';
工资800到1500之间的员工
select empno,ename,job from emp where sal between 800 and 1500;
工资不在800到1500之间的员工
select empno,ename,job from emp where sal between 800 and 1500;
10.数据查询-空值(NULL)
查询佣金是空的员工
select empno,ename,sal from emp where comm is null;
非空(not NULL)
select empno,ename,sal from emp where comm is not null;
11.数据查询-in
select empno,ename,job from emp where ename in(\'smith\',\'king\');
12.模糊查询-like
查询时,字段中的内容并不一定与查询内容完全匹配,只要字段中含有这些内容
通配符:\'%\'(0个多个字符)
通配符:\'-\' (单个字符)
查询名字的第一个字母是‘s’的员工名字
select ename from emp where ename like\'s%\';
第二个字符任意匹配
select ename from emp where ename like\'s_ith\';
13.数据查询-排序
按单个列名排序
select ename from emp order by ename desc;
desc降序排列 asc升序排列
按多个列名排序
select job,sal from emp order by job asc, sal desc;
按列的序号排序
select empno,ename,job from emp order by 2;
14.数据查询-limit
查询工资前五名
查询工资后五名
15.表达式与条件查询
where 关键词用于指定查询条件, 用法形式为: select 列名称 from 表名称 where 条件;
以查询所有性别为女的信息为例, 输入查询语句: select * from students where sex="女";
where 子句不仅仅支持 "where 列名 = 值" 这种名等于值的查询形式, 对一般的比较运算的运算符都是支持的, 例如 =、>、<、>=、<、!= 以及一些扩展运算符 is [not] null、in、like 等等。 还可以对查询条件使用 or 和 and 进行组合查询, 以后还会学到更加高级的条件查询方式, 这里不再多做介绍。
示例:
查询年龄在21岁以上的所有人信息: select * from students where age > 21;
查询名字中带有 "王" 字的所有人信息: select * from students where name like "%王%";
查询id小于5且年龄大于20的所有人信息: select * from students where id<5 and age>20;
16.聚合函数
获得学生总人数:select count(*) from students
获得学生平均分:select avg(mark) from students
获得最高成绩:select max(mark) from students
获得最低成绩:select min(mark) from students
获得学生总成绩:select sum(mark) from students
得到一张表中的总记录数:
select count(*) as 记录数 from emp;
select count(0) as 记录数 from emp;
两者都是计算表的总记录数,count(0)计算表首的字段,如果为null也算一条记录
select avg(sal) as 平均薪资 from emp; select max(sal) as 最高工资 from emp; select min(sal) as 最低薪资 from emp; select sum(sal) as 薪资总和 from emp;
以上是关于MySQL学习笔记的主要内容,如果未能解决你的问题,请参考以下文章