注:MySQL命令不分大小写,结尾以英文分号“;”结尾。
一、初步命令--数据库
1、查看MySQL系统中已有的数据库:SHOW DATABASES;
2、创建数据库:create database [ if not exists ] 数据库名 [ default ] character set 字符集 | [ default ] collate 校对规则名;
例:创建一个名为mytest的数据库
CREATE DATABASE mytest;
3、使mytest变成当前数据库:USE mytest;(这个分号加不加都不会报错)
4、修改数据库的参数:alter database [ if not exists ] 数据库名 [ default ] character set 字符集 | [ default ] collate 校对规则名;
例:修改学生成绩数据库(xscj)默认字符集(gb2312)和校对规则(gb2312_chinese_ci)
alter database xscj default character set gb2312 default collate gb2312_chinese_ci;
5、删除数据库:drop database [ if exists ] 数据库名;
例:删除数据库mytest
DROP DATABASE mytest;
DROP DATABASE IF EXISTS mytest;(加if exists可以在数据库mytest不存在时不会报错)
二、MySQL表
1、创建表:create table [ if not exists ] 表名 ( [ 列定义 ] | [ 表索引定义 ]) [ 表选项 ] [ select语句 ];
例:创建名为user的表:
CREATE TABLE user
(
学号 char(6) not null primary key,
姓名 char(10) not null,
性别 char(10) not null
);
复制现成的表:create table [ if not exists ] 表名 [ like 已有表名 ] | [ as (复制表记录) ]
例:用复制的方式创建一个名为user_copy1的表,表结构直接取自user表
create table if not exists user_copy1 like user;
用复制的方式创建user_copy2,其结构和内容都取自user表
create table if not exists user_copy2 as (select * from user);
2、查看表信息:SHOW TABLES;
3、查看user表的结构、字段类型等信息:DESCRIBE USER;
修改表:alter table 表名 add 列定义[ first | after ] | modify 列定义 | alter 列名 { set default 值 | drop default } | change 列明 原列名 | drop 列名 | rename [ to ] 新表名
【注:add子句--向表中增加新列,first | after列名指定增加列的位置,默认加在最后一列;
modify子句--修改指定列的数据类型;
alter子句--修改表中指定列的默认值,或者删除列默认值;
change子句--修改列的名称;
drop子句--删除列或约束】
例:在表user中增加新的一列“班级号”-- alter table user add column 班级号 tinyint(1) null;
把一个列的数据类型改为bigint -- alter table user modify 班级号 bigint not null;
4、更改表名:rename table 老表名 to 新表名;
例:将表user_copy2改名为userb -- rename table user_copy2 to userb;
5、 删除表:drop table [ if exists ] 表名;
例:删除表userb -- drop table if exists userb;
三、表记录的操作
1、插入新记录:insert [ into ] 表名 [ (列名,...)] values ({ expr | defalut },...) | set 列名={ expr | defalut },...
例:向学生成绩数据库(xscj)的表xs插入一行数据
use xscj
insert into xs values ('180111','李明','计算机',1,'1998-02-06',50,null,null);
若表xs中专业的默认值为“计算机”,照片、备注默认是null,可以使用以下命令
① insert into xs values ('180111','李明',1,'1998-02-06',50);
② insert into xs values ('180111','李明',defalut,1,'1998-02-06',50,null,null);
或者使用set子句来实现
insert into xs set 学号=’180111‘,姓名=’李明',专业=defalut,性别=1,出生日期='1998-02-06',总学分=50;
2、从已有表中插入新记录:insert [ into ] 表名 [ (列名,...) ] select 语句 ;
例:将mytest数据库user表记录插入到user1中
use mytest
insert into user1 select * from user;
3、插入图片:可以通过插入图片储存路径,或用load_file函数插入图片本身
例:向表xs中插入图片,路径为D:\image\picture.jpg
① insert into xs
values ('180111','李明','计算机',1,'1998-02-06',50,'D:\image\picture.jpg',null);
② insert into xs values ('180111','李明',
'计算机',1,'1998-02-06',50,load_file('D:\image\picture.jpg'),null);
4、替换旧纪录:replace [ into ] 表名 [ (列名,...)] values ({ expr | defalut },...) | set 列名={ expr | defalut },...
例:xs表中的李明转专业到“通信工程”
replace into xs
values ('180111','李明','通信工程',1,'1998-02-06',50,'D:\image\picture.jpg',null);
5、修改单个表:update [ low_priority ] | [ ignore ] 表名 set 列名1=expr1[ , 列名2=expr2... ] [ where 条件 ];
例:将学生表(xs)的所有学生总学分都增加10
update xs set 总学分=总学分+10;
将学生表(xs)姓名为“李雷”的同学的备注填写为“辅修计算机专业”,学号改成“108112”
update xs set 学号='108112',备注='辅修计算机专业' where 姓名='李雷';
6、修改多个表:update 表名,表名... set 列名1=expr1 [, 列名2=expr2... ] [ where 条件 ];
例:当表user中的id值与user2中的id值相同时,将表user中对应的password值修改为“111111”,将表user2中对应的password值修改为“222222”
update user,user2 user.password='111111',user2.password='222222' where user.id=user2.id;
7、删除记录:delete from 表名 [ where 条件 ];
例:删除表user2中“李雷”的记录
delete from user2 where username='李雷';
8、从多个表中删除行:delete [ low_priority ] [ quick ] [ ignore ] 表名[.*] [,表名[.*]...] from table_references [ where where_defintion ]
或者:delete [ low_priority ] [ quick ] [ ignore ] from 表名[.*] [,表名[.*]...] using table_references [ where where_defintion ]
例:删除user1中id值等于user的id值的所有行1和user2中id值等于user的id值的所有行
delete user1,user2 from user,user1,user2 where user1.id=user.id and user2.id=user.id;
9、清除表数据:truncate table 表名;
【注:truncate table语句将删除表中的所有数据,且无法恢复,需小心使用】
此为自码,资料参考教材《MySQL数据库教程(视频指导版)》第1版 郑阿奇 人民邮电出版社