数据库学习入门数据库基础入门Word文件下载.docx
- 文档编号:8541487
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:15
- 大小:22.39KB
数据库学习入门数据库基础入门Word文件下载.docx
《数据库学习入门数据库基础入门Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库学习入门数据库基础入门Word文件下载.docx(15页珍藏版)》请在冰点文库上搜索。
DDL:
createtableBA(DatabaseAdministrator)
2、不同数据库的独特管理方式
3、数据库的调优
4、精通数据库的备份、回复机制
-----------------------------
MYSQL的安装与配置
----------------------------
安装:
选择普通安装类型
.配置
1、选择配置类型:
DetailedConfiguration
2、选择服务器类型:
DeveloperMachine
3、选择数据库的是使用情况:
--多功能数据库(MultifunctionalDatabase)
--只是事务处理数据库(TransactionalDatabaseOnly)
--只是非事务处理数据库(Non-TransactionalDatabaseOnly)
4、InnoDB表空间文件存储的盘符,默认在c:
\
5、数据库并发连接数配置:
Decisionsupport
6、MYSQL服务器端口:
默认:
3306
7、EnableStrictMode:
是否允许严格样式检查:
取消
8、选择字符编码:
手工选择:
gb2312,windows下中文支持
9、服务器默认安装到windows系统服务中,默认服务自启动,选择自动配置环境变量
10、填写数据库管理系统的管理员密码
--在mySQL中数据库管理员的用户名为:
root
11、是否允许使用root用户远程登录数据库
12、测试配置是否正确c:
\>
c:
\mysql\bin\mysqlshow
------------------------
MYSQL的登录
.开始--运行--cmd
.输入:
mysql-uroot-p,然后输入密码
.或者:
mysql-uroot-p密码
.退出quit或者\q
--不必全在一个行内给出一个命令,较长命令可以输入到多个行中。
mysql通过寻找终止分号而不是输入行的结束来决定语句在哪儿结束
->
等待多行命令的下一行
'
>
等待下一行,等待以单引号开始的字符串结束
如果你决定不想执行正在输入过程中的一个命令,输入\c取消它
能够以大小写输入关键词,结果是等价的
--------------------
基本的SQL语句
创建数据库---createdatabaseschool;
查看有哪些数据库--showdatabases;
删除数据库---dropdatabaseschool;
--------------------------
向数据库中存储数据
1、首先进入数据库usedbname;
use类似quit,不需要一个分号,写也无碍
use必须在一个单行上给出
2、查看数据库中的表showtables;
3、在数据库中创建表createtablestudent
(namevarchar(20),ageint,sexchar
(2));
4、向表中插入数据---insertintodbnamevalues(‘张三’,18,‘男’);
5、查看表中所有的数据--select*fromstudent;
只查看姓名和年龄---selectname,agefromstudent;
常用的数据类型
char(M)固定长度字符
用来表示固定长度字符串,字符串的长度是1-255
VARCHAR(M)可变长度字符
具有灵活性的字符数据类型,范围:
1-255
处理char类型的数据比varchar类型的数据要快,有时会快50%(char类型存储的数据的长度是声明变量时的固定长度,而不管数据的实际长度,varchar存储的是按数据的实际长度,从而减小了数据文件的大小)
其他常用的数据类型
DATE---日期类型,显示‘YYYY-MM-DD’
DATETIME--日期和时间的组合,显示‘YYYY-MM-DDHH:
MM:
SS'
TEXT/BLOB文本和大对象
TEXT可以保存字符串的长度在255-65535字节内。
BLOB是一个能保存二进制数据的大对象,区别是TEXT不区分大小写,而BLOB区分大小写。
SQL语句的导入
1、编写SQL脚本(.sql)
2、导入mysql-uusername-p<
***.sql
&
练习:
老师表:
teacher
姓名,性别,年龄,课程
导出sql脚本---mysqldumpstu-uroot-p>
查看表的结构------desctablename
修改表中的数据---updatetablenamesetcolname=valuewhere条件
删除数据-----deletefromteacherwhereage=
删除表中所有数据---deletefromteacher;
删除表---droptabletablename
根据条件进行过滤查找---select*fromtablenamewhere条件
查找出版社为“清华出版社”的所有书籍---select*frombookswherepub=‘清华出版社’;
查找出库存大于50的所有书籍---select*frombookswherestore>
50;
查找出“西游记”的库存量---selecttitle,storefrombookswheretitle=‘西游记’;
SQL运算符
>
大于<
小于>
=大于等于<
=小于等于!
=,<
不等于
查看数据库的信息----\s
mysql常用函数
1、查看数据库版本---selectversin();
计算机的时间是存在BIOS()
2、查看当前数据库的日期----selectcurrent_date();
3、查看当前数据库时间----selectnow();
4、查看当前连接数据库的用户---selectuser();
localhost:
代表是本机
createtableuser(idint,namevarchar(20),birdate,deadatetime);
insertintouservalues(1,'
zhangsan'
now(),now());
or和and查询
or(满足一个条件)
and(都需要满足)
查找学生EQ为80分或90分的学生
select*fromstuwhereEQ=80orEQ=90;
查找学生EQ为90分并且性别为女的学生
select*fromstuwhereEQ=90andsex='
女'
;
in(x,x)返回条件中的记录与or作用相似
select*fromtablenamewhere条件in(,);
between‘’and‘’返回两者之间的记录
查询年龄在20-30之间的所有学生
select*fromstuwhereagebetween20and30;
like与通配符(%)一起使用,模糊查询
查找出姓张的学生
select*fromstuwherenamelike‘张%’;
查询出使用163邮箱的所有学生
select*fromstuwhereemaillike‘’;
查询出邮箱里面含有a的所有学生
select*fromstuwhereemaillike‘%a%’;
orderby实现排序(从小到大)--asc
将学生的年龄从高到低排列
select*fromstuorderbyagedesc;
(降序)
将学生的年龄从低到高排列
select*fromstuorderbyageasc;
(升序)
数据默认为升序(从低到高)
select*fromstuorderbyage;
as为查询的列起别名
1、查询所有学生只列出姓名,年龄,性别
selectnameas'
姓名'
ageas'
年龄'
sexas'
性别'
fromstu;
groupby对于查询出的数据结果进行分类(分组)
2、将学生按性别进行分类
select*fromstugroupbysex;
将学生按年龄进行分类
select*fromstugroupbyage;
3、having子查询:
对于where查询出的结果再次进行查询
查找出年龄大于20岁学生,并且在其中找出姓名等于xxx的学生
select*fromstuwhereage>
20havingname='
xxx'
或
select*fromstuwhereage>
20andname='
4、distinct过滤查询的重复型记录,只显示唯一的记录
将学生性别过滤
selectdistinct(sex)fromstu;
count查看表中有几条数据
selectcount(*)fromstu;
selectcount(distinct(sex))fromstu;
limit限制查询结果的输出数量同时也可以实现数据的分页
查询EQ前三名的学生
select*fromstuorderbyEQdesclimit3;
实现查询记录的分页
select*fromstulimit0,3;
select*fromstulimit3,3;
约束----定义了表级的强制规则、数据的完整性
非空约束(notnull)createtabletest(idintnotnull);
insertintotestvalues();
innodb会报错,myISAM会整形默认以0填充
唯一约束(UNIQUE)不允许列中的数据重复
createtabletest(idint,unique(id));
insertintotestvalues
(1);
默认约束(default)createtabletest(idintnotnulldefault'
111111'
);
主键约束(primarykey)是一个字段或一组字段(组合键),用于唯一标识表中的记录,它可以确保每个记录是唯一的。
createtabletest(idint,primarykey(id));
insertintotestvaluse
(1);
id主键自增,减
createtabletest(idint,namevarchar(20),primarykey(id));
insertintotestvalues(1,'
张安'
);
auto_increment的特点-------自增值当删除某一值时,他不会自动填充,而是继续自增1
createtabletest(idintnotnullauto_increment,namevarchar(20),primarykey(id));
insertintotest(name)values('
创建一个有合理约束的表
createtablepeople(idintnotnullauto_increment,namevarchar(20)notnull,ageintnotnull,sexchar
(2)notnull,pcodevarchar(50),telvarchar(50),emailvarchar(50),primarykey(id));
查询出所有学生的档案信息
select*fromstudent,schoolwhere=;
select*fromstudentasa,schoolasbwhere=;
查询所有学生档案信息只需显示:
学生姓名,年龄。
毕业学校,学校地址
select,,,sfromstudent,schoolwhere=;
select,,,fromstudentasa,schoolasbwhere=;
外键约束(foreignkey)
如何创建外键
foreignkey:
定义子中的列为外键
references:
标记外键所要参考的父表和列
ondeletecascade:
允许在删除父表的列的同时,删除子表的列rm,存放数据表的结构定义
.isd,数据文件,存放数据表中的各个数据行的内容
.ism,索引文件,存放数据表的所有索引信息。
MYISAM是数据表是ISAM数据表的继承者,也是三个文件,分别是:
.frm,结构定义文件;
.MYD,数据文件;
.MYI,索引文件。
BDB数据表用两个文件来表示,分别是;
.frm,结构定义文件
.DB,数据表数据和索引文件
INNODB:
由于采用表空间的概念来管理数据表,所以他只有一个与数据表对应.frm文件,同一目录下的其他文件表示为空间,存储数据表的数据和索引
HEAP数据表是一个存在与内存中的表,所以他的数据和索引都存在于内存中,文件系统中只有一个.frm文件,及定义结构,当mysql关闭后数据都将消失。
定义表的的类型
createtabletest(idint)engine=heap;
事务表币非事务表有几大优势:
更安全。
即使mysql崩溃或遇到硬件问题,要么自动恢复,要么从备份加事务日志恢复,你可以取回数据
你可以合并许多语句,并用commit语句同时接受她们全部(如果autocommit被禁止掉)
你可以执行rollback来忽略你的改变(如果autocommit被禁止掉)
如果更新失败,你的所有改变都变回原来。
(用非事务安全表,所有发生的改变都是永久的)
事务安全存储引擎可以给那些当前用读得到许多更新的表提供更好的部署。
非事务表自身有几大优点:
非事务表自身有几大优点,因为没有事务开支,所有优点都能出现:
更快
需要更更少的磁盘空间
执行更新需要更少的内存
你可以在同一个语句中合并事务安全和非事务安全表来获得两者最好的情况。
尽管如此,在autocommit被禁止掉的事务里,变换到非事务安全表依旧即使提交并且不会被回滚
如何在innodb中实现事务:
mysql>
begin;
QueryOK,0rowsaffectedsec)
insertintotest11values(1,'
zhangs'
QueryOK,1rowaffectedsec)
select*fromtest11;
+------+--------+
|id|name|
|1|zhangs|
1rowinsetsec)
end;
ERROR1064(42000):
YouhaveanerrorinyourSQLsyntax;
checkthemanualthatcorrespondstoyourMySQLserver
versionfortherightsyntaxtousenear'
end'
atline1
rollback;
Emptysetsec)
commit;
修改表类型
sql语句:
altertabletablenameengine=innodb;
注意:
不可以将mysql系统表比如‘user’或‘host’转换成innodb类型。
系统表必须为myisam类型
对myisam进行事务处理---锁
locktabletablename(read,write)
locktable可以对表进行加锁控制,以保证用户并发访问时非事务表的数据一致性
unlocktables释放锁
mysql之index(索引)
什么是索引
索引被用来快速找出在一个列上用一特定值的行。
没有索引,mysql不得不首先以第一条记录开始并然后读完整个表直到他找出相关的行,表越大,花费时间越多。
如果表对于查询的列有一个索引,mysql能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。
索引的作用:
快速找出匹配一个where子句的行
当执行连接时,从其他表检索行
对特定的索引列找出max()或min()值
mysql中的索引:
索引实际上是一个分离的列表,具有一个指向全表的指针
myisam表,索引被存储为分离文件
innodb,索引存储为表空间的一部分
mysql有四种类型的索引:
主键(primarykey)、唯一索引(unique)、全文索引(fullindex)、普通索引(index)
创建index
1、createindexindexnameontablename(columnname);
indexname(索引名称)
tablename(表名称)
columnname(要创建索引的字段名称)
2、altertabletablenameaddindexindexname(columnname);
查看索引----showkeysfromtablename;
删除index--altertabletablenamedropindexindexname;
fullindex(myisam支持)
createtablechat(idint,chat1text,chat2text);
createfulltextindexindex_textontablename(col1,col2);
altertabletablenameaddfulltext(col1,col2);
高效使用索引:
太多的索引,占用空间
每次进行插入或更新时,索引都必须针对变化
重新排序,会导致很多额外负担
何处使用索引
1、where从句中条件匹配的行
selectnamefromstudentwherecommentlike“a%”;
comment域的索引就起到了作用
Explain分析索引
语法:
explainselectagefromtest12;
Explain分析mysql中的索引:
table:
查询中涉及的表
type:
显示连接中使用了何种类型
const(最好),eq_ref,fef,range,index和allpossible_keys:
可能用到的索引
key:
实际使用的索引,可以在select语句中使用useindex(indexname)来强制使用索引,用ignoreindex(indexname)来强制忽略索引key_len:
使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 学习 入门 基础