MYSQL

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命令分类

MYSQL_第1张图片


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 列名 数据类型

修改列的名称和类型:

        修改名称和类型 alter table 表名 change 列名 新列名  数据类型

        修改类型 alter table 表名 modify 列名 新数据类型

D:delete删除

删除数据库:        drop database 数据库名称

                             drop database if exists 数据库名称

删除表:    drop table 表名

                      drop table if exists 表名

删除列:alter table 表名 drop 列名

使用数据库

查询当前正在使用的数据库:select database();

使用数据库:                                use 数据库名称;



Mysql里的数据类型

MYSQL_第2张图片

 图形化编写MySQL

DML:增删改表中数据

添加数据

insert into 表名(列名1,列名2...列名n)values(值1,值2.....值n)

INSERT INTO ss(id NAME,age) VALUES(1,'mike',18);

省略列名将会给所有列添加值;但必须全部添加,否则会报错;

除了数字类型,其他类型需要使用引号(单双均可)引起来;

查询数据

select * from 表名(查询表中所有数据)

SELECT * FROM ss;

删除数据

delete from 表名[where 条件],不加where将删除表中所有记录;

SELECT * FROM ss;

清空表:truncate table 表名(首先删除表,再创建一个一模一样的空表);

修改数据

update 表名 set 列名1=值1,列名2=值2 [where 条件];不加任何条件会修改所有记录;

DQL

查询语句:

select 

        字段列表

from 

        表明列表

where

        条件列表

 group by

        分组字段

having 

        分组之后的条件

order by

        排序

limit

        分页

 基础查询

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可以省略;

SELECT NAME AS 数学,math  +IFNULL(english,0)AS 总分 FROM student4;
 

条件查询

运算符:

>,<,>=,<=,=,!=,<>

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;类似正则表达式;

格式:MYSQL_第3张图片

举例


#查询姓马的人
SELECT NAME FROM student4 WHERE NAME LIKE '马%';

#查询第二个字是马的人

SELECT NAME FROM student4 WHERE NAME LIKE '_化%';

#查询姓名是三个字的人;
SELECT NAME FROM student4 WHERE NAME LIKE '__';

#查询姓名中包含马的人
SELECT NAME FROM student4 WHERE NAME 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;
数学是第一条件,英语是第二条件
聚合函数

将一列数据作为整体进行纵向的计算;

count :计算个数

max:计算最大值

min:计算最小值

sum:计算和

avg:计算平均值

注意:聚合函数计算时排除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条数据

运行后结果:MYSQL_第4张图片

开始的索引的计算公式:开始的索引=(当前页码-1)*查询条数;


约束

概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性;

分类:

主键约束:primary key

非空约束:not null

唯一约束:unique

外键约束:foreign key

你可能感兴趣的:(数据库,mysql)