MySQL数据库

1.数据库简称(DB)
2.数据库管理系统简称(DBMS)
在windows操作系统下安装MySQL
安装关键步骤:端口设置3306
:编码设置UTF8
:密码设置
3.在cmd里启动MySQL:net start mysql
关闭:net stop mysql
进入cmd里面必须以管理员的身份进入操作才不会报错。
select version (显示版本号)
select * from 表名字 查询表里面的所有表单。
mysql -h(连接主机,本机是:localhost) -uroot(用户名) -p(用户名密码);
show tables 显示某个数据库的表

结构化查询语句SQL:
DDL 定义和管理数据对象,如数据库,数据表 CREATE DROP ALTER
DML 用于操作数据库对象中锁包含的数据 INSERT UPDATE DELETE
DQL 用于查询数据库数据 SELECT
DCL 用于管理数据库的语言,包括管理权限及数据更改GRANT COMMIT ROLLBACK

HELP contents 是MySQL帮助文档,可以查询所有属性和信息。
命令行操作数据库:
创建数据库; create database if not exists 数据库名;
创建数据库表: create table if not exists 表的名字;
删除数据库: drop database if exists 数据库名;
删除数据库表: drop table if exists 表的名字;
查询数据库: show databases;
使用数据库: use 数据库名;
退出数据库: exit
寻求帮助: ?
换行: \G
唯一约束: unique key 设置字段的值是唯一的,允许为空,但只能有一个空值。
默认约束: default
非空约束: not null
主键约束: primary key
外键约束: foreign key
默认值设定: default
注释: comment
自动增长: auto_increment
不能为负数: unsigned
不足位数填充: zerofill
设定没有值: null
必须填写值: not null
日期和时间: datetime YY-MM-DD hh:mm:ss
系统当前时间: now()
追加字符串: concat()
用来分页的: limit 0,3 意识是显示4条,每页显示4条。
去除重复项: distinct

创建数据表时指定数据表的编码格式:charset = utf8
把原有的数据截取出来存入新的表中:
create table 新表(select 字段1字段2 from 原表名)
把原有的数据创建原有的表里面:
insert into 表名 select 字段1,字段2 from 原表名
函数:
AVG() 返回某字段的平均值
COUNT() 返回某字段的行数
MAX() 返回某字段的最大值
MIN() 返回某字段的最小值
SUM() 返回某字段的和
CONCAT() 字符串连接 SELECT CONCAT(‘My’,‘S’,‘QL’);
返回:MySQL
INSERT() 字符串替换 SELECT INSERT(
‘这是SQL Server数据库’,
3,10,‘MySQL’);
返回:这是MySQL数据库
LOWER() 将字符串转为小写 SELECT LOWER(‘MySQL’);
返回:mysql
UPPER() 将字符串转为大写 SELECT UPPER(‘MySQL’);
返回:MYSQL
SUBSTRING
(str,num,len) 字符串截取 SELECT SUBSTRING(
‘JavaMySQLOracle’,5,5);
返回:MySQL

CURDATE() 获取当前日期 SELECT CURDATE();
返回:2016-08-08
CURTIME() 获取当前时间 SELECT CURTIME();
返回:19:19:26
NOW() 获取当前日期和时间 SELECT NOW();
返回:2016-08-08 19:19:26
WEEK(date) 返回日期date为一年中的第几周 SELECT WEEK(NOW());
返回:26
YEAR(date) 返回日期date的年份 SELECT YEAR(NOW());
返回:2016
HOUR(time) 返回时间time的小时值 SELECT HOUR(NOW());
返回:9
MINUTE(time) 返回时间time的分钟值 SELECT MINUTE(NOW());
返回:43
DATEDIFF(date1,date2) 返回日期参数date1和date2之间相隔的天数
SELECT DATEDIFF(NOW(),
‘2008-8-8’);
返回:2881
ADDDATE(date,n) 计算日期参数date加上n天后的日期
SELECT ADDDATE(NOW(),5);
返回:2016-09-02 09:37:07

RAND() 返回0~1间的随机数 SELECT RAND()
返回:0.5525468583708134

创建表的时候创建外键:
constraint 外键名 foreign key(外键字段)
references 关联表名(关联字段)

创建完表以后想关联主外键:
ALTER TABLE 表名 ADD CONSTRAINT 外键名
FOREIGN KEY(外键字段)

REFERENCES 关联表名(关联字段);

删除外键语句:
alter table 表名 drop foreign key 索引的名字;
alter table student drop index 索引的名字;

修改数据表:
修改表:修改表明
alter table 旧表名 rename as 新表名
添加字段:
alter table 表名 add 字段名 列类型【属性】
修改字段:
alter table 表名 modlfy 字段名 列类型【属性】
alter table 表名 change 旧字段名 新字段名 列类型【属性】
删除字段:
alter table 表名 drop 字段名
删除表:
drop table if exists 表名

创建表列类型设置:
·字段名· 类表类型【属性】 【索引】【注释】
类表分类:
数值:tinyint 非常小的适合存放年龄(存放127以下的数字)
:int 标准整数
:double 存放小数
:decimal(m,d) 用于存放货币(M.表示长度。d:表示小数点后面有几位)
字符串:
char[(m)] 固定长度不可变,M设置多少就加载多少
varchar[(m)] 长度可变,但是加载速度有点慢
text 文本字符串(比如说:比较长的合同)

查看数据库的定义
show create database 写要查看的数据库的名称
查看数据表的义
show create table 写要查看的数据类表
显示表结构
desc 写要产看的数据类表

#设置严格检查模式:判断是否超出设定的数值就报错
SET aql_mode=‘strict_trans_tables’;
#产看Mysql所支持的引擎类型
SHOW ENGINES;
#查看默认引擎
SHOW VARIABLES LIKE ‘storage_engine’
Mysql的数据表的类型:
MyISAM: 节约空间及相应速度
*。frm 表结构定义文件;
*。MYD 数据文件
. MYI 索引文件
InnoDB: 安全性,事务处理及多用户操作数据表
InnoDB类型数据表只有一个
.frm文件,以及上一级目录的idbata1文件


如何在表中添加数据:
通过DML语句管理数据库数据:
insert 添加数据语句
insert into 表名 (字段) values(值);
update 更新数据语句
update 表的名字 set 列=“输入要修改的值” 修改一个
where 列的ID=值

update 表的名字 set 列=“输入要修改的值”		修改多个
where 列的ID between 1 and 10			

where条件运算符:
    	<>或!=		不等于的
	between		在某个范围之间	举例:between5 and 10
	and		并且
	or		或者

delete 删除数据语句
DELETE 表列[FROM] 表名 WHERE 列名=后面要删除的值
DELETE [FROM] 表名 WHERE 列名=后面要删除的值
delete test 表名 是删除数据,但是不删除自增

truncate table 表名	是删除所有数据,包括自增

select语法
SELECT <列名|表达式|函数|常量>

FROM <表名>

[WHERE    		<查询条件表达式>]
[group by 分组名]	<指定结构按照那几个字段来分组>
[having]		<过滤分组的记录必须满足条件的>
[ORDER BY 排序名] 	<排序的列名>[ASC或DESC]]
[limit 0,0]		<指定查询的记录从哪条至那条>

select * from 表名		产看所有
select distinct 列名 from 表名	取出重复项,只看一个(distinct关键单词)
select @@auto_increment_increment产看自增的步数是多少
select version()		产看版本号

学员考试成绩查看的时候集体提一分:
select 学号 成绩+1 ‘提分后’ from 表名

满足条件查询95到100之间的成绩(where)
select 学号,成绩
from 表名
(1)where 成绩>=95 and 成绩<=100;或(2) where 成绩 between 95 and 100;

精确查找10015号同学:
select 学号,成绩
from 表名
where 序号=10015
如果查询不要10015号的就在后面加个!

like 结合使用的通配符:%(0到任意一个字符) (一个字符)
select 学号,姓名
from 列表
where 姓名 like’李
’ 查找所有的姓名中包含李后面一位的名字
查找姓名中查找带“文”的,只要带文的就查找出来
selsect 学号,姓名
from 表名
where 姓名 like ‘%文%’
查找学员姓名中带有“%”这个词的学生 转移符:%
select 学号,姓名
from 表名
where 姓名 like “%%%” 把%分好给转意了。
模糊查询多个
select 学号,姓名
from 表名
where 姓名 in(1000,1001,1002,1003);
查询出生日期为空的同学
select 姓名
from 表名
where 日期 is null

内连接:
SELECT 属性

FROM 表1

INNER JOIN 表2

ON 表1=表2

创建临时表:
CREATE TEMPORARY TABLE 表名(查询语句)
临时表只在当前连接可见,连接关闭自动删除,修改临时表数据不影响原表数据


	mysql事务处理

1.事务处理的ACID原则
1.原子性(Atomic) 一块执行要么失败,要么一块成功
2.一致性(Consist) 要么提交前,要么提交后的状态,不能为别的状态
3.隔离性(lsolated) 事务是隔离的,互不影响
4.持久性(Durable) 就是保留着持久性。

2.MYsql中默认是自动提交。使用事务时应先关闭自动提交。
set autocommit=0 关闭自动提交模式
set autocommit=1 开启自动提交模式
start transaction 开始一个事务,标记事务的起始点
commit 提交一个事务给数据库
rollback 将事务回滚,数据回到本次事务的初始状态
set autocommit=1 还原Mysql数据库的自动提交
3.数据库索引
分类:主键索引 (primary key)
唯一索引 (unique)
常规索引 (index) index和key关键字都可以设置常规索引
全文索引 (fulltext)
全文索引:只适用于MYISAM类型的数据表
只适用于CHAR、VARCHAR、TEXT数据列类型
适合大型数据集
alter table 表名 engine=MYISAM;
select * from 表名 where match(列) against(‘列里面的值’)
engine=myisam; 设置myisam类型
创建文件的时候加入索引
CREATE INDEX 索引名 ON 表名(列名); 普通索引
CREATE UNIQUE INDEX 索引名 ON 表名(列名); 唯一索引

查看索引
SHOW INDEX FROM 列名;

explain   		带你看系统执行那种索引的方式
show index from 表名:	显示索引信息

删除一个索引:
1.drop index 索引里面的名字 on 表名;
2.alter table 表名 drop index 索引里面的名字;
主键的索引删除:
alter table 表名 drop PRIMARY KEY;

4.索引准则
1.索引不是越多越好
2.不要对经常变动的数据加索引
3.小数据联的表,建议不要加索引
4.索引一般加在查找条件的字段


1.MySQL的备份
mysqldump备份工具 source 命令恢复
mysqldump -h主机名 -u账号 -p密码 -[c(添加列名)]数据库名 【列1 列2】>b./路径/文件名.sql
恢复备份的文件:
source命令恢复
use 数据库名: 点击回车
source h:/哪个盘符/备份的文件名
mysql数据恢复:
mysqldump -h主机名 -u账号 -p密码 数据库名<h:/哪个盘符/备份的文件名
mysq -u账号 -p数据库名<h:/哪个盘符/备份的文件名

2.使用sqlyog工具来备份
注意事项,打钩的地方要注意


数据库设计:
实体,一般名词 用长方向
属性,一般名词 用椭圆形
联系,一般动词 菱形代替
数据库设计三大范式:
1.确保每列的原子性,就是不可再拆分的详细点了
2.每张表都描述一件事情,确保每张表都跟主表相关。
3.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值