数据库基础
一、数据库概念
1.数据库
存储数据的仓库(逻辑概念,并未真实存在)
2.数据库软件
真实软件,用来实现数据库这个逻辑概念
3.数据仓库
数据量更加庞大,更加侧重数据分析和数据挖掘,供企业决策分析之用,主要是数据查询,修改和删除很少
二、MySQL的特点
1.关系型数据库
2.跨平台
3.支持多种编程语言(python、java、php)
4.基于磁盘存储,数据是以文件形式存放在数据库目录/var/lib/mysql下
三 启动连接
- 服务端启动 ```mysql sudo /etc/init.d/mysql start|stop|restart|status sudo service mysql start|stop|restart|status ``` - 客户端连接 ```mysql mysql -hIP地址 -u用户名 -p密码 本地连接可省略 -h 选项
四、基本sql命令
**1.库管理** ```mysqle 1、查看已有库; show databases; 2、创建库并指定字符集; create database 库名 charset utf8; 3、查看当前所在库; select database(); 4、切换库; use 库名; 5、查看库中已有表; show tables; 6、删除库; drop database 库名; ```
**2.表管理** ```mysql 1、创建表并指定字符集; create table 表名(字段名 数据类型,xxx)charset=utf8; 2、查看创建表的语句 (字符集、存储引擎); show create table 表名; 3、查看表结构; desc 表名; 4、删除表; ``` drop table 表名;
1 **3.表记录管理** 2 3 ```mysql 4 1、增 :insert into 表名(字段名)values(),(); 5 2、删 :delete from 表名 where 条件; 6 3、改 :update 表名 set 字段名=值 字段名=值 where 条件; 7 4、查 :select * from 表名 where 条件; 8 ```
1 **4.表字段管理** 2 3 ```mysql 4 1、增 : alter table 表名 add 字段名 类型 first;(添加首字段) 5 alter table 表名 add 字段名 类型 after 字段名;(添加在什么字段后) 6 alter table 表名 add 字段名 类型(添加最后的字段) 7 2、删 :alter table 表名 drop 字段名; 8 3、改 :alter table 表名 modify 字段名 新类型; 9 4、表重命名 :alter table 表名 rename 新表名;
五、数据类型
1 - 数值类型 2 int smallint bigint tinyint 3 float(m,n) double decimal 4 - 字符类型 5 char(固定长度) varchar(不固定长度) text logtext blob longblob 6 - 枚举类型 7 enum(多个中选一个) set(多个中选多个) 8 日期时间类型 9 data time year datatime timestamp
**日期时间函数** ```mysql NOW() CURDATR() YEAR(字段名) DATE(字段名) TIME(字段名) ``` **日期时间运算** ```mysql select * from 表名 where 字段名 运算符(NOW()-interval 间隔) 间隔单位:1day| 3month|2year eg1:查询一年以前的用户充值信息 select * from tab where time <(now()-interval 1 year); ```
六、MySQL运算符
- **数值比较** ```mysql > >= < <= = != eg1 : 查询成绩不及格的学生 select * from student where score >60; eg2 : 删除成绩不及格的学生 delete from sutdents where score <60; eg3 : 把id为3的学生的姓名改为 周芷若 update students set name="周芷若" where id = 3; ```
- **逻辑比较** ```mysql and or eg1 : 查询成绩不及格的男生 select * from students where score <60 and gender="m"; eg2 : 查询成绩在60-70之间的学生 ``` select * from students where score>=60 and score<=70;
- **范围内比较** ```mysql between 值1 and 值2 、in() 、not in() eg1 : 查询不及格的学生姓名及成绩 select name,score from students where score between 0 and 59; eg2 : 查询AID1903和AID1902班的学生姓名及成绩 select name,score from students where class in("AID1903","AID1902");
- **模糊比较(like)** ```mysql where 字段名 like 表达式(%_) eg1 : 查询北京的姓赵的学生信息 select *from students where address="北京" and name like "赵%";
- **NULL判断** ```mysql is NULL 、is not NULL eg1 : 查询姓名字段值为NULL的学生信息 select * from students where name is NULL; ```
七、查询
- **order by** 给查询的结果进行排序(永远放在SQL命令的倒数第二的位置写) ```mysql order by 字段名 ASC/DESC eg1 : 查询成绩从高到低排列 select * from students where score order by DESC ``` - **limit** 限制显示查询记录的条数(永远放在SQL命令的最后写) ```mysql limit n :显示前n条 limit m,n :从第(m+1)条记录开始,显示n条 分页:每页显示10条,显示第6页的内容 limit (6-1)*10 ,10
八、MySQL基础巩固
- **创建库 :country(指定字符编码为utf8)** create database country; - **创建表 :sanguo 字段:id 、name、attack、defense、gender、country** create table sanguo(id int primary key auto_increment, name varchar(16) not null, attack int not null, defense int not null, gender enum("w","m") not null, country varchar(16) not null)charset=utf8;**插入5条表记录(id 1-5,name-诸葛亮、司马懿、貂蝉、张飞、赵云),攻击>100,防御<100)** insert into sanguo values(1,"诸葛亮",150,80,"m","蜀国"; 2,"司马懿",160,70,"m","魏国"; 3,"貂蝉",110,50,"w","吴国"; 4,"张飞",200,90,"w","蜀国"; 5,"赵云",21,80,"w","蜀国";)- **查找所有蜀国人的信息** select * from sanguo where country="蜀国";- **将赵云的攻击力设置为360,防御力设置为68* update sanguo set attack=360 ,defense=68 where name="赵云";- **将吴国英雄中攻击值为110的英雄的攻击值改为100,防御力改为60** update sanguo set attack = 100 ,defense=60 where country="吴国"- **找出攻击值高于200的蜀国英雄的名字、攻击力** select name,attack from sanguo where attack>200 and country="蜀国";- **将蜀国英雄按攻击值从高到低排序** select * from sanguo where country = "蜀国" order by attark DESC;- **魏蜀两国英雄中名字为三个字的按防御值升序排列** select * from sanguo where country in("魏国","蜀国") and name like"___" order by defense ASC;- **在蜀国英雄中,查找攻击值前3名且名字不为 NULL 的英雄的姓名、攻击值和国家** select name,attack,country from sanguo where country = "蜀国" and name is not NULL order by attack DESC limit 3;
来源:https://www.cnblogs.com/Acekr/p/11025270.html