MysQL基础

MysQL基础

基本知识:

1、数据库:是对数据的管理;

2、数据库中的表:是对发生业务的分类管理;

3、MysQl:是数据管理系统;

一些常用的mysql命令

1、登录mysql;

   运行cmd —>d:—> cd D:servermysql-5.7.17-winx64in —>mysql -u root -p —>输入密码:root。

2、显示服务器上所有已有的数据库;

show databases;

3、在服务器中创建自己的数据库;

create database 数据名字 character set utf8;

4、切换到指定的数据库中;

use 数据库的名字;

5、删除已有的数据库;

  Drop database 数据库名字:db_name;

在数据库中建立数据表格;

数据表示一个二维的表格(行、列)

一行代表一条数据;

每一列代表是当前一条数据的字段;

1、先指定一个数据库的名字;

Use 数据库名字;

1、建立数据库中的表格;

Create table 表格的名字:tb_name(

—>字段1,

—>字段2,

—>字段3

—> );

2、显示表格;

Show tables;

3、删除表格;

Drop table 表格的名字;

知识点:

1)、主键:唯一识别一条记录的字段;

2)、自增:某个字段不需要手动填写数据;而是通过系统分配的整数,每一条数据分配的值都是前一条数据的增量。

3)、非空:字段设置为非空时,填写数据时要求该字段为必填项;

4)、默认值:向表中填写数据时,字段不写入数据时,会默认填充值。

代码单词:

默认值:default (value)值;

自增:auto_increment;

主键:primary key; 注意:字段指定了主键之后,unique将不再使用;

唯一:unique;

说明:comment ‘填写说明的内容’;

引用:reference_definition;

非空:not null;

数据类型:

Double:小数;(length:数的总长度,docimals:小数占据几位)

Float:

Numeric:(length;数的总长度,decimals:小数占据几位)

Datetime:日期,时分秒;

Int:默认长度整数数字;

Varchar():不固定字符,需要手动填写字符长度;

Char():字符固定,定长字符;

Text():存在无限多个字符;

插入数据insert

Insert 表的名字 values();

适用于全记录插入;按照字段的顺序插入数据;

语法:insert 表的名字(字段1,字段2,......) values(‘字段1的值’,’字段2的值’,’字段3的值’;

对于指定的字段进行数据的插入操作,如果是字符类型的数据要用单引号’’,包含要插入的数据;

提示:主键、自增、默认可以不进行定义;

修改、删除

1、修改表中的数据;

语法:update 表的名字 set 字段1=值,字段2=值,where 条件;

语句中如果不加where,则会将所有个性字段对应的记录修改掉;

Update 表的名字 set nickname=’tom’

数据筛选:where id=1;

2、删除表中的指定记录。

Delete from tb_name where 删除条件;

查询

显示所有信息:

例:SELECT * FROM ming.adress_list;

投影字段:

;SELECT name,position FROM ming.adress_list;

将字段别名:

例:SELECT name '名字', tel '电话' FROM ming.adress_list;

筛选条件查询:

例:SELECT * FROM ming.adress_list where name='梁朝伟';

%通配符的模糊查询:

例:SELECT * FROM ming.adress_list where tel like '136%';

    SELECT * FROM ming.adress_list where tel like '%234';

 

And的用法:

例:SELECT * FROM ming.adress_list where tel like '136%' and name like '梁%';

Or的用法:

例:SELECT * FROM ming.adress_list where tel like '136%' or name like '张%';

Not的用法:

例:SELECT * FROM ming.adress_list where tel not like '136%';

聚合函数:

统计个数总数:

例:SELECT count(*) FROM ming.adress_list;

求和函数:

例:SELECT sum(age) FROM ming.adress_list;

求平均值函数;

例:SELECT avg(age) FROM ming.adress_list;

求最大值:

例:SELECT max(age) FROM ming.adress_list;

求最小值:

例:SELECT min(age) FROM ming.adress_list;

注:聚合函数不能与投影一起使用;

排序order by;

例:SELECT * FROM ming.adress_list order by id asc;

 

SELECT * FROM ming.adress_list order by id desc;

SELECT * FROM ming.adress_list order by age id desc;

Asc:升序;desc:降序;

分组: group by;distinct(去掉重复)

例:SELECT position from tb_name group by position;

 :(1)、分组将相同的字段分为一组;

 2)、投影的字段就是分组的字段;

 3)、分组可以与聚合函数一起使用;

例如:select position, count(*)’总数’,avg(age)‘平均数’ from tb_name group by position having avg(age)>?;

Where是在未分组时候使用;Having是在分组后使用;

 

主从表的查询;

在主表当中建立关联所用的字段;两表关联,一定有主从表之分,从主表建立一个新字段以便关联到从表,主表中新建的这个用于关联的字段成为外键;

如何建立外键:

(1)、在主表中新建一个字段;

(2)、新建的这个字段应于从表的主键类型相同并关联到从表主键;

1、检验用户输入的用户名与密码是否在系统中存在;

例:select * from users where username = ‘?’and password = ‘?’;

2、用户登录系统后,查看用户真实的信息;一次查询涉及到的数据来自多个表。

3、使用join on 的多表联合查询方法;

Join on 的语法:select * from 主表 inner join 从表 on 主表.外键=从表.主键;

例句:select users.*,adress_list.* from users inner join adress_list on users.waijian=adress_list.id;

注意:where 所带有的条件一定要放在查询的最后;

子查询:一个查询中出现两次查询;

例:select * from adress_list where 主键 = 或者inselect  waijian from users where 条件);

子查询:一个查询中出现两次查询;

例M:select * from adress_list where 主键 = 或者inselect  waijian from users where 条件);

Limit限制查询数;

语法:Select * from tb_name limit 数值;

例如:select * from tb_name limit 5,2;表示从第5行开始显示2条数据;

注意:如果子查询中使用limit时,不能使用not in,in可以用<>不等于;

例题:查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。

select sno,count(*) from score where sno <>(select sno from score order by degree desc limit 1) group by sno having count(*)>1;

注意:mysql语句中两个日期的相减等于年数,也就是整个生日-另外一个生日=年数;

例:2017-12-27 —— 2016-1-23 = 1;

例题:查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。

Select sno,sname,sbirthday from student where sbirthday-(select sbirthday from student where sno='108')=0;

用子查询作为投影使用;

例题:现查询所有同学的Sno、Cno和rank列。Between …. And …  在某个范围区间内。

select sno,cno,(select rank from grade where score.DEGREE between low and upp) '等级' from score;

Union使用:将两个结构相同的查询结果进行合并;

例题:查询所有教师和同学的name、sex和birthday.

select sname,ssex,sbirthday from student union select tname,tsex,tbirthday from teacher;

注意:inner join on的链接方式的运行高与子查询的运行。

原文地址:https://www.cnblogs.com/liming027/p/6386914.html