注:本文是实践性文章,请导入文中提到的数据到数据库,跟着文章做,只是看没有太大意义。先根据需求,自己写SQL语句,再与我给出的进行对比。
环境及软件
- Windows 10
- Mysql 5.7.X
- Navicat 12 for Mysql
安装目录
安装目录
- bin 应用程序存放目录
- docs 文档存放目录
- data 数据存放目录
- my.ini 配置文件配置文件配置文件
配置文件
教程
启动Mysql服务
图形化
任务管理器
打开任务管理器->服务->找到MySQL57,右键启动即可
任务管理器启动
计算机服务
我的电脑/此电脑/计算机,右键,管理->服务和应用程序->服务,找到MySQL57
MySQL57
同样是右键启动,双击进入属性(任务管理器方式也可右键,打开服务跳转到上图),选择启动类型(如果你最近一直使用Mysql,可以开机自启,即选择自动)。
启动类型
命令行
使用管理员身份打开CMD窗口->输入命令
net start MySql57
注意服务名字和你的一致
由于博主的已经启动了,所以显示上图,记下来,关一下再打开,使用命令
net stop MySql57
关闭再打开
连接和断开服务器
图形化
打开Navicat->连接 MySql->输入端口,用户名,密码等->连接测试,弹出成功窗口->点击确定即可
连接成功
双击左侧的连接即可进入,右键 关闭连接即可关闭。
命令行
打开CMD,使用命令
mysql -uroot -proot exit
进行连接和断开,-u之后加的是用户名,-p之后加的是密码,也可在-p后什么也不写,之后再写密码,会用"*"代替,防止别人看见。
连接,断开MySql
输入命令
mysql --help
可查看更多命令选项
命令选项
在使用图形化的时候有个 主机名 端口 需要填,命令行是省略了,可使用-h、-P选项,如果你想要连接远程的Mysql的话。
连接本地Mysql
注:由于-u -h选项可以加空格后再加内容,但-p后不能加空格,所以博主干脆都不加了。
SQL语句
介绍
SQL语言不是Mysql独有的,sqlserver、Oracle也是使用SQL语言,但有一些区别,Mysql中特有的有LIMIT、show databases等。以分号结尾,不区分大小写!!!
分类
- DDL(Data Definition Language,数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用Commit提交。
- DQL(Data Query Language,数据查询语言) - Select 查询语句不存在提交问题。
- DML(Data Manipulation Language,数据操纵语言) - Insert、Update、Delete 这些语句需要Commit才能提交。
- DTL(事务控制语言) - Commit、Rollback 事务提交与回滚语句。
- DCL(Data Control Language,数据控制语言) - Grant、Revoke 授予权限与回收权限语句。也有称TCL。
自带表介绍
- information_schema
- performance_schema
- mysql
- test
在Mysql注入点知识讲了表Information_schema,有一些用户、表、列的数据,在注入后可以获得。
注释
注释分为行注释、行中间注释和多行注释
# 这个注释直到该行结束
-- 这个注释直到该行结束
/* 这是一个在行中间的注释 */
/*
这是一个
多行注释的形式
*/
数据库的添加与删除
mysql命令
- show:展示数据库、表等,例如,show databases; show tables;
- use:使用哪个数据库等,例如,use test;
- source: 导入数据,执行sql脚本文件
命令行
create database lady_killer9;
创建数据库并导入数据
show create database lady_killer9;
查看创建数据库的语句
可以看到使用字符集utf8
lady_killer9.sql脚本可从本文后面的资源一节下载。
缺点:sql脚本路径不能含中文
删除数据库
mysql> drop database lady_killer9;
Query OK, 3 rows affected (0.11 sec)
图形化
新建查询->输入sql语句->运行即可
创建数据库
重连一下即可看见创建的数据库
也可这样创建数据库
MySQL连接右键
字符集选择utf8
选择数据库->运行SQL文件
路径可以含中文
运行成功
刷新即可看见表
接下来就看看表的创建,Navicat 中运行SQL语句不再赘述,之后的图形化只会展示非SQL语句运行方式。
表的添加与删除
- DEPT 部门表
- EMP 员工表
- SALGRADE 工资等级表
以EMP表为例,sql语句如下:
1.CREATE TABLE EMP (EMPNO int(4) not null , ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT(4), HIREDATE DATE DEFAULT NULL, SAL DOUBLE(7,2), COMM DOUBLE(7,2), primary key (EMPNO), DEPTNO INT(2) );
命令行:
mysql> use lady_killer9; Database changed mysql> show tables; +------------------------+ | Tables_in_lady_killer9 | +------------------------+ | dept | | emp | | salgrade | +------------------------+ 3 rows in set (0.00 sec) mysql> drop table emp; mysql> CREATE TABLE EMP( -> EMPNO int(4) not null, -> ENAME VARCHAR(10), -> JOB VARCHAR(9), -> MGR INT(4), -> HIREDATE DATE DEFAULT NULL, -> SAL DOUBLE(7,2), -> COMM DOUBLE(7,2), -> primary key (EMPNO), -> DEPTNO INT(2) -> ); Query OK, 0 rows affected (0.04 sec) ———————————————— 版权声明:本文为CSDN博主「lady_killer9」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/lady_killer9/article/details/112212620
desc 查看表结构
图形化
删除表
删除表左侧按钮,新建表
创建表EMP
点击添加字段来新建一行,
输入名,选择类型,输入长度,为浮点数的话输入小数点位数,点击不是null选框插入该字段时不能为空,键代表主键,注释可不写也可写名的中文含义等
下方为默认值,可不填,也可根据需要,对应DEFAULT
点击保存,输入表名,点击确定即可
右键设计表,查看表结构
表的字段含义
emp表
EMPNAME 员工名
JOB 工作岗位
MGR 上级领导
HIREDATE 入职日期
SAL 薪资
COMM 津贴
DEPTNO 部门编号
dept表
- DEPTNO 部门编号
- DNAME 部门名称
- LOC 部门位置
salgrade表
- GRADE 薪资等级
- LOSAL 最低工资
- HISAL 最高工资
查询语法
SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [PARTITION partition_list] [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name]] [FOR UPDATE | LOCK IN SHARE MODE]] ———————————————— 版权声明:本文为CSDN博主「lady_killer9」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/lady_killer9/article/details/112212620
基础查询
SELECT〈目标列组〉FROM〈数据源〉
简单来说,就是从哪些表查什么条件的数据,查多少条,查到后怎么分组,怎么排序,是否将数据保存到文件。
最简单的,从某表查询所有数据
select * from emp;
某表查询所有数据
添加目标列,例如,查员工名,及年薪。
select ENAME,SAL * 12 from EMP;
由于一般情况下,项目的瓶颈是数据库,所以会查出数据后使用项目的编程语言来进行处理,不会直接乘12这种。
重命名,使用关键字AS,也可省略。
select ENAME as 员工名,SAL * 12 as 年薪 from EMP;
建议: 出现'员工名'、‘年薪’这种,可使用单引号,虽然也可以使用双引号,但是sqlserver、Oracle都是使用的单引号,所以统一一下,学习其他数据库的时候就简单点。
读者自行尝试:
select ENAME '员工名',SAL * 12 '年薪' from EMP;