Mysql(1)

数据库:

SQL语句分类:

1.DDL:数据定义语言,用来定义数据库对象,库,表,列等;>创建、删除、修改,库,表结构。

2.DML:数据操作语言,用来定义数据库记录(数据),>增,删,改。

3.DCL:数据控制语言,用来定义访问权限和安全级别。

4.DQL:数据查询语言,用来查询记录(数据)。

 DDL

1.数据库

  • 查看所有数据库:SHOW DATABASES
  • 切换(选择要操作的数据库) 数据库: USE 数据库名
  • 创建数据库:CREATE DATABASE [ IF NOT EXISTS]  mydb [CHARSET=utf8]
  • 删除数据库: DROP DATABASE  E [ IF EXISTS]  mydb
  • 修改数据库编码: ALTER DATABASE mydb CHARACTER SET utf8

2.表

  • 创建表

IF NOT EXISTS(SELECT * FROM DBO.SYSOBJECTS WHERE ID=OBJECT_ID(N'[DBO].[EMPLOYEES]') AND
OBJECTPROPERTY (ID,N'ISUSERTABLE')=1 )

CREATE  TABLE     tablename(

 nubmber  char(11),

 name  varchar(10),

 age   int,

gender varchar(10),

);

  • 查看当前数据库所有表名称: SHOW TABLES;
  • 查看表结构:DESC 表名;
  • 删除表: DROP TABLE 表名 ;
  • 修改表: ALTER TABLE 表名

添加列

alert  table 表名 add(

列名  类型,

列名  类型,

);

修改列类型

alert  table 表名 modify  列名 类型名;

修改列名

alert  table 表名 change 原列名  新列名  类型名;

删除列

alert  table 表名 drop  列名  ;

修改表名称

alert  table 原表名 rename to 新表名;  

 DML

DQL: SELECT * FROM 表名

1.插入数据

insert into 表名(列名1,列名2,. ..)values(列值1,列值2,...);

2.修改数据

update  表名 set 列名1=列值1,列名2=列值2,列名3=列值3,

3.删除数据

 delete  from 表名[where 条件] 

DQL

一、基本查询

1)查询所有列

select  * from 表名

2)查询指定列

select  列1 ,列2 ,...... from  表名

3) 完全重复的记录只查询一次

select  distinct  列1, 列2 ......

4)列运算

a. 数量类型的列可以做加、减、乘、除运算

b.字符串类型可以做连续预算

select  concat (‘$’,sal)

c.转换NULL值

select ifnull(comm,0)

d.给列起别名

select  uid id ,name ......

2.条件控制

1)条件查询

select   *  from  表名  where   .....

2)模糊查询

select  * from   表名  where   like  

% 匹配任意个数字符

_ 匹配一个字符

二、排序

 order  by  emo asc (升序)  默认

order  by   comm desc (降序)

使用多列作为排序条件

select  * from  where  emo order by  sal   asc , comm desc ,empno asc

三、聚合函数

1)count

2)max

3)min

4)sum

5)avg

四、分组查询

select   deptno conut(*) group by emo

五、limit 字句(方言)

limit 用来限制查询结果的起始行,及查询记录数

 mysql备份与恢复数据

备份:mysqldump -u用户名 -p密码 数据库名 > 生成的脚本文件路径

恢复: 1) mysqldump -u用户名 -p密码 数据库名 <生成的脚本文件路径

            2)  source : 生成的脚本文件路径

 约束

1.主键约束:(唯一约束)[ 非空,唯一,被引用]    auto_increment (自增长)

2.非空约束: not null

3.唯一约束:unique

表与表之间的关系:

一、一对一关系

1)表结构设计(建物理表)

法1:分开两个独立的表
create table wife(
  id int primary key,
  name varchar(10),
  sex char(1)
);

create table husband(
  id int primary key,
  name varchar(10),
  sex char(1),
  wid int unique,
  constraint husband_fk foreign key(wid) references wife(id)
); //通过constraint约束体现一对一


法2:合并在一个独立表
create table person(
  id int primary key,
  name varchar(10),
  sex char(1),
  wife int,
  husband int
);

二、多对多关系

在表中建立多对多关系,需要三张表,在中间表使用两个外键,分别引用其他两个表的主键。

create table student(
  sid int primary key,

}

create table teachert(
 tid int primary key,

}

create table stu_tea(
  sid int,

  tid int,

constraint fk_student foreign key(sid) references student(sid),

constraint fk_teacher foreign key(tid) references teacher(tid),

}

多表查询:

1)分类:

合并结果集查询

 UNION 作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

tables: 要检索的数据表。
WHERE conditions: 可选, 检索条件。
DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
ALL: 可选,返回所有结果集,包含重复数据。

 关联查询

内连接:

左外连接:

右外连接:

 左连接:

 

 右连接:

 

全连接:可以使用union来完成全连接

子查询

 子查询是一个嵌套在select 、insert、update或delete语句或其它子查询中的查询。任何允许使用表达式的地方都可以使用子查询。

 子查询语法:

 select [all | distinct ] <select item list> from <table list> [ where <search condition>] [group by <group item list>] [having <group by search conditon>]

  嵌套查询

嵌套查询是指将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询。

 

原文地址:https://www.cnblogs.com/ming-long/p/11577745.html