前端学习数据库MYSQL

学海无涯,不要过早为自己定界

 

这篇文字主要是对自己一个前端学习数据库MYSQL的笔记做了一些整理温习!

更为详细的 数据库MYSQL介绍

更好的 数据库MYSQL的入门

这篇文章主要写了

1.数据库MYSQL的可视化操作

2.基本上会遇到的所有SQL语句

我还准备了SQL语句练习库  在下载安装Navicat后,可通过Navicat将它导入数据库,然后对照着我的笔记敲敲学学!

数据库可视化软件------Navicat


数据库里边存放的是表,表与表之间是有关联的,而且可以对表进行相关操作(增,删,改,查);
 
表格的代表记录(一条数据)
代表字段属性
主键能唯一的代表某一条记录的列(或者叫字段)主键不能重复
外键:表中的某一列的值是别的表的主键的值,该列就叫外键
( 设置外键时要注意2个表的这俩列,必须类型保持一致,且一张表外键的值,必须在另一张表里有)
MySQL常用的俩种表格类型
MyISAM 强调的速度   不支持外键 也不支持事务
InnoDB  稳定性 支持外键     也支持事务!(5.2以上默认InnoDB)
工具创建数据库

选好名字,字符集,最后一个不用管。

Navicat 操作mysql数据库是可视化的,即你对数据库的一些操作都是可见的,十分简单,个人认为,对我们这种初学着十分方便


 

数据库的导入和导出
  
数据库命令  (不区分大小写,不能中文
SELECT、INSERT、 UPDATE 、DELETE
select  insert   update   delete
 查询    插入     删除     修改
 
mysql -uroot -p密码       进入mysql
库的操作
show databases; 查看所有数据库
create database 名字      创建数据库
use 姓名                  进入数据库 
drop database 名字        删除数据库
表的操作
show tables;     查看所有表格
create table 表名(id int,name varchar(10),age int);   创建表
创建一个姓名(整型)名字(固定10长度字符串类型),年龄(整型)的表格
drop table 名字;          删除表
行的操作
添加记录    []代表可省略;
insert into 表名 values('值1 ','值2 ','值3 '......................)
insert [into] 表名[(列名)] values(值列表);  如果省略了(列名)那么主键的位置必须留下,用空‘’隔开;
 
删除记录
delete from 表名 [where 条件 ];如果没where则将表中所有记录删除;

这段命令将h5class表中 id为15的记录;
 
查询记录
select 字段名1,字段名2.../* form 表名[where 条件];

这段代码将查询teacher表中name为侯晋龙的记录的cid和classname;
 

这段代码将查询teacher表中的所有记录;
 

select 字段名1 as 别名1,字段名2 as 别名2 ... form 表名[where 条件]; 给字段重命名
 

自定义字段
 
列的操作
修改字段
update 表名 set 字段名1=‘值1’,字段名2=‘值2’........... [where 条件 ]; 如果没where则将表中所有该字段的值改变
 

这段代码将h5class表中所有id>4的记录的cid字段的值改为2;
 
select查询 之[where条件 ]   同样适用于update更新和delete删除
 

xsb表
 

在xsb表中查询所有age>=20的记录;    一定范围
 

在xsb表中查询所有age不等于20的记录; 不等于 !=
 

在xsb表中查询所有age不等于20的记录;    不等于 <>
 
 
and与

在xsb表中查询所有19<=age<=20的记录的xm和age字段;          
   闭合区间

在xsb表中查询所有19<=age<=20的记录的xm和age字段;  
  &&(并且)或 and 或 between.. and..
 
 
or或

在xsb表中查询所有szx='计算机系'和szx='信息系'的记录;      
倆个区间  

在xsb表中查询所有szx='计算机系'和szx='信息系'的记录;
  ||(或者 )或 or 或 in()

在xsb表中查询所有szx='计算机系'和szx='信息系'的记录;     
 
 
not取反

在cjb表中查询所有不在80<cj<90的记录;

在cjb表中查询所有不在 80>=cj<=90的记录;

在xsb表中查询所有不属于szx='计算机系'和szx='信息系'的记录;

在xsb表中查询和张海的szx相同的记录;   通过in可将一个查询结果当作另一个查询的条件
   
通配符                                                                

在xsb表中查询xm的第一个字是王的记录的xm,sex,age      模糊查询 like ‘关键字%’

在xsb表中查询xm的第一个字是王的名字总过只有2个字的记录的xm,sex,age  - ’一个字符

在xsb表中查询xm的中有一个小字的记录的xm,sex,age          ‘%’零个或多
 
Mysql 限制行数查询
limit m,n          m(位置从0开始 不写默认0)n(要显示的条数)   在网页中的分页需要用到这条命令。

没写limit        

 

Mysql 查询排序
(order by 字段名【asc(升序不写默认)/desc(降序)】)

表cjb

 查询cj最高的前三个

查询 cj在80到95之间 最高的一个
 
小结:select */字段名/count(字段名/*) from 表名 where 条件() order by 字段名 [asc/desc] limit [m],n
 
整合数据
统计
统计记录个数 count(*/字段)
 
统计总分数 sum(字段)

统计cjb 中课程是c02的总成绩
计算平均数 avg();
计算课程“c01”的学生的考试平均成绩。
select avg(成绩) from 成绩表 where 课程号='c01'  
max/min 最大最小

课程号位c02的cj最大值
 
分组group by
select sex from xsb where group by order by limit  顺序

 

 
统计男生女生分别有多少人

先按性别分组然后计算人数

 完整版                                                                    

 统计学习每门课程的人数

单独查kch='c01'的课程的人数

 查询人数>=3 的课程;先查询人数 再用having对结果过滤      
 
having与where的区别       having对查询结果进行二次过滤            where对表中记录进行过滤
 
 
  基本书写顺序select */字段名/count(*/字段名 )/sum(字段名 )/mix(字段名 ) from 表名 [where 条件 group by 字段名 having  条件 order by 字段名 limit m,n]; 
 

多表查询
--内联接 inner join    只有当表里边的记录满足on条件时才出现在查询结果
select * from 从表 as c inner join 主表 as z on  c.外键=z.主键
--左外联接 left join   左边不管满足不满足on条件表里记录都会显示在查询结果,右边表满足显示,不满足显示null
select * from 左边 as c left join 右边 as z on  c.外键=z.主键       (最关注的表写在左边);
 

从cjb和kcb通过俩表中kch关联查询cj>90的的记录中的cj,c.kch(相同的加前缀),kcm

从来倆张表中查出所有李勇的记录

从通过学生表与成绩表的学号(xh)的关联查出李勇的总分数

关联 学生表和成绩表通过xh关联 成绩表和课程表通过kcm关联,然后查询kcm为vb的学生的xm,age,cj,kcm 然后按降序排序

 

posted @ 2017-06-20 10:25  呆萌的蚊子  阅读(4852)  评论(0编辑  收藏  举报