3、配置
MySql服务启动
*MySQL服务启动
cmd–> services.msc打开服务的窗口
使用管理员权限打开cmd
net stop mysql 关闭MySQL服务
net start mysql 启动MySQL服务
*MySQL登录
1.mysql -uroot -p密码
2.mysql -hip -uroot -p连接目标的密码
3.mysql --host=ip --user=root --password=连接目标的密码
MySQL退出
1、exit
2、quit
MySQL安装目录
1、MySQL安装目录
*配置文件 my.ini
2、MySQL数据目录
*几个概念
*数据库:文件夹
*表:文件
*数据:
SQL
1、什么是SQL?
Structured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
2、SQL通用语法
1、SQL语句可以单行或多行书写,以分号结尾。
2、可使用空格和缩进来增强语句的可读性。
3、MySQL数据库的SQL语句不区分大小写,关键字建议使 用大写。
4、3种注释
*单行注释:-- 注释内容或# 注释内容(MySQL特有) --后面必须有空格
*多行注释:/注释/
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tHjQHCIo-1589872613780)(C:\Users\Sakura\AppData\Local\Temp\1589635270881.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2923fdHX-1589872613781)(C:\Users\Sakura\AppData\Local\Temp\1589635134030.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGzWp9fC-1589872613783)(C:\Users\Sakura\AppData\Local\Temp\1589635341686.png)]
DDL:操作数据库、表
1、操作数据库:CRUD
1、C(Create):创建
*创建数据库:
*create database 数据库名称;
*创建数据库,判断不存在,再创建:
*create database if not exists 数据库名称;
*创建数据库,并指定字符集
**create database 数据库名称 character set 字符集名;
*练习:创建db4数据库,判断是否存在,并制定字符集为gbk
*create database if not exists db4 character set gbk;
2、R(Retrieve):查询
*查询所有数据库的名称:
*show databases;
*查询某个数据库的字符集:查询某个数据库的创建语句
*show create database 数据库名称;
3、U(Update):修改
*修改数据库的字符集:
*alter database 数据库名称 character set 字符集名称(utf8);
4、D(Delete):删除
*删除数据库:
*drop database 数据库名称;
*判断数据库存在,存在再删除
*drop database if exists 数据库名称;
5、使用数据库
*查询当前正在使用的数据库名称
*select database();
*使用数据库
*use 数据库名称;
-
操作表
1. C(Create):创建 1. 语法: create table 表名( 列名1 数值类型1, 列名2 数值类型2, 列名3 数值类型3, ... 列名n 数值类型n ); *注意:最后一列,不需要加逗号(,) *数据库类型: 1. int:整数类型 *age int 2. double:小数类型 *score double(5,2), 3. date:日期,只包含年月日,yyyy-MM-dd 4. datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 5. timestamp:时间戳类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss *如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值 6. varchar:字符串 *name varchar(20):姓名最大20个字符 *zhangsan 8个字符 张三 2个字符 *创建表 create table student( id int, name varchar(32), age int, score double(4,1), birthday date, insert_time timestamp ); *复制表 *create table 表名 like 被复制的表名; 2. R(Retrieve):查询 *查询某个数据库中所有的表名称 *show tables; *查询表结构 *desc 表名; 3. U(Update):修改(alter更改) 1. 修改表名 alter table 表名 rename to 新的表名; 2. 修改表的字符集 alter table 表名 character set 字符集名称; 3. 添加一列 alter table 表名 add 列名 数据类型; 4. 修改列名称 类型 alter table 表名 change 列名 新列名 新数据类型; alter table 表名 modify 列名 新数据类型; 5. 删除列 alter table 表名 drop 列名; 4. D(Delete):删除 *drop table 表名; *drop table if exists 表名;
*客户端图形化工具:SQLYog
DML
DML:增删改表中数据
1. 添加数据
*语法:
*insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
*注意:
1.列名和值要一一对应。
2.如果表名后,不定义列名,则默认给所有列添加值
insert into 表名 values(值1,值2,...值n);
3.除了数字类型,其他类型需要使用引号(单双引号都行)引起来
2. 删除数据
*语法:
*delete from 表名 [where 条件]
*注意:
1.如果不加条件,则删除表中所有记录.
2.如果要删除所有记录
1.delete from 表名;-- 不推荐使用,有多少条记录就会执行多少次删除操作
2.TRUNCATE TABLE 表名; # 推荐使用,效率更高 先删除表,然后在创建一张一样的表.
3. 修改数据
*语法:
*update 表名 set 列名1 = 值1, 列名2 = 值2,...[where 条件]
*注意:
1.如果不加任何条件,则会将表中所有记录全部修改.
DQL:查询表中的记录
* select * from 表名;
1.语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
order by
排序
limit
分页限定
2. 基础查询
1.多个字段的查询
select 字段名1,字段名2... from 表名;
*注意:
*如果查询所有字段,则可以使用*来替代字段列表。
2.去除重复
*distinct
3.计算列
*一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
*ifnull(表达式1,表达式2):
*表达式1:哪个字段需要判断是否为null
*如果该字段为null后的替换值.
4.起别名
*as :as也可以省略
例如:
INSERT INTO student(id,NAME,age,sex,address,math,English,biological,physical)
VALUES (1,'马云',55,'男','杭州',60,85,75,78),
(2,'绘梨衣',25,'女','东京',90,95,95,98),
(3,'路明泽',26,'男','杭州',80,85,65,82),
(4,'柳岩',20,'女','湖南',72,85,63,79),
(5,'胡歌',25,'男','陕西',88,89,95,96),
(6,'马化腾',45,'男','深圳',60,85,75,78),
(7,'刘德华',46,'男','香港',60,78,75,78),
(8,'黎明',43,'男','香港 ',60,80,70,78);
SELECT *FROM student;
-- 查询 姓名和id
SELECT
NAME,-- 姓名
id -- id
FROM
student;-- 学生表
SELECT *FROM student;
SELECT address FROM student;
-- 去除重复的结果集
SELECT DISTINCT address FROM student;
SELECT DISTINCT NAME,address FROM student;
-- 计算math和English分数之和
SELECT NAME,math,English,biological,physical,math+English+biological+physical AS 总分 FROM student;
-- 如果有null 参与的运算,计算结果都为null
SELECT NAME,math,English,biological,physical,IFNULL(math,0)+English+biological+physical AS 总分 FROM student;
SELECT NAME 姓名,math 数学,English 英语,biological 生物,physical 物理,math+English+biological+physical 总分 FROM student;
3.条件查询
1.where子句后跟条件
2.运算符
* >、<、<=、>=、=、<>
*BETWEEN...AND
*IN(集合)
*LIKE:模糊查询
*占位符:
*_:单个任意字符
*%:多个任意字符
*IS NULL
*and 或&&
*or 或 ||
*not 或!
+physical 总分 FROM student;
3.条件查询
1.where子句后跟条件
2.运算符
* >、<、<=、>=、=、<>
*BETWEEN…AND
*IN(集合)
*LIKE:模糊查询
*占位符:
*_:单个任意字符
*%:多个任意字符
*IS NULL
*and 或&&
*or 或 ||
*not 或!