MySQL数据库、数据表的基本操作
一、数据库的基本操作
1.1创建数据库
create database [数据库名称] default charset [字符集];
1.2查看数据库
show database [数据库名称];
1.3删除数据库
drop database [数据库名称];
1.4修改数据库字符集的默认编码格式
alter database [数据库名称] character set [编码格式](UTF-8 GBK);
1.5切换数据库
use [数据库名称];
1.6查看当前使用的是哪个数据库
select database();
二、数据表的基本操作
首先需要说明的是,在进行数据表的操作之前,首先要使用use database+数据库名称的方式选择自己要在哪个数据库中进行操作,否则会报“No database selected”错误
2.1创建数据库表
create table [表名]{
字段1 字段类型,
字段2 字段类型,
...
字段n 字段类型
};
例如:
create table student{
id int,
name varchar(20),
gender varchar(10),
birthday date
};
2.2查询当前数据库中的所有表
show tables;
2.3查看表的字段信息
desc [表名];
2.4修改表名
alter table [原始表名] rename to [新表名];
2.5修改字段名
alter table [表名] change [原字段名] [新字段名] varchar(10);
例:
alter table student change name sname varchar(10);
2.6修改字段的数据类型
alter table [表名] modify [字段名] [新的字段类型];
例:
alter table student modify sname int;
2.7增加字段
alter table [表名] add [字段名] [字段类型];
2.8删除字段
alter table [表名] drop [字段名];
2.9删除数据表
drop table [表名];
2.10查询指定表的建表语句
show create table [表名];
三、约束说明
为了防止错误的数据被插入到数据表中,MySQL中定义了一些维护数据库完整的规则,这些规则被称为约束,常见约束如下
3.1主键约束
主键约束,即primary key。被标识为主键的数据在表中是唯一的,且其值不能为空。(类似于我们每个人的身份证号,都是唯一的,不能重复)
基本语法:
字段名 字段类型 primary key;
3.2非空约束
非空约束,即Not Null,指的是字段的值不能为空
基本语法:
字段名 字段类型 NOT NULL;
3.3默认值约束
默认值约束即DEFAULT用于给数据表中的字段指定默认值,也即是说当在表中插入一段新记录时若未给该字段赋值,那么数据库系统会自动为这个字段插入默认值
基本语法:
字段名 字段类型 DEFAULT#(可以省略不写);
3.4唯一性约束
所谓唯一性约束,也就是说该数据表中,被定义为唯一性约束的字段的值不能出现重复
基本语法:
字段名 字段类型 UNIQUE;
3.5外键约束
四、用户权限授权
4.1授权
基本语法:
grant 权限 on 数据库对象 to 用户;
例一:把查询Student表权限授给用户U1
grant select on table Student to U1;
例二:把对Student表和Course表的全部权限授予用户U2和U3
grant all privileges on table Student,Course to U2,U3;
例三:把对表SC的查询权限授予所有用户
grant select on table SC to public;
例四:把查询Student表和修改学生学号的权限授权给用户U4
grant update(Sno),select on table Student to U4;
例五:把对表SC的insert权限授予U5用户,并允许他再将此权限授予其他用户
grant insert on table SC to U5 with grant option;
例六:DBA把在数据库SC中建立表的权限授予用户U8
grant createtab on database SC to U8;
4.2收回权限
授予的权限可以由DBA或其他授权者用REVOKE语句收回。
语法:revoke+权限+on+table+表名+from 用户
例一:把用户U4修改学生学号的权限收回
revoke update on table Student from U4;
例二:收回所有用户对表SC的查询权限
revoke select on table SC from public;
例三:把用户U5对SC表的insert权限收回
revoke insert on table SC from U5;
五、Mysql中的数据类型
5.1数值类型
分类 | 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
---|---|---|---|---|---|
TINYINT | 1 byte | -128,127 | 0.255 | 小整数值 | |
SMALLINT | 2 bytes | -32768,32767 | 0,65535 | 大整数值 | |
MEDIUMINT | 3 bytes | -8388608,8388607 | 0,16777215 | 大整数值 | |
数值类型 | INT或INTEGER | 4 bytes | -2147483648,2147483647 | 0,4294967295 | 大整数值 |
BIGINT | 8 bytes | -263,263-1 | 0,2^64-1 | 极大整数值 | |
FLOAT | 4 bytes | 单精度浮点数值 | |||
DOUBLE | 8 bytes | 双精度浮点数值 | |||
DECIMAL | 依赖于M和D的值 | 依赖于M和D的值 | 小数值(精确定点数) |
5.2字符串类型
- char和varchar的区别
区别一:
定长和变长。char表示定长,长度固定,varchar表示变长,即长度可变。char如果插入的长度小于定义长度时,用空格
填充;varchar小于定义长度时,还是按实际长度存储
,插入多长就存多长。
因为其char的长度固定,所以char的存取速度要比varchar快得多,方便程序的存储与查找;但是char也为此付出空间代价,因为其长度固定,所以会占据多余的空间,即以空间换取时间效率。varchar则刚好相反。
区别二:
存储的容量不同。对char来说,最多能存放的字符个数255,和编码无关。
对varchar来说,最多能存放65532个字符;varchar的最大有效长度由最大行大小和使用的字符集确定。