MySQL数据库的特点
- 性能卓越、服务稳定
- 开源、无版权限制、成本低
- 多线程、多用户
- 基于C/S(客户端/服务端)架构
- 安全可靠
SQL语句
SQL语句用于维护管理数据库,包括数据库查询、数据更新、访问控制、对象管理等功能。
分类
DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
DML:数据操纵语言,用于对表中的数据进行管理
DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
mysql查看命令
登录mysql命令
mysql -u 用户 -p密码
退出命令
quit
查看数据库的版本号
mysql -V
查看库
show databases;
#可以查看数据库中有哪些库
查看表
方法一
use 库名;
#use进行切换
show tables;
#查看库中有哪些表
方法二
show tables from 库名;
查看表结构
desc 表名;
#以表格格式展示结构
show create table 表名
#以SQL命令格式展示表结构,还能显示表的其他信息
查看表的字段
方法一
use 库名;
#进行切换
describe(desc) 表名;
方法二
desc 库名.表名;
创建和删除命令
创建新的数据库
create database 库名
创建新的 表
create table 表名 (字段1 数据类型,字段2 数据类型,...,[,PRIMARY KEY(主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
删除表命令
方法一
drop table 表名;
方法二
delete from 表名 where 条件表达式;
删除库命令
注意:删除命令为高危命令,谨慎使用
插入命令
方法一
insert into 表名 (字段1,....) values(值1,....);
方法二
insert into 表名 values(值1,...);
查看所有字段命令
select * from 库名/表名;
#\G竖型显示
指定查看指定列
select 列 名,列 名,... from 表名;
只显示前两行
select * from 表名 limit 行数;
显示后两行
select * from 表名 limit 行数1,行数2;
#行数1指从第几行开始
#行数2指指定的行数
修改数据
update 表名 set 字段=值 where 条件表达式
注
如果不加where 指定条件会整行修改
修改表名和表结构
修改表名
alter table 旧表名 rename 新表名
扩展表结构(增加字段)
alter table 表名 add 字段名 字段数据类型 default(属性约束) '地址不详';
#default ‘地址不详’:表示此字段设置默认值 地址不详,可与NOT NULL配合使用
修改字段名,添加唯一键
alter table 表名 change 旧列名 数据类型 [unique key]
删除字段
alter table 表名 drop 字段;
数据类型的属性
| MySQL关键字 | 含义 |
|---|---|
| NULL | 数据列可包含NULL值 |
| NOT NULL | 数据列不允许包含NULL值 |
| DEFAULT | 默认值 |
| PRIMARY KEY | 主键 |
| AUTO_INCREMENT | 自动递增,适用于整数类型 |
| UNSIGNED | 无符号 |
| CHARACTER SET name | 指定一个字符集 |
MySQL常见约束
1、非空约束(not null)
非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
Null类型特征:所有的类型的值都可以是null,包括int、float 等数据类型
2、唯一性约束(unique)
唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。
唯一约束不允许出现重复的值,但是可以为多个null。
同一个表可以有多个唯一约束,多个列组合的约束。
在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。
唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。
3、主键约束(primary key) PK
主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。
每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。
当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。
4、外键约束(foreign key) FK
外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的,可以保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。
创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。
5、默认值约束 (Default)
若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。
6、自增约束(AUTO_INCREMENT)
自增约束(AUTO_INCREMENT)可以约束任何一个字段,该字段不一定是PRIMARY KEY字段,也就是说自增的字段并不等于主键字段。
但是PRIMARY_KEY约束的主键字段,一定是自增字段,即PRIMARY_KEY 要与AUTO_INCREMENT一起作用于同一个字段。
当插入第一条记录时,自增字段没有给定一个具体值,可以写成DEFAULT/NULL,那么以后插入字段的时候,该自增字段就是从1开始,没插入一条记录,该自增字段的值增加1。当插入第一条记录时,给自增字段一个具体值,那么以后插入的记录在此自增字段上的值,就在第一条记录该自增字段的值的基础上每次增加1。
也可以在插入记录的时候,不指定自增字段,而是指定其余字段进行插入记录的操作。
克隆表
克隆表结构
create table 新表名 like 旧表名;
#通过like方法复制旧表的表结构
#可以保证新表的表结构跟旧表是一致的
克隆数据
方法一
insert into 新表名 select * from 旧表名;
#向新表插入旧表的查询数据
#可以保证新表的表数据跟旧表的一致
方法二
create table 新表名 (select * from 旧表名);
#在创建表的时候直接引用旧表查询的结构和数据
#新表的表数据和旧表是一样,但可能会出现新表的表结构和旧表的不一致
清空表,删除表内的所有数据
方法一
delete from 表名;
#清空表后,返回的结果内有删除的记录条目,delete工作时是一行一行的删除记录数据的,如果表中有自增长字段,使用delete from删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自 增写入记录
方法二
truncate table 表名;
清空表后,没有返回被删除的条目,truncate工作时是将表结构按原样重新建立,因此在速度上truncate会比delete清空表快,使用truncate table清空表内数据后,ID会从1开始重新记录
创建临时表
临时表创建成功后,使用show tables命令是看不到创建的临时表的,临时表会在连接退出后被销毁。如果在推出连接之前 ,也可以可执行增删改查等操作,比如使用drop table语句手动直接删除临时表。
create temporary table 表名 (字段1 数据类型,...);
创建外键约束
保证数据的完整性和一致性
外键的定义
如果同一个属性字段x在表中是主键,而在表二中不是主键,则字段x称为表二的外键
主键表和外键表的理解
- 以公共关键字作为主键的表为主键表(父表,主表)
- 以公共关键字作为外键的表为外键表(从表,外表)
注意
与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型,字符长度和约束
创建主键表
创建外键表,并与主键表做关联
主表和从表插入和删除规则
插入新的数据记录时,要先主表再从表 删除数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之类联的表中的记录