mysql数据库使用教程_《MySQL数据库入门教程》

基础知识

数据库系统的组成

数据库

存储数据的容器

数据库管理系统

软件

MySQL

Oracle

SQL Sever

只能在windows上运行

DB2

数据库应用程序

SQL语言

介绍

用来管理数据库中的数据

可以嵌套到其他语言中

SQL的DML和DDL

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

查询和更新指令构成了 SQL 的 DML 部分:

SELECT - 从数据库表中获取数据

UPDATE - 更新数据库表中的数据

DELETE - 从数据库表中删除数据

INSERT INTO - 向数据库表中插入数据

SQL 中最重要的 DDL 语句:

CREATE DATABASE - 创建新数据库

ALTER DATABASE - 修改数据库

CREATE TABLE - 创建新表

ALTER TABLE - 变更(改变)数据库表

DROP TABLE - 删除表

CREATE INDEX - 创建索引(搜索键)

DROP INDEX - 删除索引

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

数据控制语言

grant语句

给用户增加权限

revoke语句

收回用户权限

commit语句

提交事务

rollback语句

回滚事务

MySQL权限级别介绍

全局——可以管理整个MySQL

库——可以管理指定的数据库

表——可以管理指定数据库的指定表

字段——可以管理指定数据库的指定表的指定字段

权限存储在mysql库的user, db, tables_priv, columns_priv, procs_priv这几个系统表中,待MySQL实例启动后就加载到内存中

MySQL目录下的文件

bin目录

放置可执行文件

mysql.exe等

data目录

放置日志及数据库

include目录

放置头文件

mysql.h等

lib目录

放置库文件

share目录

放置字符集、语言等

my.ini

是MySQL正在使用的配置文件

MySQL数据库使用的配置文件

my-huge.ini

my-template.ini

配置文件的模板

cmd下MySQL使用

启动mysql服务

net start mysql

net stop mysql

登录

mysql -h 服务器地址 -u 用户名 -p

或者使用MySQL Command Line Client登录

数据库和表的操作

注意

打开CMD,将工作目录切换到MySQL的bin下

库名、表名需要用反引号包裹

操作要记得分号结尾

常用语法

查询当前数据库版本:select version();

查询当前数据库:select database();

查询当前数据库用户:select user();

查看数据库文件存放的目录:select @@datadir;

查询当前路径:select @@basedir;

90a6b359edb0a14a4cc91ad4386aeb96.png

查询所有数据库:show databases;

查询所有表名:show tables;

选择一个数据库:use+数据库名;

创建一个数据库:create database `数据库名`;

删除一个数据库:drop database `数据库名`;

创建一个表:create table 表名(字段名 数据类型 字符集);

7e22bc5c435b56b4c7cc8a2a016b44d5.png

查询一个表结构:desc 表名;

66cf7a95ef79c46be1e9da5eb1f5837f.png

查询当前系统:select @@global.version_compile_os;

27152a62d7c03e2e6f4ca1f3fb86f50c.png

修改数据库编码

alter database + 数据库名 default character set +编码 collate +编码_bin

例:alter database test default character set gbk collate gbk_bin

对数据库用户的基本操作

查询当前数据库用户:select user();

查看所有用户(用户名、给谁授权):select user,host from mysql.user; 或 select mysql.user;

添加用户:create user 用户名@'主机地址' identified by '密码';

创建用户同时授权:grant all privileges on mq.* to 用户名@主机名 identified by '密码';

设置与更改用户密码:SET PASSWORD FOR '用户名'@'主机名' = PASSWORD('新密码');

删除用户:drop user 用户名@'主机地址';

查看当前用户权限:show grants for 用户名@'主机地址';

给用户授权:grant 权限 on 数据库名.表名 to 用户名@'主机名' (在这里加上 WITH GRANT OPTION,可以使他有赋权能力)

撤销权限:revoke 权限 on 数据库名.表名 from 用户名@'主机名'

每次更新权限后记得刷新权限:FLUSH PRIVILEGES;

切换用户:

使用命令 -u 用户名 -p 即可

注意:不同用户的主机得是一样的,否则无法切换;

数据表的基本操作

操作表应先指定数据库

use + 数据库名称;

查看数据表

查看所有数据表

show tables;

查看表中字段

show columns from +表名

show create table +数据表名;

describe + 表名

修改数据表

修改表名

alert table + 旧表名 rename to +新表名

修改字段名

alter table +表名 change +旧字段名+新字段名 +新数据类型(数据完整性约束条件)

修改字段的数据类型

alter table +表名 modify +字段名 +数据类型(数据完整性约束条件);

添加字段

alter table +表名 add +新字段 +数据类型(数据完整性约束条件);

删除字段

alter table +表名 drop +字段名;

修改字段排列

删除数据表

drop table +表名;

对数据的操作

添加数据

为表中字段添加数据

insert into +表名 (字段名1,字段名2..) values(值1,值2,..);

5f088c4ed1e64fea7be5aa110fe00d6e.png

其他写法: INSERT INTO 表名

SET 字段名1=值1,字段名2=值2, ..

举例: insert into student

set id=10,name='zhangba',chengji=72;

32d8a2aad9824048dac2395ef1f75b0a.png

同时添加多条记录

insert into +表名

values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3);

更新数据

update

70d2495efd12fe17cb403d82d1c98c8b.png

利用 where控制要更新的范围

删除数据

delete from + 表名 where id= ;

为表中所有字段添加规则

CREATE TABLE 创建表名;

语句中指定所有字段名规则

语法: CREATE TABLE '表名'(字段名1,规则,

字段名2 规则,

...

);

命令:CREATE TABLE `student`(

id INT(3) PRIMARY KEY AUTO_INCREMENT设置整数以及主键,

name VARCHAR字符集(20) NOT NULL不能为空,

grade FLOAT浮点型,gender CHAR男女(2)

);

单表查询

select

查询所有字段

*通配符,代替所有字段名

select * from + 表名

查询指定字段

select +字段名1,字段名2 from +表名

按条件查询

select +字段名1,字段名2 from +表名 where id= ;

in关键字的查询

in关键字用来判断某个字段的值在不在指定集合中,若在,则可被查询出

select 字段1,字段2 from +表名 where id in(1,2,3);

between and关键字查询

between and关键字用来判断某个字段的值在不在指定范围内,若在,则可被查询出

select 字段1,字段2 from +表名 where id between 2 and 4;

空值查询 is null

select 字段1,字段2 from +表名 where id is null;

select 字段1,字段2 from +表名 where id is not null;

distinct查询

过滤掉查询记录中的重复值

select distinct +字段名 from +表名;

like关键字查询

判断两个字符串是否匹配

select 字段名1,字段名2 from +表名 where id like “c%” ;

select 字段名1,字段名2 from +表名 where id not like 'c%' ;

匹配字符串

注:若匹配的字符串中有 %和_ 则需要转义 +&或+_

常规字符串

%通配符

匹配任意长度字符串

如 c%匹配以c开头的任意字符串

_通配符

匹配单个字符

如c_匹配 ca 或cb等

and关键字的多条件查询

可使用多个查询条件(多个条件必须同时满足)

select 字段名1,字段名2 from +表名 where id like ‘c%’ and id < 3 ;

or关键字的多条件查询

可使用多个查询条件(多个条件中有满足的即可)

select 字段名1,字段名2 from +表名 where id like ‘c%’ or id < 3 ;

其他查询

COUNT()函数:统计记录的条数

语法::SELECT COUNT(字段名) FROM表名

举例:查询student表中的id字段一 共有多少条记录

命令:select count(id) from student;

1d634ea8ccafb1387245afab0ad49e3e.png

SUM()函数:求出表中某个字段所有值的总和

语法::SELECT SUM(字段名) FROM表名;

举例:求出student表中id字段的总和

命令::SELECT SUM(id) FROM student;

36b2f7b36c1a4e436a1e028ceb7a0a2d.png

AVG()函数:求出表中某个字段所有值的平均值

语法:SELECT AVG(字段名) FROM表名;

举例:求出student表中id字段的平均值

命令:SELECT AVG(id) FROM student;

22ce2e8133eff41f34a3479dbd097bbf.png

UNION联合查询

UNION 操作符用于合并两个或多个SELECT 语句的结果集

注意:UNION 内部的SELECT 语句必须拥有相同数量的列。且第一个 SELECT 语句中被使用的字段名称也被用于结果的字段名称。列也必须拥有相似的数据类型。同时,每条SELECT 语句中的列的顺序必须相同。

如 select version() union select id from users;

version()的查询结果是int型,且只有一列,所以 union 之后的那个select查询结果也必须只有一列,而且数据类型也需要类似 int

33c7f4b89df151aa430e4fdb7d7f6ab1.png

mysql常用函数

concat(str1,str2 … … ); 没有分隔符的连接字符串

0b9bc5b86ad2afec00f4c0ceca047c99.png

如果连接串中存在NULL,则返回结果为NULL;

29573578029e3f2fd10497ce1fed8004.png

concat_ws(separator,str1,str2… … );该函数第一个参数是其他参数的分隔符,分隔符在连接字符串之间加入。分隔符可以是一个字符串,也可以是其它参数。

91bdd5a375c1a2659521db7c8d85c892.png

分隔符为NULL,则返回结果为NULL;

如果参数中存在NULL,则会被忽略;

8873c8ee954a88709e29cd944075bb13.png

可以对NULL进行判断,并用其它值进行替换

a815e254c33213fd80a96a138824b643.png

group_concat(str1,str2… … );将多行查询的结果以逗号为分隔符连接成为一

行结果。

在注入时,由于回显位的问题,concat() 不能一次性将多行内容展示出来,需要使用 limit 控制挨个去显示,这时使用 group_concat(),可将多行内容在一行显示。

31e847b43e15d419709e0bc1e1b2b46f.png

MySQL其他姿势(sql注入常用)

构造永真,爆出字段下的所有内容

f0630e23407df744a4cc52770284ee34.png

当查询的值为true时,可正确查询

a9434fa675596bb73f34929203d22daf.png

特殊的查询结构id=1=(1)=1

(该结构可以用来fuzz,只需要替换括号里的内容)

select name from users where id=a=(b)=c

b、c的值,只能为1或0,也可以是true或false

当b、c的值均为1或0时,等价于id=a

当b或c中有一个为0时,就会查询出,除id=a之外的字段下的其他值

7588bc6023a7dc289586d676b6be0312.png

bba62f2e6f053f21cb5e950516744975.png

导出数据

mysqldump –opt test > mysql.test

即将数据库test数据库导出到mysql.test文件,后者是一个文本文件

如:mysqldump -u root -p 123456 --databases dbname > mysql.dbname

就是把数据库dbname导出到文件mysql.dbname中。

导入数据

source D:\ceshi.sql

这是sql文件存放的地址

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值