一、数据库简介
数据库:数据库是一个按数据结构来存储和管理数据的计算机软件系统。简单来说,数据库是用来存放数据的。
常见数据库及端口
mysql(3306):关系型数据库 mssal(1433) oracle(1521)
db2(9500) postgresql(5432) redis(6379)
二、MySQL数据库
1.数据库结构
数据库—》》表—》》列(字段)、行(记录)
2.数据类型
三、mysql查询语句
1.数据库命令 进入查看数据库:mysql -u root -p
select user():返回当前连接到 MySQL 服务器的用户的用户名和主机名
2. 创建数据库:create database 数据库名 create database EC2501;
展示所有数据库: show databases;
3.数据库增删改查
选择数据库 Use 数据库名(所有命令只针对该数据库)
创建表
主键:唯一标识符(此字段可区分表内所有记录)
创建数据表:CREATE TABLE 表名(属性名 数据类型 完整性约束条件,属性名 数据类型);
约束条件:
create table list(id int primary key auto_increment,name varchar(20) not null,sex char(2) not null,phone varchar(
11) not null,age tinyint not null);
desc list; 查询表内数据
插入数据:insert into table name(field1,field2…fieldN) Values(value1,value2…valueN);
eg:
insert into list(name,sex,phone,age)Values('AB','m','18523694278',5);
- 更新数据(update):pdate teble_name set field1=new-value1, field2=new-value2;
SQL查询语句
Select 属性列表 from 表名和视图列表
[where 条件表达式1]
[group by 属性名1 [having 条件表达式2]]
[order by 属性名2 [asc | desc]]
[where 条件表达式1] [group by 属性名1 [having 条件表达式2]] [order by 属性名2 [asc | desc]]
where子句常用查询条件:
通配符:%、*、_
集合函数
正则匹配:regexp、rlike
运算符优先级:
mysql函数:
系统函数:
version()--mysql版本 user()--数据库用户名 database()--数据库名
@@datadir--数据库路径 @@version_compile_os--操作系统版本
@@hostname--当前机器的机器名
字符串连接函数:
concat(str1,str2,…)--没有分隔符地连接字符串
concat_ws(separator,str1,str1,…)--含有分隔符地连接字符串
group_concat(str1,str2,…)--连接一个组的所有字符串,并以逗号分隔每一条数据
获取指定长度的函数: left/right(str,length);
str是要提取子字符串的字符串,length是一个正整数,指定将从左边返回的字符数
substr (str, pos, len):str为列名/字符串;
pos为起始位置;mysql中的起始位置pos是从1开始的;如果为正数,就表示从正数的位置往下截取字符串(起始坐标从1开始),反之如果起始位置pos为负数,那么 表示就从倒数第几个开始截取;len为截取字符个数/长度
substring(str, pos)
substring(str, pos, len)
说明:substring(被截取字段,从第几位开始截取) substring(被截取字段,从第几位开始截取,截取长度)
mid(column_name,start,length)
column_name 必需。要提取字符的字段
start 必需。规定开始位置(起始值是 1)
length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本
if()
if(1,2,3) 1的值为true,则返回2 1的值为false,则返回3
hex
HEX(string) string-每个字符的输入字符串都将转换为两个十六进制数字。
HEX(N) N-要转换为十六进制的输入数字
ASCII(str)
返回字符串str最左面字符的ASCII代码值,如果str是空字符串,返回0,如果str是NULL,返回NULL
Case
case when 条件 then 1(条件成立返回1)else 0(不成立为0)end;
exp()
exp(709) 正常
exp(710) mysql会报错导致服务器报错
报错函数:updatexml(); extravalue();
四、练习
1.判断用户名的第四位的ascii码是否为116,是返回1,否则返回0
select case when ascii(substr(user(),select like 116 then 1 else 0 end;
select if (ascii(mid(user(),4,1))=116,1,0);
2.使用sleep()延迟查询时间
Sleep():用于使当前会话休眠指定的秒数
select id,name,age,sex,sleep(5) from list where id < 3 or phone like '%85%';
每条记录延迟5秒,3row将延迟15sec
3.sqli
use security