目录
一.MySQL数据库基本操作
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语句分类:
语句 | 代表的意思 |
---|---|
DDL | 数据定义语言,用于创建数据库对象,如库、表、索引等 |
DML | 数据操纵语言,用于对表中的数据进行管理 |
DQL | 数据查询语言,用于从数据表中查找符合条件的数据记录 |
DCL | 数据控制语言,用于设置或者更改数据库用户或角色权限 |
3.查看帮助信息
#help后面跟上具体命令可以查看帮助
例如:mysql> help create
4.查看、修改字符集
1. #查看支持字符集
show charset;
默认拉丁文字,需要修改为
utf8 | UTF-8 Unicode
#阉割版的
utf8mb4 | UTF-8 Unicode
#真实的版本
2. #修改字符集
vim /etc/my.cnf
[mysqld]
character-set-server=utf8mb4
二.管理MySQL数据库
1.查看数据库结构
(1)查看当前服务器中的数据库
show databases; #大小写不区分,分号“;”表示结束
(2)查看数据库中包含的表
方法一:在库中查看表
use mysql; #use 数据库名
show tables; #查看表
法二 :在库外查看表
show tables from mysql; #show tables from 数据库名
(3)查看表的结构
use 数据库名;
describe [数据库名.]表名;
可缩写成:desc 表名;
2.数据类型
类型 | 说明 |
int | 整型,用于定义整数类型的数据 |
fload | 单精度浮点4字节32位,准确表示到小数点后六位 |
double | 双精度浮点8字节64位 |
char | 固定长度的字符类型,用于定义字符类型数据。 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位。指定长度数组 |
3.创建、删除数据库和表
(1)创建新的数据库
#建立数据库
create database 数据库名;
#建立数据库并指定字符集utf8mb4
create database 数据库名 charset=utf8mb4;
后文有详细操作及其演示
(2)删除指定的数据库
drop database 数据库名;
(3)创建新的表
use 数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例如:
use kk;
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
(4)删除指定的数据表
方法一:库内删除
use 数据库名;
drop table 数据表名;
方法二:库外删除
#如不用USE进入库中,则需加上数据库名
drop table 数据库名.数据表名;
4.管理表中的数据记录
(1)向数据表中插入新的数据记录(insert into)
insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);
例如:
insert into students(id,name,age,passwd) values(2,'lisi',20,'112233' );
insert into students(id,name,age,passwd) values(2,'jiami',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));
此处添加数据为中文,注意字符集(默认为拉丁文)是否更改为utf8和utf8mb4
如果/etc/my.cnf没有更改,建立数据库时要指定字符集utf8mb4:
create database 数据库名 charset=utf8mb4;
(2)查询数据表内数据记录(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;
(3)修改、更新数据表中的数据记录(update)
update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 条件表达式];
例如:
update students set age=19 where id=4;
update students set age=20,passwd='666666' where id=2; #同时修改age和passwd
(4)在数据表中删除指定的数据记录
delete from 表名 [where 条件表达式];
例如:
delete from students where id=2;
!!!!注意id并不会顶上去!!!!
5.修改表明和表结构(alter table)
(1)修改表名(rename)
alter table 旧表名 rename 新表名;
例如:
alter table students rename xuesheng;
(2)扩展表结构,增加字段(add)
alter table 表名 add 字段;
例如:
alter table xuesheng add address varchar(50) default 'wait get';
#default 'wait get':表示此字段设置默认值 wait get;可与 NOT NULL 配合使用
(3)修改字段名,添加唯一键(change)
alter table 表名 change 旧列名 新列名 数据类型 [unique key];
例如:
alter table xuesheng change name user_name char(30) unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。
验证:
insert into xuesheng values(6,li,23,234567,NANKING);
失败,因为设置了唯一键,li不能重复,改成lu即可
insert into xuesheng values(6,lu,23,234567,NANKING);
(4)删除字段(drop)
alter table 表名 drop 字段名;
例如:
#删除表中passwd字段
alter table xuesheng drop passwd;
6.查看、修改字符集(show)
(1)查看MySQL支持所有的字符集
show charset;
(2)查看数据库字符集
show create database 数据库名\G
例如:
#查看mysql数据库中mysql库的字符集
show create database mysql\G
(3)查看数据表字符集
show table status from 库名 like '表名';
例如:
#查看zhuzi数据库中students表的字符集
show table status from zhuzi like 'students';
(4)修改数据库字符集
#建立数据库并指定字符集utf8mb4
create database 数据库名 charset=utf8mb4;
#若数据库已建立,修改字符集
alter database 数据库名 character set 字符集;
例如:
alter database mysql character set utf8mb4;