1.数据库作用
数据是数据库中存储的基本对象,包括:文字 图形 图像 声音 有组织的 可共享的数据集合
2.常用的DBMS
MYSQL oracle SQL-Server DB2
3.MYSQL登录
开始-运行-cmd 输入:mysql -uroot -p,然后输入密码或者 mysql -uroot -p 密码 退出 quit \q
4.基本SQL语句
创建数据库–create database school;
查看有哪些数据库—show databases;
删除数据库-drop database school;
5.向数据库中存储数据
首先进入数据库 use dbname;
查看数据库中的表 show tables;
在数据库中创建表 create table student(name varchar(20),age int sex char(2));
向表中插入数据-insert into dbname values(‘张三’,18,‘男’);
查看表中所有的数据–select * from student;
只查看姓名和年龄–select name,age from student;
6.常用的数据类型
char varchar int
7.其他常用的数据类型
date datetime text/blob
8.mysql常用函数
查看数据库版本-select versin();
查看当前数据库时间–select current_date();
查看当前连接数据库的用户–select user()
or(满足一个条件)和and(都需要满足)
in(x,x)返回条件中的记录与or作用相似
between and 返回两者之间的记录
like与%一起使用 模糊查询 like‘张%’ like‘3.com’ like’%a%’;
order by 实现排序-asc desc select * from stu order by age desc;
as为查询的列起别名 select name as ‘姓名’,age as ‘年龄’,sex as ‘性别’ from stu;
group by对于查询出的数据结果进行分类(分组)–select * from stu group by sex;
having子查询:对于where查询出的结果再次查询
查找出年龄大于20岁学生,并且在其中找出姓名等于xxx的学生
select * from stu where age>20 having name=’XX’ 或者age>20 and name=’XX’
destinct过滤查询的重复型记录,只显示唯一的记录
将学生的性别过滤—select distinct(sex) from stu;
count 查看表中有几条数据 select count(*) from stu;
limit限制查询结果的输出数量 同时也可以实现数据的分页
查询EQ前三名的学生—select * from stu order by EQ desc limit 3;
实现查询记录的分页 select * from stu limit 0,3;
约束—-定义表级的强制规则 数据的完整性
非空约束(not null) 唯一约束(UNIQUE) 默认约束(default) 主键约束(primary key)
id逐渐自增,减 auto_increment的特点—-自增值 当删除某一值时,他不会自动填充,而是继续自增1 外键约束(foreign key)
8.如何控制冗余数据
一般来说通过数据库的范式理论 设计数据库的范式来控制冗余
共有5个范式 一般达到第三范式 第一范式:对于表中的每一行,必须且仅仅有唯一的行值,在一行中的每一列仅有唯一的值并且具有原子性 第二范式 要求非主键列是主键的子集,非主键列活动必须完全依赖整个主键。主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯一值的列组成。一旦创建,主键无法改变,外键关联一个表的主键。主外键关联意味着一对多的关系。第三范式:要求非主键列互不依赖
MYSQL的聚合函数
1.最大值 找出EQ最高的学生 select name,eq from student where eq=(select max(EQ) from student);
select max(article) as article from shop;
2.最小值 找出EQ最低的学生 select name,min(EQ) from student;
3.count()统计查询出的记录总数 查询出学生的总条数 select count(name) from student;
4.avg()求平均值
查询学生EQ的平均值 select avg(EQ) from student;
5.sun() 求和
查询学生EQ的总和 select sum(EQ) from student;
6.修改字段类型 alter table student modify sex char(5);
增加列 alter table student add address varchar(50);
删除列 alter table student drop address;
修改列的名称 alter table student change name names varchar(20);
修改表的名字 alter table student to stu;
7.MYSQL之表连接
内链接:等值连接,因为他将两个表中的公共字段有相等的值连接起来。
左连接:显示sql语句中left join左边表中的所有记录,即使在left join右边的表中没有满足连接条件的数据也被显示。当满足连接条件时,left join右边的表中的相应的记录与left join左边表中的相应记录结合显示。
右连接:与左连接相对应,他显示sql中 right join右边表中的记录,即使在right join左边没有的记录也被显示。当满足条件时,right join左边表中相应记录将与right join右边表中相应记录进行结合显示。通常左连接和右连接显示内容一致。 left join 以左边的表查询为主 right join 以右边的表查询为主
8.MYSQL之视图
他可以访问一个或多个表中的数据,是从一个或多个表中派生出的数据对象
视图的特点:1将复杂的查询简单化 2,提供安全机制,它保证用户只可以看得到的数据,系统中真实的表不可被存取的
创建视图 create view case_view as select cases.id as ‘订单编号’,user.name as ‘顾客姓名’,goods.name as ‘物品名称’ from user inner join(case inner join goods on cases.goods_id=goods.id)on user.id=case.user_id;
create view test.v as select * from t;
修改视图:alter view viewname as SQL;
删除视图:drop view viewname;
9.MYSQL的事务与引擎
事务他是一个操作序列,这些操作要么执行要么不执行,他是一个不可分割的工作单位。
事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性
10.如何在innodb中实现事务:
begin 告知服务器要开始一个事务
rollback:如果事务发生异常,那么数据回滚
commit 事务执行成功,进行数据提交
11.锁 lock table tablename(read,write)
lock table 可以对表进行加锁控制,以保证用户并发访问时非事务表的数据一致性
unlock tables 释放锁
12.index 索引
索引是被用来快速找出在一个列上用一特定值的行。没有索引,MySQL不得不首先以第一条记录开始并然后读完整个表直到他找出相关的行,表越大,花费时间越多。如果表对于查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。
MySQL有四种类型的索引:主键(primary key),唯一索引(uinque),全文索引(full index),普通索引(index)
12.mysql的备份方式:backup restore copy mysqldump select into
backup备份myisam表 use test; backup table chat to ‘c:\\db_backup’;(只生成.frm和.myd 可以在数据库恢复后重建索引) drop table chat; restore table chat from ‘c:\\db_backup’;
copy备份 停止mysql服务器-避免在备份的时候有用户进行数据库的访问 复制数据库的文件夹
mysqldump备份
1.备份 #mysqldump -uroot -p dbname >xxxname.sql 2.恢复 #mysql -uroot -p dbname<>
备份某个表
备份 #mysqldump -uroot -p dbname tablename >xxxname.sql
恢复 #mysql -uroot -p dbname<>
用select into 备份
备份 mysql>select * from tablename into outfile ‘c:\\db_backup\table.dat’
删除表 mysql>delete from tablename;
恢复 mysql>load data infile ‘c:\\db_backup\table.dat’ into table tablename;
查看数据库中有哪些数据库 mysqlshow -uroot -p
查看数据库中有哪些表 mysqlshow -uroot -p dbname
查看数据库中表的结构 mysqlshow -uroot -p dbname tablename
mysqlcheck -uroot -p dbname //检测
mysqlcheck -urooot -p –auto-repair dbname //如碰到有问题的表自动进行修复
mysqlcheck -uroot -p –optimize //优化表
13.MYSQL管理方式
连接方式–mysql -hlocalhost -uroot 通过本地主机,以root用户访问,无需密码验证
mysql -hlocalhost 通过本地主机,匿名用户访问,无需密码验证
设置密码 —mysqladmin
外部:修改密码– mysqladmin hlocalhost -uroot -p password “newpassword”
密码为空–mysqladmin hlocalhost -uroot -p password “”
设置root用户远程访问密码–mysqladmin -hremote -uroot -p password “”
内部设置密码:
设置root用户本地登录密码 set password for ‘root’@‘localhost’=password(‘000000’);
设置root用户远程登录密码 set password for ‘root’@’remote’=password(‘newpassword’);
privileges有哪些 :
alter 修改表和索引 create创建数据库和表 delete删除表中以有的记录 drop 删除数据库和表 inde 创建和删除索引 insert向表中插入数据 select 检索表中的数据 update修改表中的记录 file读写服务器上的数据 process查看服务器中执行的线程信息或杀死线程
reload重载授权表或清空日志,主机缓存或表缓存 shutdown 关闭服务器 all所有权限
revoke取消授权