MySQL(总结)

时间:2024.5.15

MySql数据库

一.表的类型:

ISAM表

索引顺序储存方法。是旧的MySQL标准,用于3.23.0以前的版本。 MyISAM表

从3.23.0开始,MyISAM表代替了ISAM表。

MyISAM索引ISAM表小得多,相通会使用更少的资源来执行带有索引的SELECT 语句。

MERGE表

MERGE表是相通的MyISAM表的合并,从3.23.24中开始引进的。

优点:很多情况速度更快、表的尺寸小、

缺点:对于某些搜索(eq_ref),速度很慢。

HEAP表

存储在内存里,速度最快的表。

数据可能会在出现问题后丢失,而且不能保留太多数据。

InnoDB表

是事务安全的表类型。

MyISAM表中在插入是整个表被锁定。InnoDB 只锁定该记录。所以如果执行大量的UPDATE 和INSERT,应该使用InnoDB;如果主要用来执行SELECT,MyISAM是更好的选择。

BDB表

伯克利数据库。接口不甚稳定。

二. MySQL中的数据类型

<1> 数值型

<2> 字符(串)型

<3> 日期和时间型

{

1.整型

{

(1) TINYINT 1字节

(2) SMALLINT 2字节

(3) MEDIUMINT 3字节

(4) INT 4字节

(5) BIGINT 8字节

}

2.浮点型

{

(1) FLOAT 4字节

(2) DOUBLE 8字节

(3) DECLMAL

}

3.字符串

{

(1) CHAR 1字节

(2) VARCHAR 1字节 注:可以释放空间

(3) TEXT 2字节

(4) MEDIUMBLOB 3字节

(5) LONGTEXT 4字节

(6) ENUM 1或2字节 注:取决于枚举值的数目 (复合类型)

(7) SET 1,2,3,4或8字节 取决于集合成员的数量 (复合类型) }

4.日期时间型

{

(1) DATETIME '0000-00-00 00:00:00' 占19位

(2) DATE '0000-00-00'

(3) TIMESTAMP 00000000000(长度取决于显示尺寸,并且有专有的 更新特性,默认为当前时间)

(4) TIME '00:00:00'

(5) YEAR 0000 占一个字节

}

}

Sql语言的分类:DDL(数据库定义语言):create、drop、alter

DML(数据库操作语言):insert、delete 、update、select

DCL(数据控制语言):grant、revoke

事务控制语言:committ、rollback

二. 约束:

{

1. primary key 主键约束

2. foreign key 外键约束

3. default 默认约束

4. unique 唯一约束

5. check 检查约束

6. not null 空约束

}

约束的基本操作:

1.主键约束

{

定义主键:

方法1: 列名 + primary key

方法2: alter table 表名

add constraint 逻辑名 primary key

方法3: primary key(列名)

删除主键:

alter table 表名 drop primary key

} 2.外键约束 { 定义外键: 方法1: 列名 + references 主表(列名) 方法2: constraint 逻辑名 foreign key(列名) references 主表( 列名) 方法3: foreign key references 主表(列名) 删除外键:

}

3.唯一约束

{

}

4.非空约束

{

}

5.检查约束

{

}

6.默认约束

{

alter table 表名 drop foreign key 逻辑名 义: 方法1: 列名 + unique 方法2: constraint 逻辑名 unique(列名) 方法3: alter table 表名 add constraint 逻辑名 unique(列名) 除: alter table 表名 drop unique 义: 方法1: 列名 + not null 方法2: alter table 表名 change 旧列名 新列名 varchar(20) not null 除: alter table 表名 change 旧列名 新列名 varchar(20) null 义: eg: 列名 + check( sex = '男' or sex = '女') eg: 列名 + check( email like '%@%') 除: 手动删除 (注:代码不可以实现删除功能) 义: 方法1: 列名 + default ''

方法2: alter table 表名 change 旧列名 新列名 类型 default

删 除:

alter table 表名 change 旧列名 新列名 类型 default null

}

三.对表的操作

1.修改表名

方法一: rename table 旧表名 to 新表名

方法二: alter table 旧表名 rename to 新表名

2.修改列名

alter table 表名 change 原列名 新列名 类型

3.修改列的属性

<1> MySQL alter table 表名 change 旧列名 新列名 属性

<2> SQLServer alter table 表名 column 列名 属性

<3> Oracle alter table 表名 modify 列名 属

4.修改表的类型 alter table 表名 type=表类型

5.查看所有数据库

show databases

6.查看所有表

show tables

7.查看表的结构

desc 表名

8.自动标识

auto-increment

四.DML语言的操作

1.insert into 表名[(列名)] values(值) 或者是 select语句

2.update 表名

Set 列名=[select 的值 或者是具体的值] ,列名……

Where 条件

3.delete from 表名

Where 条件

Truncated table 表名

4.select 显示的内容 from 表名

Where 条件

Group by 列名

Having 条件

Order by 列名 desc 降序、 asc 升序

Limit 显示的行数

.查询前5条信息

<1> MySQL select * from 表名 limit 5

<2> SQLServer select top 5 * from 表名

<3> Oracle select * from 表名 where rownum<=5

高级查询:

连接查询:交叉连接、内连接(等值连接)、外连接(左连接、右连接、全连接),自

连接和自然连接

嵌套查询:查询工资大于1000的员工姓名(姓名在employ表中,工资在emp_salary表中)

Select emp_name from employ where emp_id in(select emp_id from emp_salary where salary>1000)

Select emp_name from employ where emp_id=any(select emp_id from emp_salary where salary>1000)

Select emp_name from employ where emp_id=some(select emp_id from emp_salary where salary>1000)

合并查询: unoin(并)

五.索引

1.索引的概念和作用

2.索引的类型

3.索引的创建在什么样的列上

4.创建的方法

eg:

create index ff on employ(emp_name) ------------创建索引 select * from employ where emp_name='蚩尤'

alter table employ ---------删除索引 drop index ff

或者是 drop index 索引名 on 表名

六.视图

1.视图的概念和优点

2.视图的创建

3.视图的定义和应用

4.查看视图

七. 函数:

1.字符串函数

ASCII(str) 返回字符串str最左边的那个字符的ASCII码值

CONCAT(str1,str2) 将参数连接成字符串返回

LENGTH(str) 返回一个字符串的长度

LOCATE(small,big) 返回一个small在big的位置

INSTR(big,small) 返回一个small在big的位置

SUBSTRING(str from pos) 从字符串str的起始位置pos返回一个字符串

REPLACE('asdf','sd','ff') 返回'affff'

2.数学函数

floor(x) 返回不大于x的最大整数值

ceiling(x) 返回不小于x的最小整数

round(x) 四舍五入

rand() 返回一个随机小数

3.日期函数

DATE_ADD(date,INTERVAL EXPR TYPE) 对日期进行加减运算

DATE_FORMAT(date,format) 根据format字符串格式化date值

eg:

SELECT DATE_FORMAT(CURDATE(),'%Y'); ----------提取当前时间的年份 SELECT DATE_FORMAT(CURDATE(),'%M'); ----------提取当前时间的月份 SELECT DATE_FORMAT(CURDATE(),'%S'); ----------提取当前时间的秒 SELECT DATE_FORMAT(CURDATE(),'%D'); ----------提取当前时间的日期

curdate() 显示当前日期

now() 显示当前日期时间

select datediff(curdate(),'2008-8-8');------------返回当前时间和‘2008-8-8’的时间差

八.事务:是数据库中一个重要机制,用来确保数据的完整性和并发处理能力,是将一条和一组sql语句看成一个逻辑单元,在执行过程中同时成功或同时失败。

1.原子性

2.一致性

3.隔离性

4.持久性

九.锁

LOCK TABLES 锁定表

UNLOCK TABLE 解锁

十.存储过程

特点:

优: <1> 速度快

<2> 安全

<3> 效率高

<4> 编码

缺:

服务器配置必须高

常用命令

1.show procedure status 显示数据库中所有存储的存储过程的基本信息.

2.show create procedure sp_name 显示某一个存储过程的详细信息

格式:

CREATE PROCEDURE 过程名(参数)

begin

declare //申明变量

end

call 过程名

条件语句

if 条件 then

statemen

else

statemen

end if;

循环语句

(1)while()

statemen

end while;

(2)[label:]loop

statemen

end loop;

(3)repeat

statemen

until 条件

end repeat

十一.触发器

1.功能:

1.完成复杂的约束

2. 实现事务的原子性

3. 审计日志

2.触发器与存储过程的区别

触发器 存储过程

不带参数 带参数

隐示调用 显示调用

特殊的存储过程

3.类型

DDL触发

DML触发

Instead of 触发

数据库触发

4.语法

CREATE TRIGGER

{BEFORE/AFTER}

{INSERT/UPDATE/DELETE}

FOR EACH ROW //行触发

eg:

select * from course

create trigger my_tr

before

insert on course

for each row

begin

insert into a values(4,444) ;

end;

select * from a

drop trigger my_tr //删除触发器 insert into course values(4,'MySQL');

九.备份和恢复

逻辑

{

导入

导出

}

物理

{

}

语法:

备份:

mysqldump -u root -p 数据库名>/home/ttt.sql 还原:

create database tt

mysql -u root -p tt</home/ttt.sql

十.授权

eg:

增加一个用户test 密码为abc 让她可以在任何主机上

登录,并对所有数据库有查询,插入,修改,删除的权限.

Revoke from

grant select,insert,update,delete on *.* to test @"%"

Identified by "abc" //设置密码

ON 子句中*.*说明符的意思是"所有数据库,所有的表"

经典例题

-------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------

-------------------------------------------超市销售管理系统---------------------------------------

一 . 数据库设计:

1 .公司名称(varchar(20)),店面名称(varchar(20)),收款机号(int (不能重复)),收款员姓名(varchar(10)),

收款员编号(int (不能重复)),商品编码(int (不能重复)),商品名称(varchar(50)),进货价格(numeric(精度10,小数位数4)),销售价格(numeric),库存(int),销售数量(int),销售时间(精确到秒)。

2 .测试数据要求,收款机不能少于2台,收款员不能少于3人,商品数量不能少于5个,单日销售数量不能少于5个,商品的进货价格和销售价格保留2位小数。

二. 具体功能:

1. 将每日的销售数量进行汇总,生成销售日报表, 将报表的数据上传到服务器端,上传内容包含:商品编码,商品名称,商品销售单日总数量,销售总额,利润(每个商品),公司名称,店面名称,收款机号,收款员编号(顺序不能更改),当天日期(精确到天)。

2. 利润计算公式 利润=(销售价格-进货价格)*85%

3.把所得数据上传到远程服务器 数据库ip:192.168.1.100 数据库名:pubs 表名:abc 用户名 :sa 密码 :sa

create database tset

on primary

(name=test_date,

filename='e:\test1.mdf',

size=3,

filegrowth=10%)

log on

(name=test_log,

filename='e:\test2.ldf',

size=3,

filegrowth=10%)

create table 店面表

(店面编号 int primary key,

店面名称 varchar(20),

公司名称 varchar(20),

店面地址 varchar(100),

联系地址 varchar(20))

create table 收款机表

(收款机编号 int primary key,

型号 varchar(20),

店面编号 int,

constraint fp_7 foreign key(店面编号) references

create table 员工表

(员工号 int primary key,

员工名 varchar(20),

性别 char(3),

地址 varchar(30),

电话 varchar(15),

身份证 char(18))

create table 收款状况表

(id int primary key, 店面表(店面编号))

员工号 int,

收款机编号 int,

开始工作时间 datetime,

离开工作时间 datetime,

constraint fp_1 foreign key(员工号) references 员工表(员工号),

constraint fp_2 foreign key(收款机编号) references 收款机表(收款机编号) )

create table 商品表

(

商品编号 int primary key,

商品名称 varchar(50),

进货价格 numeric(10,4),

库存数量 int,

店面编号 int,

constraint fp_7 foreign key(店面编号) references 店面表(店面编号) )

create table 进货表

(id int primary key,

商品编号 int,

员工号 int,

进货价格 numeric(10,4),

进货数量 int,

constraint fp_8 foreign key(商品编号) references 商品表(商品编号) )

create table 销售表

( id int primary key,

收款机编号 int,

商品编号 int,

销售数量 int,

销售价格 numeric(10,4),

销售时间 datetime,

constraint fp_4 foreign key(商品编号) references 商品表(商品编号),

constraint fp_2 foreign key(收款机编号) references 收款机表(收款机编号) )

-----------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------

-------------------------------------学员的学籍管理--------------------------------------------

注册所有学生的基本信息。包括学号、姓名、性别、年龄、籍贯。专业、学制、入学时间、生源 .实现查询:

学员的查询:

学员基本信息的查询:

a) 按姓名查询

b) 按城市查询。

c) 按市场部查询。

d) 按学院查询。

e) 按班级查询。

f) 按到校日期查询。

编写一个存储过程不管你输入几个条件都能等到你需要的结果(sql server 的写法)

CREATE PROCEDURE pro_select

@sname varchar(20),

@addr varchar(20),

@baoxiao varchar(20),

@xueyuan varchar(20),

@sno varchar(20),

@comdate datetime

as

create table #mytp

(s_no varchar(20))

declare @i int

set @i=0

if @sname<>''

begin

insert into #mytp select s_number from s_info where s_name=@sname

set @i=@i+1

end

if @addr<>''

begin

insert into #mytp select s_number from s_info where addr=@addr

set @i=@i+1

end

if @baoxiao<>''

begin

insert into #mytp select s_number from s_info where bao_xiao=@baoxiao set @i=@i+1

end

if @xueyuan<>''

begin

insert into #mytp select s_number from s_info where xueyuan=@xueyuan

set @i=@i+1

end

if @sno<>''

begin

insert into #mytp select s_number from s_info where left(s_number,len(s_number)-2)=@sno

set @i=@i+1

end

if @comdate<>''

begin

insert into #mytp select s_number from s_info where come_date=@comdate set @i=@i+1

end

select * from s_info

where s_number in (

select s_no from #mytp group by s_no having count(*)=@i)

SELECT * FROM s_info

--参数依次为姓名、城市、市场部、学院、班级、到校日期

exec pro_select '方超','山西','','','',''

--------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------

更多相关推荐:
SYB活动总结

活动总结这个暑假我有幸参加了学校的SYB培训。“SYB”意思是“创办你的企业(STARTYOURBUSINESS)”,这门课程的内容分两个部分,共十步,步步相扣,逐渐深入。创业对大多数人而言,是一件极具诱惑的事…

SYB教研工作总结报告

20xxSYB教研工作总结报告张继生作为一名SYB讲师只有经常不断地进行学习研究才能从平凡的司空见惯的事物中找到新的教学方法新的培训技能本年度即将结束回顾这一年的教研工作情况现将其总结如下一自身学习方面1坚持学...

SYB创业培训心得体会

20xx年x月我很荣幸的参加了SYB培训班.SYB是指创办你的企业(StartYourBusiness),在这短暂的10天学习生活中,我学到了很多有关创业的专业知识,通过这次学习也给的人生增添了丰富多彩的新篇…

20xx年SYB培训工作总结

西关街道新福路东社区为推动下岗失业人员自主创业和自谋职业,营造全民创业的氛围,社区组织辖区的下岗失业人员、个体工商户等有创业愿望的人员参加SYB创业培训,充分发挥创业带动就业的引领作用。6月x日,新福路东社区组…

SYB创业培训心得体会

SYB创业培训班学员王立辉在这次短暂的7天学习生活中,我学到了有关很多创业的专业知识,通过这次学习我更加坚定自己的创业梦想。“SYB”意思是“创办你的企业(STARTYOURBUSINESS)”,这门课程的内容…

SYB创业培训学习总结

SYB创业培训学习总结总结转眼间10天的即将结束这10天里首先的是xx市人力和保障局xx市培训xx市平型关技术给我们创造了这个平台更感谢的是默默奉献了10天的们是他们指引了我们创业企业的门是他们每天口干舌燥的为...

syb创业培训心得

培训心得今天,我怀着激动而又不安的心情,激动的是,经过了近半个月的努力学习,我们已经修完了所有的课程,掌握了基本的创业知识,迎来了这隆重的结业仪式;不安的是还没完全准备好的我们,就要告别这理论的课堂,到社会去进…

syb创业培训学习心得

SYB青年创业培训班学员20xx年x月x日我很荣幸的参加了SYB培训班。在这短暂的两周学习生活中,我学到了很多有关创业的专业知识,通过这次学习也给我的人生增添了丰富多彩的新篇章。刚开始参加SYB培训时,看到…

SYB创业培训感想心得

SYB创业培训感想心得SYB青年创业培训班学员20xx年7月14日我很荣幸的参加了SYB培训班在这短暂的7天学习生活中我学到了很多有关创业的专业知识通过这次学习也给我的人生增添了丰富多彩的新篇章刚开始参加SYB...

创业培训工作总结

20xx年创业培训年度工作总结学院为了推动20xx年大学毕业生自主创业营造在校大学生自主创业的氛围学院就业指导中心组织有创业意愿的大学生参加SYB创业培训充分发挥创业带动就业的引领作用6月1日学院就业指导中心组...

培训班工作总结

安顺市20xx年党员创业带富工程SIYB中国项目SYB培训班工作总结根据安顺市农村党员创业带富工程实施方案安排由安顺市委组织部市人力资源和社会保障局主办西秀区委党校承办的全市20xx年党员创业带富工程SIYB中...

培训中心20xx年度工作总结

工作总结敬业务实开拓创新强化管理打造品牌全面推进培训工作再上新台阶再创新辉煌聚馨培训中心20xx年度培训工作总结20xx年是培训中心充满挑战与机遇的重要一年也是困难重重艰难寻求突破口的转折之年一年来在董事长的坚...

syb总结(6篇)