Download presentation
Presentation is loading. Please wait.
1
第20章 MySQL数据库
2
概 述 介绍数据库系统与MySQL 登入MySQL数据库系统的过程 介绍“数据库”操作 介绍“表”的操作 MySQL的用户管理
3
20.1 MySQL概述 MySQL关系数据库管理系统 MySQL是一种开放源码软件 具有快速、可靠和易于使用 结构化查询语言:SQL Web中小型数据库的首选
4
20.2 MySQL的工作原理 C/S结构
5
20.3 MySQL启动与退出 建立到MySQL服务器的连接 [-pyour_password]
格式:mysql [-h host_name] [-u user_name] [-pyour_password] -p和your_password中间没有空格
8
断开到MySQL服务器的连接 mysql> exit mysql> quit
9
口令管理 MySQL的用户配置信息:c:\my.cnf
10
20.5 数据库操作 查看数据库 创建数据库 打开数据库 删除数据库 10
11
查看数据库 数据库存放的位置: C:\mysql\data 一个数据库对应一个文件夹
12
显示以创建的数据库: SHOW DATABASES; 显示当前数据库: Select database();
13
创建数据库 格式:CREATE DATABASE 数据库名 在c:\mysql\data下创建一个“数据库名”文件 夹 该数据库内容为空
14
打开一个数据库 将一数据库切换为当前数据 库 格式:use 数据库名
15
删除数据库 删除一个数据库同时,其数据表等也被删除 格式:DROP DATABASE [IF EXISTS] 数据库名;
16
20.7 “表”操作 数据库中的数据以“表”的形式存在。 表由记录(row)组成, 每一条记录包含几个字段(field)信息.。
一个数据库中可以有多个“表”。
17
显示表 格式:mysql>SHOW TABLES;
18
创建表 格式:mysql>CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 表名 [字段定义,…]
[表选项] [查询语句]; Mysql调用文件*.sql
19
显示表的结构: mysql>DESCRIBE 表名; mysql>DESC 表名;
Mysql>SHOW COLUMNS FROM 表名;
20
修改表的结构 更改表名 更改字段名 更改字段类型 添加一个字段 删除一个字段 转换表的类型
21
修改表的结构:更改表名 格式: ALTER TABLE 原表名 RENAME as 新表名;
22
修改表的结构:更改字段名 ALTER TABLE 表名 CHANGE 原字段名 新字段名 原字段定义;
23
更改字段类型 ALTER TABLE 表名 CHANGE 字段名 字段名 字段新类型; 表名 MODIFY 字段名 字段新类型;
24
修改表的结构:转换表的类型 ISAM 在MySQL3.23以前版本支持 MYISAM 是MySQL3.23以后版本的默认“表”类型。
HEAP “临时”内存表 格式:sql>ALTER TABLE 表名 TYPE=表新类型;
25
修改表的结构:增加一个字段 格式:sql>ALTER TABLE 表名 ADD 字段名 类型;
26
修改表的结构:删除一个字段 sql>ALTER TABLE 表名 DROP COLUMN 字段名;
27
删除“表” 格式: sql>DROP TABLE [IF EXISTS] 表名1, 表名2 …
28
20.8 “记录”操作 增加记录 查询记录 排序记录 修改纪录 删除记录 28
29
“记录”操作—增加记录 格式1:对所有字段赋值,可插入多条记录
sql>insert into 表名 values (值1,值2,…), (值1,值2,…),…;
30
“记录”操作—增加记录(续1) 格式2:仅对某些字段赋值,可插入多条记录
sql>insert into 表名 (字段1,字段2,…) values (值1,值2,…),values (值1,值2,…),…;
31
“记录”操作—增加记录(续2) 格式3:仅对某些字段赋值 sql>insert into 表名
set 字段1=值1,set 字段2=值2,…; 返回
32
“记录”操作—查询记录 格式:sql>select 字段 from 表1,表2,… where 条件 order by 排序字段
group by 分组字段 limit 待显示的记录数
33
“记录”操作—查询记录(续1) 格式:sql>select 字段 from 表1,表2,…
where 条件 order by 排序字段 group by 分组字段 limit 待显示的记录数 例1:sql>select * from cs_students;
34
“记录”操作—查询记录(续2) 例2:sql>select 2*4,now(),version();
35
“记录”操作—查询记录(续3) 例3:sql>select id,name,sex from cs_students;
36
“记录”操作—查询记录(续4) 例4:sql>select id as ‘学号’,name as ‘姓名’, sex as ‘性别’ from cs_students;
37
“记录”操作—查询记录(续5) 例5:sql>select id as ‘学号’,name as ‘姓名’, from cs_students where sex=‘女’;
38
“记录”操作—查询记录(续6) 例6:sql>select id as ‘学号’,name as ‘姓名’, from cs_students where sex=‘女’ and cs_name like ‘李%’; 返回
39
“记录”操作-排序记录 例: sql>select id, name, sex from cs_students
order by id; order by id desc; 返回
40
“记录”操作-修改记录 例: sql>update students set id=201003 where id=202003;
返回
41
“记录”操作-删除记录 例: sql>delete from students where name=“李娜”
and sex=“女”; 返回
42
20.9 “索引”操作 数据库索引好比是一本书前面的目录,能加快数据库的查询速度
为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。 查询:select * from table1 where id=10000 如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止; 有了索引之后(必须是在ID这一列上建立的索引),在索引中查找, 但索引是经过某种算法优化过的,查找次数要少的多的多。 增加索引也有许多不利的方面。 第一,创建索引和维护索引要耗费时间, 第二,索引需要占物理空间 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
43
Primary Key 索引 Unique 索引 普通索引 一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引
索引列的值必须唯一,但允许有空值。 普通索引 这是最基本的索引,它没有任何限制
44
格式1:sql>ALTER TABLE 表名 ADD INDEX 索引名称(字段列表)
“索引记录”-产生索引 格式1:sql>ALTER TABLE 表名 ADD INDEX 索引名称(字段列表) 格式2:sql>ALTER TABLE 表名 ADD UNIQUE 索引名称(字段列表) 格式3:sql>ALTER TABLE 表名 ADD PRIMARY KEY (字段列表) 返回
45
“索引记录”-普通索引实例 返回
46
“索引记录”-删除索引 格式: sql>ALTER TABLE 表名 DROP INDEX 索引名称;
sql>ALTER TABLE 表名 DROP UNIQUE 索引名称; sql>ALTER TABLE 表名 DROP PRIMARY KEY; 或 sql>DROP INDEX 索引名称 ON 表名; 返回
47
20.11 用户管理 服务器把权限信息存贮在一个名为MySQL的数据库中,该数据库中有user, db, host,tables_priv, columns_priv, procs_priv和grant表。 增加用户 赋予权限 更改口令 取消权限 删除用户
48
增加用户 CREATE USER 用户名 IDENTIFIED BY [PASSWORD] '口令‘
对于创建的账户,CREATE USER会在没有权限的MySQL.user表中创建一个新记录
49
mysql数据库的user表中。 如果使用了PASSWORD关键词,口令必须是经过哈希处理的41位口令。要用纯文本中指定密码,需忽略PASSWORD关键词。
50
赋予权限 GRANT 权限 ON {表名 | * | *.* | 数据库名.*} TO | "%"] IDENTIFIED BY [PASSWORD] ′password′; 必须在MySQLd正在运行同一台机器上,作为MySQL root用户连接, 并且root用户必须对MySQL数据库有insert权限和reload管理权限。 本地帐号:localhost;远程帐号:% @localhost创建本地账号,只能在运行MySQL服务器的机器上使用的账号; @"%"是创建的远程账号,匹配任何地址,可以在非本地机上使用的账号; 对于同一个用户名和密码有两种账号,即本地账号和远程账号,这两种账号需要分别创建。
51
mysql>GRANT ALL PRIVILEGES ON *.* TO user1@localhost
IDENTIFIED BY ‘pass1’ WITH GRANT OPTION; TO mysql>GRANT RELOAD, PROCESS ON *.* TO 返回
52
权限机制 服务器把权限信息存贮在一个名为MySQL的数据库中,该数据库中有user, db, host,tables_priv, columns_priv, procs_priv和grant表。 MySQL服务器启动时,把这些表的内容读入内存中。 当执行FLUSH PRIVILEGES语句或者执行一个MySQLadmin 的 flush-privileges命令 或 MySQLadmin 的 reload 命令,服务器重新把这些表的内容读入内存,使设置的用户权限立即生效 权限系统根据内存中的grant表进行存取控制。 直接操作: INSERT INTO user VALUES(‘localhost’,’user1’,PASSWORD(‘pass1’)); 权限有:select,create,insert,update,delete …
53
删除用户 mysql>DELETE FROM user WHERE user=“用户名” and host=“主机名”;
mysql>FLUSH PRIVILEGES; 返回
54
更改口令 mysqladmin管理程序 password命令
C:> mysqladmin [-u user_name] password new_password
55
在mysql客户监视状态下 SET PASSWORD 命令实现
SET PASSWORD =PASSWORD(“some_password”) 对当前用户进行的。 任意一个连接到服务器上的非匿名用户帐号
56
SET PASSWORD FOR user =PASSWORD(“some_password”)
对特定用户进行的。 具有UPDATE权限的用户 本地帐号:localhost;远程帐号:%
57
这个命令实际上等价于下面命令: mysql> UPDATE mysql.user SET Password=PASSWORD(“newp”) WHERE User=“root” AND Host=“localhost”; mysql> FLUSH PRIVILEGES;
58
mysql>REVOKE 权限 ON 表名或数据库名或*.* FROM 用户名”;
取消权限 mysql>REVOKE 权限 ON 表名或数据库名或*.* FROM 用户名”; mysql>FLUSH PRIVILEGES; 返回
59
20.12 数据备份与恢复 进行SQL级别的表备份,可以使用SELECT INTO ...OUTFILE或BACKUP TABLE
使用MySQLdump程序 C:>mysqldump –u root –p library > c:\library sql 数据复原:MySQL -u -p 数据库名 < 文件名.sql
61
“锁”操作 加锁: 加锁时,释放以前的锁定 LOCK TABLES 表名 {READ|WRITE|LOW_PRIORITY}; 解锁:UNLOCK TABLES ;
62
“锁”操作 加锁: 加锁时,释放以前的锁定 LOCK TABLES 表名 {READ|WRITE|LOW_PRIORITY}; 解锁:UNLOCK TABLES ;
63
第22章 小结 介绍数据库系统与MySQL 登入MySQL数据库系统的过程 介绍“数据库”操作 介绍“表”的操作 MySQL的用户管理
第22章 小结 介绍数据库系统与MySQL 登入MySQL数据库系统的过程 介绍“数据库”操作 介绍“表”的操作 MySQL的用户管理 MySQL数据备份
64
第22章 思考问题 22.4 MySQL的配置文件是什么?在什么位置? 22.8 用户有几种方法修改口令?写出其命令格式?
第22章 思考问题 22.4 MySQL的配置文件是什么?在什么位置? 22.8 用户有几种方法修改口令?写出其命令格式? 22.10 在创建或删除数据库时,IF EXISTS作用是什么? 22.11 MySQL数据库的NULL字段类型含义是什么? MySQL账户管理中的“%”有什么含义? MySQL怎样备份数据? end
Similar presentations