---恢复内容开始---
MySQL
概念:是表的集合,是一个大的分类
安装
安装文件下载路径:(老宁博客)
http://www.cnblogs.com/SmartNing/p/5178616.html
1、配置视频
第一步:下载绿色软件包,不用安装,放在指定目录下(假如放在C盘的server目录下)。
1、把mysql-5.5.22.rar解压到C盘server目录,如果要解压到其它目录则需要修改(修改ini文件)
C:\server\mysql-5.5.22\my.ini中的
basedir="c:/server/mysql-5.5.22/"(文件存放路径)
datadir="c:/server/mysql-5.5.22/data/"
为相应的路径。
数据库实例的账号密码:root ,888
然后到cmd下创建mysql的服务
创建mysql5的服务:
cd c:\server\mysql-5.5.22\bin\
mysqld --install MySQL5 --defaults-file=c:\server\mysql-5.5.22\my.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:\server\mysql-5.5.22\bin
登录: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:去掉重复的结果。