暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

软件测试学习之MySQL

灰灰的雪糕打可乐 2021-11-29
433

1. ----------数据库定义-------
    数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。


2. --------MySQL 目录结构--------

MySQL 的数据存储目录为 :data

data 目录通常在C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data 位置。在 data 下的每个目录都代表一个数据库。
MySQL 的安装目录下:bin 目录中都是可执行文件;my.ini 文件是 MySQL 的配置文件;


3. -----------基本命令--------

启动:net start mysql;
关闭:net stop mysql;
登录:mysql -u root -p 123 -h localhost;

-u:后面的 root 是用户名,这里使用的是超级管理员 root;Ø

-p:后面的 123 是密码,     这是在安装 MySQL 时就已经指定的密码;Ø

-h:后面给出的 localhost 是服务器主机名,它是可以省略的,
例如:mysql -u root -p 123;Ø

-P: 端口号 l 退出:quit 或 exit;

查看MySQL编码
show  variables   like char%;


4. ----------分类-----------------

DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;

DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);

DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;

DQL(Data Query Language):数据查询语言,用来查询记录(数据)。

 

5.------------DDL-------------------

1.查看库名称:show   databases;

2.切换数据库:use   test01;

3.创建库:create database [ if  not  exists ] test02;

4.删除库:drop  database [ if  exists ] test02;

5.修改数据库编码:alter  database test02   character  set  utf8 ;

 

6. ----------数据类型------------------

int:整型(放的是整数,比如:1,2,3) 

double:浮点型,例如 double(5,2)表示最多 5 位,其中必须有 2 位小数,即最大值为 999.99;放的都是小数类型的数

decimal:泛型型,在表单钱方面使用该类型,因为不会出现精度缺失问题;也是小数类型,不会出现精度丢失。

char:固定长度字符串类型;

varchar:可变长度字符串类型;

text:字符串类型;

blob:字节类型;

date:日期类型,格式为:yyyy-MM-dd;

time:时间类型,格式为:hh:mm:ss

timestamp:时间戳类型; 1970-1-1 数值、字符、日期

 

7. -----------操作表-------------------

1.创建表:create table test10 (sid  varchar(10), name  varchar(10) , age  int ,birthday  date , salary  decimal(7,2)) ;

2.查看指定表的创建语句:show  create table  test10 ;

3.查看当前所在的库:select  database() ;

4.查看当前表的表结构:desc  test10 ;

5.删除表:drop  table test10 ;

 

8.----------修改表----------------------

1.添加列 classname:alter  table  test10  add  (classname  varchar(20)) ;

2.修改列的数据类型:alter  table  test10  modify  sid  int(10) ;

3.修改列名gender改为sex: alter  table  test10  change  gender  sex   char(2) ;

4.删除列:alter  table  test10  drop  classname ;

5.修改表名称:alter  table   test10   rename  to   stu ;

 

9.------------DML----------------------

1.插入数据:
insert  into  stu (sid, name,  age , gender ) values (
1, 小化18);


部分插入:insert  into  stu ( name,   age) values (‘小丽’,‘13’);


有指定插入列,则按顺序来:
insert into stu  values (
2,笑笑20,‘女’);

2.修改数据:
语法:update  表名  列名1=值1,列名2=值2,.
......where +条件
- -update  stu   sid=3, name=kkwhere sid=1 ;

update  stu   age=age +1 where  name=小化


3.删除数据:
delete  from  stu  where sid =2;

 

9. -----DCL----------

1.创建用户:
语法:CREATE USER 用户名@地址 IDENTIFIED BY '密码';

create  user  user1 @localhost identified by  123456;

create  user  user2 @%identified  by  123456;


2.给用户授权:
语法:GRANT 权限 1, … , 权限 n ON 数据库.* TO 用户名

grant  create ,alter, drop, insert ,update, select  on  myb1.* to  user1 @localhost;

grant  all  on myb1.* to  user2@localhost;


3.撤销授权:
语法:REVOKE 权限 1, … , 权限 n ON 数据库.* FORM 用户名

revoke  create ,alter, drop, insert ,update, select  on  myb1.* to  user1 @localhost;

revoke  all  on myb1.* to  user2@localhost;


4.查看用户授权:
语法:SHOW  GRANTS  FOR 用户名

show   grants  for   user1;


5.删除用户:语法:drop  user  user1@localhost;


6.修改密码:
UPDATE  USER  SET  PASSWORD=PASSWORD('1234')  WHERE User='user2' and Host=’localhost’;


FLUSH PRIVILEGES;


7、查询连接数据库的用户show full processlist;

 

10. ---------DQL-----------------------


1.基础查询

SELECT selection_list   ----- /*要查询的列名称*/

FROM table_list  -------- /*要查询的表名称*/

WHERE condition -----------/*行条件*/

GROUP BY grouping_columns------- /*对结果分组*/

HAVING condition -------/*分组后的行条件*/

ORDER BY sorting_columns --------/*对结果分组*/

LIMIT offset_start, row_count------ /*结果限定*/


2.条件查询


 =、!=、<>、<、<=、>、>=;

 BETWEEN…AND;

 IN(set);

 IS NULL;

 AND;

 OR;

 NOT

 

3.模糊查询

1.模糊查询必须使用 LIKE 关键字。其中 “_”匹配任意一个字母,5 个“_”表示 5 个任意字母。


2.SELECT * FROM stu WHERE sname LIKE 'z%';
----其中“%”匹配 0~n 个任何字母。


3.去重---distinct----
--SELECT  DISTINCT   sal    FROM   emp;


4.-求和-
因为 sal 和 comm
两列的类型都是数值类型,所以可以做加运算
如果 sal 或 comm 中有一个字 段不是数值类型,那么会出错。

SELECT *,sal+comm FROM emp;
comm 列有很多记录的值为 NULL,因为任何东西与 NULL 相加结果还是 NULL,所以结算结果可 能会出现 NULL。
下面使用了把 NULL 转换成数值 0 的函数 IFNULL:
SELECT *.sal+IFNULL(comm,0) FROM emp。

5.SELECT *.sal+IFNULL(comm,0) AS total FROM emp;
给列起别名时,是可以省略 AS 关键字的
SELECT *.sal+IFNULL(comm,0) total FROM emp;

 

4.排序

1.降序---desc

 

2.升序---asc

SELECT * FROM stu ORDER BY sage ASC;

或者

ELECT * FROM stu ORDER BY sage;

当省略时,默认的升序

 

5.聚合函数

聚合函数是用来做纵向运算的函数:

COUNT():统计指定列不为 NULL 的记录行数;

MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;

MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为 0;

AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为 0;

 

 

6. 分组查询

 

 

 

7.limit

LIMIT 用来限定查询结果的起始行,以及总行数。

 

 

11. 完美性约束

主键---primary     key 

建表时给定主键:

create  table stu(sid char(10), sname varchar(20), age int, gender  varhchar(10),  primary key (sid));


建表后,增加主键:

alter  table stu add primary  key  (sid);


删除主键:

alter  table stu drop primary  key

 

主键自增长---primary key  auto_increment

当主键是int类型时才可以自增长

建表时给定主键自增长

create table  stu(sid int  primary key auto_increment, sname varchar(20), age int, gender  varhchar(10);


修改表时设置主键自增长:

alter table stu  change sid  sid int auto_increment;


修表时删除主键自增长:

alter table stu  change sid sid int;

 

非空---

在指定非空列表时一定要给值,不能把非空列表设置为null

建表时设置非空列表:

create table  stu(sid int  primary key auto_increment, sname varchar(20)  not null , age int, gender  varhchar(10));

 

唯一 ---unique

建表时给定唯一列表:

create table stu(sid (10) primary key auto_increment, sname varchar(20) uniqu);

 

外键:


备份和恢复数据:

 

 

 

 

--–-多表查询----------

1、合并结果集---把两个select查询结果合并到一起---注意:合并的两个结果  列数、类型  必须相同

第一种方式:

去重复记录---union:

select * from t1  union  select * from t2 ;


第二种方式:

不去重复记录---union all:

select * from t1 union all select * from t2;


2、连接查询-求多个表的乘积:

select * from t1,t2;

产生了笛卡尔积

 

 

3、内连接

标准:

select * from emp e  inner  join dept d  on e.deptno=d.deptno ;

方言:

SELECT e.ename,e.sal,e.comm,d.dname FROM emp AS e,dept AS d WHERE e.deptno=d.deptno;

 

 

4、外连接---左连接、右连接

查询出的结果存在不满足条件的可能。

左连接

select * from emp e  left  outer  join  dept d  on  e.deptno = d.deptno ;

左连接是先查询出左表(即以左表为主),然后查询右表,右表中满足条件的显示出来,不满足 条件的显示 NULL

 

右连接

select * from emp e  right  outer  join  dept d  on  e.deptno = d.deptno ;


自然连接


子查询

 

 

 

 

 

 

 

 

 

 

 

 

 


文章转载自灰灰的雪糕打可乐,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论