CMD下Mysql的启动,链接,退出
Mysql启动
1.手动:cmd->services.msc->启动MySql
开启,关闭服务下两种在管理员权限下运行:
2.net stop mysql(停止服务)
3.net start mysql(开始服务)
Mysql登录
本机mysql -uroot -proot(mysql -u用户 -p密码)
远程mysql -hip -u链接目标的密码
通用:mysql --host=ip --user=root --password=连接目标的密码
举例:mysql --host=127.0.0.1 --user=root --password=root
Mysql退出
本机 exit
远程 quit
Mysql目录结构
安装目录
数据目录
Mysql语法
1.sql语句可以单行或多行书写,以;结尾
2.语句不区分大小写,关键字可以大写
3.单行注释与多行注释
单行:-- 注释内容,# 注释内容(注意--后跟一个空格,#可以不跟)
多行:/* */(与JAVA一样);
Mysql命令分类
DDL
1.操作数据库CRUD,增删改查
C:create创建
创建数据库: create database 数据库名字
create database if not exists 数据库名字;(如果存在就不创建了)
create database 数据库名字 character set gbk;
创建表:create 表名(列名1 数据类型1
列名2 数据类型2,
......
列名 n,数据类型n) //最后一列不加逗号;
复制表:create table 表名 like 表名
R:Retrieve 查询
查询所有的数据库的名称:show databases
查询某个数据库中的所有表名称:show tables
查询表结构:desc 表名
U:Update 修改
修改数据库的字符集:alter database 数据库名称 character set 字符集名
修改表名 alter table 表名 rename to 新的表名
修改表 的字符集 alter table 表名 character set 字符集格式;
添加一列:alter table 表名 add 列名 数据类型
修改列的名称和类型:
D:delete删除
删除数据库: drop database 数据库名称
drop database if exists 数据库名称
删除表: drop table 表名
drop table if exists 表名
删除列:alter table 表名 drop 列名
使用数据库
查询当前正在使用的数据库:select database();
使用数据库: use 数据库名称;
Mysql里的数据类型
图形化编写MySQL
DML:增删改表中数据
添加数据
insert into 表名(列名1,列名2...列名n)values(值1,值2.....值n)
省略列名将会给所有列添加值;但必须全部添加,否则会报错;
除了数字类型,其他类型需要使用引号(单双均可)引起来;
查询数据
select * from 表名(查询表中所有数据)
删除数据
delete from 表名[where 条件],不加where将删除表中所有记录;
清空表:truncate table 表名(首先删除表,再创建一个一模一样的空表);
修改数据
update 表名 set 列名1=值1,列名2=值2 [where 条件];不加任何条件会修改所有记录;
DQL
查询语句:
基础查询
1.查询多个字段
select 字段名1 as 别名,字段名2....from 表名;
2.去除重复:使用distinct
select DISTINCT 字段名1,... FROM student4;
3.计算列
select 字段名1 +字段名2....from 表名;
排除null:select 字段名3,字段名1 +ifnull(字段名2,代替值)....from 表名;计算1,2的和;
4.起别名
在列后使用as,as可以省略;
条件查询
运算符:
>,<,>=,<=,=,!=,<>
between ... and...
in,like is null,and ,or ,not;
SELECT *FROM student4;
#大于20岁
SELECT * FROM student4 WHERE age>20;
#大于等于20
SELECT * FROM student4 WHERE age>=20;
#等于20岁
SELECT * FROM student4 WHERE age=20;
#不等于20岁
SELECT * FROM student4 WHERE age!=20;
#不等于20岁
SELECT * FROM student4 WHERE age<>20;
#小于20
SELECT * FROM student4 WHERE age<20;
#小于等于20
SELECT * FROM student4 WHERE age<=20;
#20~40岁之间
SELECT * FROM student4 WHERE age BETWEEN 20 AND 40;
SELECT * FROM student4 WHERE age>=20 AND age<=40;
#查询22岁,19岁,25岁的信息;或者
SELECT*FROM student4 WHERE age=22 OR age=19 OR age=25;
SELECT*FROM student4 WHERE age IN (22,19,23,25);
#查询null:null不能使用比较符来判断;使用is判断
SELECT*FROM student4 WHERE age IS NULL;
SELECT*FROM student4 WHERE age IS NOT NULL;
模糊查询:like;类似正则表达式;
格式:
举例
排序查询
语法:order by 子句
order by 排序字段1 排序方式1,排序字段2 排序方式2......
排序方式:升序(ASC)默认,DESC 降序;
多条件排序:如果有多个排序条件,则当前一个条件值一样时,才会判断第二条件;
#按照数学成绩排名,如果数学成绩一样则按照英语成绩排名
UPDATE student4 SET math=99 WHERE age=18; -- 修改
SELECT *FROM student4;
SELECT *FROM student4 ORDER BY math ASC,english ASC;
数学是第一条件,英语是第二条件
聚合函数
将一列数据作为整体进行纵向的计算;
注意:聚合函数计算时排除null, 一般选择主键作为count的参数;
SELECT COUNT(NAME)FROM student4;
SELECT COUNT(IFNULL(NAME,0))FROM student4;
SELECT MAX(math)FROM student4;
SELECT SUM(math)FROM student4;
SELECT SUM(IFNULL(english,0))FROM student4;
SELECT AVG(english)FROM student4;
分组查询
语法:group by 分组字段,注意分组后查询的字段(select 之后的内容):聚合函数或者分组字段;
#按照性别分组,分别查询男,女同学的平均分
SELECT sex,AVG(math)FROM student4 GROUP BY sex;
复合语句:
#按性别分组,分别查询男女的平均分,要求:分数低于70的人,不参与分组;
SELECT sex,COUNT(id)FROM student4 WHERE math>50 GROUP BY sex;
分组之后继续划分: having子句,写在:“group by 分组字段”之后;
#按性别分组,分别查询男女的平均分,要求:分数低于70的人,不参与分组,分组之后人数要大于两个人;
SELECT sex,COUNT(id)FROM student4 WHERE math>50 GROUP BY sex HAVING COUNT(id)>2;
SELECT sex AS 性别 ,COUNT(id) AS 人数 FROM student4 WHERE math>50 GROUP BY sex HAVING 人数>2;
分页查询
语法:limit 开始的索引,每一页查询的条数;该语句是方言操作;
SELECT *FROM student4 LIMIT 0,3;从0开始,每一页显式3条数据
运行后结果:
开始的索引的计算公式:开始的索引=(当前页码-1)*查询条数;
约束
概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性;
分类: