数据库应用:MySQL数据库使用与管理

目录

一、理论

1.MySQL基本操作

2.数据类型

2.使用MySQL数据库

二、实验

1.查看数据库结构

2.创建及删除库和表

 3.管理表中的数据记录

4.修改表名和表结构

5.查看、修改字符集

三、问题

1.表导入新记录报错

四、总结




一、理论

1.MySQL基本操作

(1)SQL分类

表1 SQL分类

序号分类
1

数据库:database

2

表:table,行:row 列:column

3

索引:index

4

视图:view

5

存储过程:procedure

6

存储函数:function

7

触发器:trigger

8

事件调度器:event scheduler,任务计划

9

用户:user

10

权限:privilege

(2)SQL语言规范

① 在数据库系统中,SQL 语句不区分大小写,建议用大写

② SQL语句可单行或多行书写,默认以 " ; " 结尾

③ 关键词不能跨多行或简写

④ 用空格和TAB 缩进来提高语句的可读性

⑤ 子句通常位于独立行,便于编辑,提高可读性

(3)数据库对象和命名

① 数据库的组件(对象)

数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等

② 命名规则

必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)

不要使用MySQL的保留字,如tabble select show databases

(4)SQL语句分类

SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。

表2 SQL语句分类

语句英文功能命令

    DDL

Data Defination Language 数据定义语言,用于创建数据库对象,如库、表、索引等CREATE,DROP,ALTER
DMLData Manipulation Language 数据操纵语言,用于对表中的数据进行管理INSERT,DELETE,UPDATE
DQLData Query Language数据查询语言,用于从数据表中查找符合条件的数据记录SELECT
DCLData Control Language 数据控制语言,用于设置或者更改数据库用户或角色权限GRANT,REVOKE
TCLTransaction Control Language事务控制语言COMMIT,ROLLBACK,SAVEPOINT

(5)帮助信息

#help后面跟上具体命令可以查看帮助
例如:mysql> help select

(6)查看、修改字符集

1. #查看支持字符集
show charset;
默认拉丁文字,需要修改为
 
utf8     | UTF-8 Unicode   
#阉割版的
 
utf8mb4  | UTF-8 Unicode 
#真实的版本
 
2. #修改字符集
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4

2.数据类型

(1)常用数据类型

表3 常用数据类型

说明备注
int整型,用于定义整数类型的数据
fload单精度浮点4字节32位,准确表示到小数点后六位
double双精度浮点8字节64位
char固定长度的字符类型,用于定义字符类型数据。
varchar可变长度的字符类型
ext文本
image图片
decimal(5,2)5个有效长度数字,小数点后面有2位。指定长度数组

(2)数据类型参考

表4 数据类型参考

数据类型说明

整数型

tinyint(m) 1个字节 范围(-128~127)

smallint(m) 2个字节 范围(-32768~32767)

mediumint(m) 3个字节 范围(-8388608~8388607)

int(m) 4个字节 范围(-2147483648~2147483647)

bigint(m) 8个字节 范围(+-9.22*10的18次方)

上述数据类型,如果加修饰符unsigned后,则最大值翻倍

如:tinyint unsigned的取值范围为(0~255)

浮点型 (float 和 double) ,近似值

float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位, 注意: 小数点不占用总个数

double(m,d) 双精度浮点型16位精度(8字节) m总个数,d小数位, 注意: 小数点不占用总个数

设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位

定点数

在数据库中存放的是精确值,存为十进制

格式 decimal(m,d) 表示 最多 m 位数字,其中 d 个小数,小数点不算在长度内

比如: DECIMAL(6,2) 总共能存6位数字,末尾2位是小数,字段最大值 9999.99 (小数点不算在长度内)

参数m<65 是总个数,d<30且 d<m 是小数位

MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个字节存9个数字)。

例如: decimal(18,9)小数点两边将各存储9个数字,一共使用9个字节:其中,小数点前的9个数字用4个字节,小数点后的9个数字用4个字节,小数点本身占1个字节

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储。double占用8个字节

因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时

字符串

char(n) 固定长度,最多255个字符,注意不是字节

varchar(n) 可变长度,最多65535个字符

tinytext 可变长度,最多255个字符

text 可变长度,最多65535个字符

mediumtext 可变长度,最多2的24次方-1个字符

longtext 可变长度,最多2的32次方-1个字符

BINARY(M) 固定长度,可存二进制或字符,长度为0-M字节

VARBINARY(M) 可变长度,可存二进制或字符,允许长度为0-M字节

内建类型:ENUM枚举, SET集合

2.使用MySQL数据库

(1)查看数据库结构

查看当前服务器中的数据库

show databases;					#大小写不区分,分号“;”表示结束

查看数据库中包含的表

方法一:在库中查看表
use mysql;             #use 数据库名
show tables;           #查看表
 
法二 :在库外查看表
show tables from mysql;    #show tables from 数据库名

查看表的结构(字段)

use 数据库名;
describe [数据库名.]表名;
可缩写成:desc 表名;

④ 查看myql版本

mysql -V

(2)创建及删除库和表

① 创建新的数据库(create database)

#建立数据库 
create database 数据库名;
 
#建立数据库并指定字符集utf8mb4
create database 数据库名 charset=utf8mb4;
后文有详细操作及其演示

② 删除指定的数据库(drop database)

drop database 数据库名;

③ 创建新的表 (create table)

use 数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
 
例如:
use david;
create table students (id smallint unsigned primary key auto_increment, name varchar(10), age tinyint unsigned,gender enum('M','F') default 'M' );
 
#unsigned:取消负数
primary  key:主键
auto_increment: 自增长
enum('M','F'):多选 
default 'M':默认值为 M

④ 删除指定的数据表(drop table)

方法一:库内删除
use 数据库名;
drop table 数据表名;
 
方法二:库外删除
#如不用USE进入库中,则需加上数据库名
drop table 数据库名.数据表名;			

(3)管理表中的数据记录

向数据表中插入新的数据记录(insert into)

insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);
 
例如:
insert into students(id,name,age,passwd) values(1,'zhangsan',20,'112233' );
insert into students(id,name,age,passwd) values(2,'lisi',22,PASSWORD('123456'));
#PASSWORD('112233'):查询数据记录时,密码字串以加密形式显示;若不使用PASSWORD(),查询时以明文显示
select * from students;
 
提前新建数据表(注意长度设置)
use mysql;
create table students (id smallint unsigned primary key auto_increment, name varchar(10),age tinyint unsigned, passwd varchar(48));

查询数据表内数据记录(select)

select 字段名1,字段名2[,...] from 表名 [where 条件表达式];
 
基本操作:
1. #查询全部数据
select * from 数据表名;
例如:
select * from students;
 
2. #查询指定数据
例如:
select id,name from students where id=2;
更多操作:
3. #以列表方式竖向显示
select * from 数据表名\G;			
例如:
select * from students\G;
 
4. #只显示头2行
select * from 数据表名 limit 2;
例如:	
select * from students limit 2;
 
5. #显示第3行后的2行
select * from 数据表名 limit 3,2;
例如:
select * from students limit 3,2;

修改、更新数据表中的数据记录(update)

update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 条件表达式];
 
例如:
update students set age=19 where id=4;
update students set age=20,passwd='111111' where id=2;    #同时修改age和passwd
 

在数据表中删除指定的数据记录

delete from 表名 [where 条件表达式];
 
例如:
delete from students where id=2;
 
#注意id并不会顶上去

(4)修改表名和表结构

修改表名(rename)

alter table 旧表名 rename 新表名;
 
例如:
alter table students rename xuesheng;

扩展表结构,增加字段(add)

alter table 表名 add 字段;
 
例如:
alter table xuesheng add address varchar(50) default 'wait get';
#default 'wait get':表示此字段设置默认值 wait get;可与 NOT NULL 配合使用

修改字段(列)名,添加唯一键(change)

alter table 表名 change 旧列名 新列名 数据类型 [unique key];
 
例如:
alter table xuesheng change name user_name char(30) unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。
验证:
insert into xuesheng values(6,lili,23,234567,NANKING);
失败,因为设置了唯一键,lili不能重复,改成lulu即可
insert into xuesheng values(6,lulu,23,234567,NANKING);

删除字段(drop)

alter table 表名 drop 字段名;
 
例如:
#删除表中passwd字段
alter table xuesheng drop passwd;

(5)查看、修改字符集

查看MySQL支持的所有字符集

show charset;

查看数据库字符集

show create database 数据库名\G
 
例如:
#查看mysql数据库中mysql库的字符集
show create database mysql\G

查看数据表的字符集

show table status from 库名 like '表名';
 
例如:
#查看zhuzi数据库中students表的字符集
show table status from zhuzi like 'students';

修改数据库字符集(character set)

#建立数据库并指定字符集utf8mb4
create database 数据库名 charset=utf8mb4;
 
#若数据库已建立,修改字符集
alter database 数据库名 character set 字符集;
例如:
alter database mysql character set utf8mb4;

二、实验

1.查看数据库结构

(1)查看当前服务器中的数据库

(2) 查看数据库中包含的表

在库中查看表

在库外查看表

 (3)查看表的结构(字段)

 (4)查看mysql版本

 

2.创建及删除库和表

(1)创建新的数据库(create database)

 

 (2)删除指定的数据库(drop database)

删除前:

删除后:

 (3)创建新的表 (create table)

 (4)删除指定的数据表(drop table)

库内删除

 库外删除

 
3.管理表中的数据记录

(1)向数据表中插入新的数据记录(insert into)

查询数据记录时,密码字串以加密形式显示;若不使用PASSWORD(),查询时以明文显示:

 (2) 查询数据表内数据记录(select)

以列表方式竖向显示:

 

只显示头2行:

 

显示第3行后的2行:

 

 (3) 修改、更新数据表中的数据记录(update)

 

 

(4)在数据表中删除指定的数据记录

4.修改表名和表结构

(1)修改表名(rename)

 

 (2)扩展表结构,增加字段(add)

 (3)修改字段(列)名,添加唯一键(change)

 

 (4)删除字段(drop)

 

5.查看、修改字符集

(1)查看MySQL支持的所有字符集

(2)查看数据库字符集

 (3)查看数据表的字符集

 (4)修改数据库字符集(character set)

 

三、问题

1.表导入新记录报错

(1)报错

ERROR 1054 (42S22): Unknown error 1054

 (2)原因分析

字段拼写错误或字段缺少。

(3)解决方法

 

四、总结

MySQL数据库语句在“mysql>”操作环境中执行。

MySQLde 基本管理操作包括查看数据库结构、创建及删除库和表、管理表中的数据记录。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值