我的mysql的学习记录

---恢复内容开始---

MySQL

概念:是表的集合,是一个大的分类

安装

安装文件下载路径:(老宁博客)

http://www.cnblogs.com/SmartNing/p/5178616.html 

1、配置视频

第一步:下载绿色软件包,不用安装,放在指定目录下(假如放在C盘的server目录下)。

1、把mysql-5.5.22.rar解压到Cserver目录,如果要解压到其它目录则需要修改(修改ini文件)

   C:servermysql-5.5.22my.ini中的

basedir="c:/server/mysql-5.5.22/"(文件存放路径)

datadir="c:/server/mysql-5.5.22/data/"

为相应的路径。

数据库实例的账号密码:root ,888

然后到cmd下创建mysql的服务

创建mysql5的服务:

 cd c:servermysql-5.5.22in

 mysqld --install MySQL5 --defaults-file=c:servermysql-5.5.22my.ini

注意:如果服务目录创建错误,则需要先删除服务,

命令为:sc delete mysql5 //这里的mysql是你要删除的服务名

删除后需重新启动机器,然后在重新进到doc下创建mysql服务

 

MySQL的基本数据类型

1.10进制数字。 int(整数)  numeric(小数)

-’表示负值

 . 小数点 浮点数的分割符

例:numeric(10,2)中 10为个字符,2为小数点后2位。

2.16进制数字

3.字符串    char  固定数目的值

               varchat   值得数目不固定但有上限

4.日期和时间    date()

                     datetime()

 例如:2001-12-12、12:12:12

5.null :NULL是一个特殊值,它表示没有任何值,它与“0”、空字符串都不是一回事。

常用的mysql命令

首先进到mysql目录:C:servermysql-5.5.22in

登录:mysql -u root -p 888

1、显示服务器上所有已有数据库:show databases

2、在服务器中创建数据库语法:

create databases db_name character set utf8 collate utf8_general_ci     

2、如何切换到指定的数据库:use db_name

3、删除数据库:drop database db_name

4、建表语句: CREATE TABLE `news`.`topic`(`id` INT NOT NULL AUTO_INCREMENT,`topicName` VARCHAR(50) NOT NULL, PRIMARY KEY (`id`)

) CHARSET=utf8; 

注: utf8(国际通用的编码形式)

5、插入数据: insert tb_name values();   表示按顺序依次插入数据

         insert tb_name (字段1,字段2,……) values(‘字段1的值’,‘字段2的值’,……);

注:数值型不用加引号

6、修改字段命令:

     upadate tb_name set 字段1=值,字段2=值 where 条件

6、查询:

显示所有信息:

例: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%';

(3) 聚合函数:

        1.count 函数: 

     统计查询记录的个数(只显示统计的结果,不显示具体的信息)。

     select count(*) from tb_name ;

   2.sum 函数:求和

     select sum(字段名) from tb_name ;

   3.avg 函数:求平均值

     select avg(字段名) from tb_name ;

   4.max 函数:最大值

     select max(字段名) from tb_name ;

   5.min 函数:最小值

     select min(字段名) from tb_name ;

排序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:降序;

                               

(3)分组查询:group by+ 关键字

       查询项为聚合函数和分组列,分组列可以有多个。

       带使用过滤条件的查询:”对分组后结果进行筛选 使用having 语句

       同时满足2个调价(既,又)

       group by(a,b)having count(*)>1

(4)连接查询:

       inner join :取得两个表中存在连接匹配关系的记录。

                使用方法: SELECT ... INNER JOIN ... ON 语句如下

                             SELECT article.aid,article.title,user.username FROM article INNER JOIN user ON article.uid = user.uid

                                                                                                    ↑                         ↑               ↑               ↑

                                                                                                  主表                     从表       主表.外键     从表.主键

       等于where 语句  SELECT article.aid,article.title,user.username FROM article,user WHERE article.uid = user.uid

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

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

用子查询作为投影使用;

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

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

limit语句:select * from table limit m,n

      其中m是从0开始,表示第一条记录,n是指从第m+1条开始,取n条。

      select * from tablename limit 2,4 

 

              注意:如果子查询中使用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;

 

distinct:去掉重复的结果。

原文地址:https://www.cnblogs.com/yushixin/p/6386976.html