MYSQL是一个功能齐全的关系数据库管理系统,通俗点讲就是存储和管理数据的。
MySQL的使用过程
-
卸载:
1.关闭mysql服务
1.手动关闭:我的电脑–>右键–>管理
2.cmd–>services.msc,打开服务面板
3.cmd–>net stop mysql。(注意获取cmd管理员权限)
2.卸载
3.删除数据存储文件
* 找到mysql的安装目录。中my.ini文件
datadir目录,删除- 使用:
-
登陆数据库:
cmd–>mysql -uroot -p你自己的密码 -
服务:系统后台进程
- 启动服务: net start mysql 注意以管理员身份运行黑窗口
- 停止服务: net stop mysql
-
- 配置:
修改mysql的密码步骤:- 停止mysql服务 运行输入services.msc 停止mysql服务
或者 cmd – net stop mysql - 在cmd下 输入 mysqld --skip-grant-tables 启动服务器 光标不动 (不要关闭该窗口)
- 新打开cmd 输入mysql -u root -p 不需要密码
use mysql;
update user set password=password(‘123456’) WHERE User=‘root’; - 关闭两个cmd窗口 在任务管理器结束mysqld 进程
- 在服务管理页面 重启mysql 服务
- 停止mysql服务 运行输入services.msc 停止mysql服务
- 使用:
-
SQL:结构化查询语言
-
概念:通过sql语言可以操作所有的关系型数据库。每种数据库之间会存在差异,称为 “方言”
-
sql分类:
DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(增、删、改)
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL(Data Query Language):数据查询语言,用来查询记录(数据)。
-
DDL
- 查询MySQL中所有的库 show databases;
- 创建数据库 create database 数据库名; create database mydb;
- 删除数据库 drop database 数据库名 ; drop database mydb;
- 修改库的编码:alter database mydb character set ‘utf8’;
- 查询建库语句 show create database mydb;
- | mydb | CREATE DATABASE
mydb
/*!40100 DEFAULT CHARACTER SET utf8 */
- | mydb | CREATE DATABASE
- 建表
列名/字段名/表头 是要有数据类型的
常见的字段的数据类型
* int:整型 id int,
* double:浮点型,例如double(6,2)表示最多6位,其中必须有2位小数,即最大值为9999.99;
money double(5,2)
*char:固定长度字符串类型;
name char(10) 最大存10个字符 "张三"
* varchar:可变长度字符串类型;
name varchar(10) 最大存10个字符 "张三"
text:字符串类型;存大格式的文本 比如存个小说 一般不用
blob:字节类型;存字节类型的数据 比如电影字节 图片字节 但是一般不会把字节数据存到数据库当中
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
* timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss
* 如果该类型的字段不给赋值,则默认当前时间
创建表的语法
首先你要选择库,也就是说你要建的这张表要放到哪个库中
use mydb;
//create table 表名(字段名 数据类型(长度),字段名2 数据类型2(长度));
create table student(
sid int,
sname varchar(20),
sal double(5,2),
mydate timestamp
);
查询该库下所有的表 show tables;
查询表结构 desc student;
删除表
drop table student;
修改表名 alter table stu rename to student;
对表中的字段进行操作 alter
-- 添加一个字段 add
alter table student add(age int);
-- 删除一个字段 drop
alter table student drop age;
-- 修改表中的字段的数据类型 modify
alter table student modify sname char(10);
-- 修改字段名 change
alter table student change sal mysal double(6,3);
这里要着重提一下时间类型的数据,它可以用Date()函数来取日期的一部分用来日期的查询。时间戳用unix_timestamp(),
date_format(时间,格式)来获取部分时间。
DQL:对表中的数据进行查询 select
-- 查询表中所有的记录
select * from student; * 统配所有字段
select sid,sname,mysal,mydate from student; -- 即便你要查询所有字段,建议把字段名写出来
-- 查询个别字段
select sid from student;
select sid,sname from student;
-- 条件查询
* 条件查询:where 子句
=、!=、<>(不等于)、<、<=、>、>=;
BETWEEN…AND; 在什么范围之间
IN(set);
IS NULL;为空
IS NOT NULL 不为空
AND; 并且
OR; 或者
NOT;非
//查询工资在 2000----3000之间
select * from emp where sal>=2000 and sal<=3000;
//跟上面一样 between 2000 and 3000;
select * from emp where sal between 2000 and 3000;
//查询奖金是 300 500 的
select * from emp where comm=300 or comm=500;
//in() 和上面的意思一样
select * from emp where comm in(300,500);
//查询奖金不为null的人
//判断为null 或不为 null 用关键字来判断
select * from emp where comm!=null; // 查不出来
// is null 为空 is not null 不为空
select * from emp where comm is null;
select * from emp where comm is not null;
* 语法:
SELECT
selection_list /*要查询的列名称*/
FROM
table_list /*要查询的表名称*/
WHERE
condition /*行条件*/
GROUP BY
grouping_columns /*对结果分组*/
HAVING
condition /*分组后的行条件*/
ORDER BY
sorting_columns /*对结果分组*/
LIMIT
offset_start, row_count /*结果限定*/
模糊查询 like
通配符 % 通配多个任意字符 _ 通配单个任意字符
我要查询名字中包含S的员工信息
select * from emp where ename like '%S%';
我要查询以S开头的员工
select * from emp where ename like 'S%';
我要查询以S结尾的人
select * from emp where ename like '%S';
我要查询第二个字符是D的人
select * from emp where ename like '_D%';
我要查询名字是五个字符组成的人
select * from emp where ename like '_____';
字段控制
as 给字段起别名 只是用于展示的时候好看一些 as 可以省略不写
select ename as xingming,sal gongzi,comm as jingjin from emp;
字段运算
我要查询这个员工一年的工资收入,不算奖金
select *,sal*12 as totalSal from emp;
null值参与运算 结果是null
我要查询这个员工一年的工资收入,算奖金
select *,sal*12+comm as totalSal from emp;
我们怎么把null当成其他值来运算, ifnull 来处理null值
select *,sal*12+ifnull(comm,0) as totalSal from emp;
* 去除重复记录 比如我查询工资是3000的 distinct
select sal from emp where sal=3000;
select distinct sal from emp where sal=3000;
排序 order by
查询工资由小到大排序
select * from emp order by sal ASC; -- ASC 升序排列 默认
select * from emp order by sal DESC; -- DESC 降序排列 -- 注释
工资降序排 奖金降序排 可以定义第二排序条件
select * from emp order by sal DESC,comm ASC;
select * from emp order by ename ASC;