MySQL数据库管理以及SQL语句的基本命令操作
- 准备编译安装MySQL
- MySQL数据库基本命令操作
- 一、常用数据类型
- 二、查看数据库结构
-
- 1、进入数据库
- 2、查看数据库的信息
- 3、查看数据库中包含的表
- 4、查看表的结构(字段)
- 三、SQL语句概述
-
- 四、SQL语句基本操作
-
- (1)DDL
-
- 1、创建新的数据库
- 2、创建新的表
- 3、删除指定的数据表
- 4、删除指定的数据库
- (2)DML管理表中的数据记录
-
- 1、向数据表中插入新的数据记录:insert
- 2、查询数据记录
- 3、修改、更新数据表中的数据记录:update
- 4、在数据表中删除指定的数据记录:delete
- (3)DQL 查询数据记录——select
- 五、修改表名和表结构——alter
-
- 1、修改表名
- 2、扩展表结构(增加字段)
- 3、修改字段(列)名,添加唯一键
- 4、删除字段、主键
- 扩展
准备编译安装MySQL
- 安装MySQL
- 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者. 执行脚本,等脚本执行完成,即可使用mysql -u root -p点击回车即可进入。
MySQL数据库基本命令操作
一、常用数据类型
类型 |
说明 |
int |
整型(定义整数类型数据) |
float |
单精度浮点,4字节32位,准确到小数点后六位 |
double |
双精度浮点,8字节64位 |
char |
固定长度的字符类型,定义字符类数据 |
varchar |
可变长度的字符类型 |
text |
文本 |
image |
图片 |
decimal (5,2) |
5个有效长度数字,小数点后面有2位,指定长度数组 |
decimal (5,2) |
当输入的数值后的小数位小于两位时,会拿0补全两位;当超过两位时,小数点后第三位是自动进行的四舍五入进第二位 |
- 对char来说,最多能存放字符个数255个,char如果存入数据的实际长度比指定长度要小 会补空格至指定长度 如果存入的数据的实际长度大于指定长度 低版本会被截取 高版本会报错
- char 为固定长度值,不足的以空格替代,而 varchar 为可变值,最大为设置的长度值,当不足时,即为当前长度大小。
- char的长度是不可变的,而varchar的长度是可变的。
- 例如:定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了
varchar存储规则:
- 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节)
- 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节
二、查看数据库结构
1、进入数据库
mysql -u root -p
-u 连接数据库的用户名
-p 后面跟的是连接数据库的密码(不能有空格)
2、查看数据库的信息
SHOW DATABASES; #大小写不区分,分号“;”表示结束
3、查看数据库中包含的表
USE 数据库名;
SHOW TABLES;
4、查看表的结构(字段)
USE 数据库名;
DESCRIBE [数据库名.]表名;
可缩写成:DESC 表名;
这里执行就像我们在Linux中使用绝对路径和相对路径一样,当你在所在表的库中时,可省略前面的数据库名(相对路径)。
当你需要对其他库中的表进行操作时,就需要加上库名(绝对路径)进行操作。
三、SQL语句概述
1、SQL语言
- Structured Query Language 的缩写,即结构化查询语言
- 关系型数据库的标准语言
- 用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能
2、SQL分类
DDL |
数据定义语言,用于创建数据库对象,如库、表、索引等 |
DML |
数据操纵语言,用于对表中的数据进行管理 |
DQL |
数据查询语言,用于从数据表中查找符合条件的数据记录 |
DCL |
数据控制语言,用于设置或者更改数据库用户或角色权限 |
四、SQL语句基本操作
(1)DDL
1、创建新的数据库
CREATE DATABASE 数据库名;
2、创建新的表
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例:create database SCHOOL;
use SCHOOL;
create table CLASS1 (id int not null,name char(10) not null,sex char(1),primary key (id));
field |
字段 |
type |
类型 |
not null |
不允许为空 |
default ‘’ |
默认为空 |
primary key |
主键(一般选择没有重复且不为空的字段) |
3、删除指定的数据表
use 数据库名;
drop table 表名;
或
drop table [数据库名.]表名;
4、删除指定的数据库
DROP DATABASE 数据库名;
例:show databases;
drop table SCHOOL.CLASS1;
use SCHOOL;
show tables;
drop database SCHOOL;
show databases;
(2)DML管理表中的数据记录
1、向数据表中插入新的数据记录:insert
insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);
字段中,可使用 password('密码') ,能够使用加密型密码
例:create database SCHOOL;
use SCHOOL;
create table CLASS2 (id int not null,name char(20) not null,sex char(1) not null,primary key (id));
insert into CLASS2 (id,name,sex) values(1,'zhangsan','男');
2、查询数据记录
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
例:select * from CLASS2;
select name,sex from CLASS2 where id=1;
3、修改、更新数据表中的数据记录:update
update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 条件表达式];
例:insert into CLASS2 (id,name,sex) values(2,'lisi','女');
insert into CLASS2 (id,name,sex) values(3,'wangwu','男');
select * from CLASS2;
update CLASS2 set id=4 where name='zhangsan';
select * from CLASS2;
update CLASS2 set name='sicong',sex='男' where id=2;
select * from CLASS2;
4、在数据表中删除指定的数据记录:delete
delete from 表名 [where 条件表达式];
例:delete from CLASS2 where id=4;
select * from CLASS2;
(3)DQL 查询数据记录——select
select 字段名1,字段名2[,...] from 表名 [where 条件表达式];
小技巧:
select * from 表名; #显示全部
select 字段1,字段2 from 表名; #显示字段1和字段2
select 字段1 from 表名\G; #以列表形式竖向显示
select * from 表名 info limit 2; #只显示头2行
select * from 表名 info limit 2,3; #显示第2行后的前3行
五、修改表名和表结构——alter
1、修改表名
ALTER TABLE 旧表名 RENAME 新表名;
例:alter table CLASS1 rename CLASS2;
show tables;
select * from CLASS2;
2、扩展表结构(增加字段)
ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
#default ‘地址不详’:表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用
例:alter table class2 add address varchar(50) default '地址不详';
mysql版本4.0以下:varchar(50)为50字节
5.0以上:vachar(50)为50字符,无论数字、汉字(3字节)、字母都可以存放50个
3、修改字段(列)名,添加唯一键
alter table 表名 change 旧列名 新列名 数据类型 [unique key];
#change 可修改字段名、数据类型、约束等所有项
唯一键:唯一,但可以为空(空值只能出现一次)
#每张表往往有多个字段具有唯一性,但是只能指定一个主键,所以唯一键就是用来解决表中多个字段需要具有唯一性的问题
主键包含唯一键的部分属性
唯一键不能完全作为主键
例:alter table class2 change name student_name varchar(20) unique key;
select * from class2;
insert into class2 (id,student_name,sex) values (1,'wangdachu','女');
select * from class2;
insert into class2 (id,student_name,sex) values (4,'wangdachu','女');
4、删除字段、主键
alter table 表名 drop 字段名;
例:alter table class2 drop address;
扩展
例:use SCHOOL;
create table if not exists class3 (id int(4) zerofill primary key auto_increment,student_name varchar(20) not null,cardid varchar(18) not null unique key,hobby varchar(50));
if not exists |
表示检测要创建的表是否已存在,如果不存在就继续创建 |
int(4) zerofill |
表示若数值不满4位数,则前面用“0”填充,例0001 |
auto_increment |
表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次 |
unique key |
表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键 |
not null |
表示此字段不允许为NULL |