MySQL的命令介绍:
连接数据库服务器命令:
mysql -u 用户名 -p 密码
mysql是连接MySQL数据库的命令 -u表示后跟用户名 -p 后跟密码
如果登录后展示 "mysql >"表示登录成功
退出数据库命名:
quit; 或者 exit; (注意MySQL以“;”结束一个语句)。
1、库相关的命令操作:
1.1、查看所有的库sql:
show databases;
1.2、创建数据库的SQL:
create database database_name;
eg:创建一个名为test1的数据库
1.3、删除数据的SQL:
drop database database_name;
1.4、选择数据库的SQL:(多个数据库下,选择要使用的)
use database_name;
1.5、展示当前库下的所有的表SQL:
show tables;
2、表操作
2.1、创建表
create table table_name(
属性名 数据类型[完整性约束],
属性名 数据类型[完整性约束],
...
属性名 数据类型[完整性约束]
);
注意:在数据库创建的时候要选取合适的数据类型,而且
还要添加完整性约束,两个属性之间用逗号隔开,
完整性约束条件有:
-------------------------------------
约束条件 | 说明
primary key | 修饰的属性是该表的主键
foreign key | 修饰的数据是该表的外键
not null |表示该字段不能为null
unique |修饰的属性值是唯一的
auto_increment |mysql的特色,表示该属性是自增的
default | 设置属性默认值
数据类型:
int:整型
data:日期,只包含年月日 yyyy-MM-dd
datatime: yyyy-MM-dd HH:mm:ss
timestamp:时间戳类型 (包含年月日时分秒)如果将来不给这个字段赋值,或者赋值为null,则默认当前系统的时间自动赋值
varchar:字符类型
eg:create table t2(id int primary key, name varchar(5));
2.1、查看表
2.1.1、 desc table_name;
用desc可以查看表的字段名称、类型、是否为空、约束条件、默认值、备注信息
2.1.2 show create table table_name;
show create table可以打印创建的表的SQL,
并且显示该表的存储引擎和字符集编码
3.修改表:
修改数据库字符集:alter database 数据库名称 character set 字符集名称;
修改表名: alter table 旧表名 rename(to) 新表名;
修改表的字段类型:alter table 表名 modify 属性名 数据类型;
eg:alter table t1 id bigint;
修改表中属性名:alter table 表名 change 旧属性名 新属性名 数据类型;
eg:alter table t1 change id idd int;
增加新的字段:
alter table 表名 add 属性名 数据类型 [约束条件] [first/ afters 属性名1];
删除属性:
alter table 表名 drop 属性名;
修改属性的排列顺序:
alter table 表名 modify 属性名1 数据类型 first/ after 属性名2;
修改表的存储引擎:
alter table 表名 engin = innodb | myisam;
4.删除:
drop database 数据库名称
删除前判断:drop database if not exists 数据库名称
删除属性SQL:
alter table table_name drop 属性名;
eg:alter table t1 drop age2;
5.查询
查询表SQL
SQL基本的结构如下:
select 属性列表 from table_name [where 条件表达式1]
[group by 属性1 [having 条件表达式2]]
[order by 属性2 [asc | desc]]
5.1 带in的子查询
[not] in(元素1,元素2...元素n)
eg:select * from Student where SID in (1,3,5);
5.2 带between and 的范围查询
[not] between 取值1 and 取值2
eg:select * from Student where SID between 3 and 7;
5.3 带like的模糊查询字符串
[not] like 'abc';
注意:like可以结合通配符使用
%:表示0个或者是任意长度的字符串
_:只能表示单个字符
eg:select * from Student where Sname like 'CJ%';
5.4 空值查询
is [not] null;
eg:select * from Student where Sage is not null;
5.5 带and 的多条件查询
条件表达式1 and 条件表达式2 [and ...条件表达式n]
eg:select * from Student where Ssex ='nan' and Sage=20;
5.6 带or的多条件查询
条件表达式1 or 条件表达式2 [or ...条件表达式n]
5.7 去重复查询
select distinct 属性名
eg:select distinct Sage from Student;
5.8 对结果排序
order by 属性名 [asc| desc];
asc:升序(默认是升序)
desc:降序
eg:select * from Student order by SID asc;
5.9 分组查询
group by 属性名[having 条件表达式]
eg:select * from Student group by Ssex having Sage >= 18;
5.10 limit分页查询
不指定起始位置 limit是记录数
eg:select * from Student limit 3;
指定初始位置是limit的起始位置、记录数
eg:select * from Student limit 2,5;
多表查询:
内连接、左连接、右连接
内连接:将连接的两个表共同存在的数据(共同存在的)获取
左连接:将左表对应的数据全部展示,左表存在右表 不存在的数据时,将右表对应字段填充为null
右连接:将右表对应的数据全部展示,右表存在左表不存在的数据时,将左表对应的数据全部填充为null
联合查询
内连接:
select 属性名1...属性名n from 表名1 inner join 表名2 on 表名1.属性 = 表名2.属性(注:属性指关联的字段,即使用外键)
外连接:
select 属性名1,...,属性名n from 表名1 lift|right join 表名2 on 表名1.属性 = 表名2.属性(注:属性指关联的字段,即使用外键)
复合查询:select 属性名1 ... 属性名2 from 表名1,表名2 where 表名1.属性 = 表名2.属性
批量插入数据:
insert into table_name (属性名1,...,属性名n)
values
(值11,...值1n),
(值21,...值2n),
...
(值n1,...值nn);
2、索引使用的SQL
若查询表中存在上万的数据量,使用索引可以大大提高查询效率
2.1 创建表的时候指定索引字段的SQL
create table table_name(
id int primary key,
name varchar ,
index(id)
);
在创建SQL时指定字段创建索引index(id),指对id字段添加索引
eg:create table test3(id int, name varchar(5),age int, index(name));
该表中创建了索引名为'name'作用于name属性到的索引
2.2、在已存在的表中添加索引
2.2.1、create [unique|fulltext|spatial] index 索引名 on 表名(属性名);
eg:create index idx_age on test3(age)
2.2.2 alter table 表名 add [unique|fulltext|spatial] index 索引名 (属性);
eg:alter table test3 add index idx_id_name(id,name);
2.3、删除索引
drop index 索引名 on 表名;
eg:drop index idx_age on test3;
2.4、展示索引
show create table 表名;
eg: show create table test3;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test3 | CREATE TABLE `test3` (
`id` int(11) DEFAULT NULL,
`name` varchar(5) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
KEY `name` (`name`),
KEY `idx_id_name` (`id`,`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
其中:KEY 后即为该表中的索引 展示的格式为KEY 索引名(索引对应的字段)