MySQL数据库的SQL语句
- MySQL的常用数据类型
- MySQL数据类型及含义
- char与varchar的区别
- MySQL的基本命令
- 登录数据库
- 查看MySQL数据库版本
- 查看当前服务器中的数据库
- 查看MySQL库中的表
- 查看表的结构(字段)
- SQL语句
- SQL简介及分类
- 创建新的数据库
- 创建新的表
- 添加表中各字段内容
- 查看表中内容
- 删除库/表
- 在数据表中删除指定的数据记录
- SQL语句用法实例
- 修改表名
- 扩展表结构(即增加表的纵列,增加字段)
- 已有表中添加字段
- 修改字段名及数据类型
- 删除指定字段
- 克隆表
- 清空表,删除表内的所有数据
- 创建临时表
- 补充
- 数据类型的属性
- MySQL常见约束
- 如何创建外键约束?
MySQL的常用数据类型
MySQL数据类型及含义
char与varchar的区别
- char(n) 若存入字符数小于n,会使用空格补于其后,查询的时候会再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
- char(n) 为固定长度,char(n)不管是存入几个字符,都将占用n个字节,varchar是存入的实际字符数n+1个字节(n<=255)或2个字节(n>255),
- 由于长度占用字节的区别,varchar实际存入字符会比正常存入字符数+1,所以占用空间高,因此char查找效率会很高,varchar查找效率会更低。
- char插入时可省略,vaechar插入时不会省略,查找时省略。
MySQL的基本命令
登录数据库
mysql -u root -p # -u 指定用户 -p 该选项后面可以直接跟明文密码进行登录
查看MySQL数据库版本
mysql -V # 查看MySQL数据库的版本
查看当前服务器中的数据库
show databases; #注意:所有操作都要加上“;”
查看MySQL库中的表
use <库名>; # 切换到指定库
show tables; # 显示指定库中的所有表
查看表的结构(字段)
use <库名>; # 切换到库
desc <表>; # 查看库中表字段(数据)
desc <表>\G;
#页面显示比较混乱时,使用\G可以将每一行表格的字段竖向分段显示
SQL语句
SQL简介及分类
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理邓功能。
- SQL语言分类
- DDL:数据定义语言;用于创建数据库对象,如库、表、索引等
- DML:数据操作语言:用于对表中的数据进行管理
- DQL:数据查询语言:用于从数据表中查找符合条件的数据记录
- DCL:数据控制语言:用于设置或者更改数据库用户或角色权限
创建新的数据库
create database <新库名>; #创建新的数据库
创建新的表
use <库>; #切换到指定库
create table <新表名>(字段1 数据类型,字段2 数据类型,...字段n 数据类型primary key (主键名));
# 创建表在当前库中
# primary key (主键名) 可以给某一列设置主键
# 主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
添加表中各字段内容
insert into <库名>.<表名>(字段1,字段2,字段3,字段4,字段5) values (字段值1,字段值2,字段值3,字段值4,字段值5);
# 如果字段的数据类型中使用了字符类型(如char、varchar等字符类型),输入字段值时两边需要加上单引号
# 该操作也可以指定某些字段的值,进行添加,未添加的值均按照之前的设定的默认值进行添加
查看表中内容
select * from <表名>; #当前库中指定表中内容
select * from <库名>.<表名> #查看指定库中表内容
select * from <表名>\G #将表中每一行记录的数据纵向查看
删除库/表
drop database <库名>; #删除库
drop table <表名>; #删除当前库中的指定表
drop table <库名>.<表名>; #直接删除某库中的某表
在数据表中删除指定的数据记录
delete from <表名> where 条件表达式
#删除指定表中的数据
SQL语句用法实例
修改表名
alter table <旧表名> rename <新表名>; #更改表名
扩展表结构(即增加表的纵列,增加字段)
alter table <表名> add <字段> <数据类型> #在已有的表中添加相关字段和制约属性
alter table class1 add cardid char(18) default '暂不提供';
#在class1表中添加cardid字段,设置数据类型为字符,最多填写18个字节,设置default默认值为'暂不提供'
已有表中添加字段
alter table <表名> add <字段> <数据类型>;
修改字段名及数据类型
alter table <表名> change <旧字段名> <新字段名> 数据类型;
# 该命令可以更改表结构中的字段名称,并修改字段的数据类型
#如果只想要更改字段的数据类型也可以执行以下命令格式
alter table <表名> change <字段名> <字段名> 数据类型;
#以上两个字段内容一致
删除指定字段
alter table <表名> drop <字段>;
#指定表删除指定字段
克隆表
create table <新表> like <旧表>;
#通过like方法复制旧表的表结构
insert into <新复制表> select * from <旧表>;
使用insert into 进行插入(导入)数据,数据选取使用select * from 提取旧表内容
清空表,删除表内的所有数据
delete from <表名>;
- delete 清空表后,返回结果内有删除的记录条目;delete工作时是一行一行的删除记录数据的;
- 如果表中有自增长字段,使用delete from删除所有记录后,再次新添加的记录会从原来最大的记录ID后面继续自增长
创建临时表
- 临时表创建成功之后,使用show tables命令是看不到创建的临时表的,临时表会在连接退出后被销毁。如果在退出连接之前,也可以执行增删改查等操作,比如使用drop table 语句将会直接删除临时表。
create temporary table <表名> (字段1 数据类型,字段2 数据类型,...)
补充
数据类型的属性
MySQL常见约束
-
非空约束(not null)
非空约束用于确保当前列的值不为空值,非空约束只能出现在表对象的列上。
Null类型特征:所有的类型的值都可以是null,包括int、float 等数据类型 -
唯一性约束(unique)
唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。
唯一约束不允许出现重复的值,但是可以为多个null。
同一个表可以有多个唯一约束,多个列组合的约束。
在创建唯一约束时,如果不给唯一约束名称,就默认和列名相同。
唯一约束不仅可以在一个表内创建,而且可以同时多表创建组合唯一约束。 -
主键约束(primary key) PK
主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。
每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别创建。
当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。 -
外键约束(foreign key) FK
外键约束是用来加强两个表(主表和从表)的一列或多列数据之间的连接的,可以保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。
创建外键约束的顺序是先定义主表的主键,然后定义从表的外键。也就是说只有主表的主键才能被从表用来作为外键使用,被约束的从表中的列可以不是主键,主表限制了从表更新和插入的操作。 -
默认值约束 (Default)
若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL。 -
自增约束(AUTO_INCREMENT)
自增约束(AUTO_INCREMENT)可以约束任何一个字段,该字段不一定是PRIMARY KEY字段,也就是说自增的字段并不等于主键字段。
但是PRIMARY_KEY约束的主键字段,一定是自增字段,即PRIMARY_KEY 要与AUTO_INCREMENT一起作用于同一个字段。
当插入第一条记录时,自增字段没有给定一个具体值,可以写成DEFAULT/NULL,那么以后插入字段的时候,该自增字段就是从1开始,没插入一条记录,该自增字段的值增加1。当插入第一条记录时,给自增字段一个具体值,那么以后插入的记录在此自增字段上的值,就在第一条记录该自增字段的值的基础上每次增加1。
也可以在插入记录的时候,不指定自增字段,而是指定其余字段进行插入记录的操作。
如何创建外键约束?
① 外键的定义
如果一个属性字段X在表一中是主键,而在表二不是主键,则字段X称为表二的外键。
- 主键表和外键表的理解
- 以公共关键字作为主键的表为主键表(父表、主表)
- 以公共关键字作为外键的表为外键表(从表、外表)
② 主外键表的应用实例
创建2个表,一个专业名称的表,一个学生的表,学生所学的专业编号与,专业表中的专业对应编号进行一一对应
create table profession(proid int,proname char(10));
# 创建一个名为profession(专业)的表
create table student (id int primary key,name char(10),age int,proid int not null);
# 创建一个名为student(学生)的表
alter table profession add primary key(proid);
# 给profession表增加主键,设置主键为proid
alter table student add constraint FK_pro foreign key(proid) references profession(proid);
# 给student表增加从键proid,并且绑定profession的主键proid作为主从键绑定
# constraint FK_pro 指定外键的名称为FK_pro
- 验证测试:
外键表的数据增加
主键表的数据增加
外键表的数据删除
主键表的数据删除