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短语的条件中的查询。