mysql整理

164 阅读6分钟

数据库和表的基本操作

1 数据库基础知识

1.1 查看数据库

show databases;
CREATE DATABASE [IF NOT EXISTS](检测是否有重名的数据库,如果有也不会报错)
CREATE DATABASE db_name CHARACTER SET charset_name gbk;创建字符集为gbk的数据库
CREATE DATABASE db_name CHARACTER SET utf8 COLLATE utf8_bin;
创建使用UTF-8字符集,并带校对规则的数据库

1.2 创建数据库

create database itcast;

1.3 查看数据库

show databases;

1.4 查看数据库信息,创建语句

show create database itcast;

1.5 修改数据库

alter database itcast defult character set gbk collate gbk_bin;
defult character set:字符集。
collate:排序规则。

1.6 选择数据库

use db_name;
select database();查看所选数据库

1.7 删除数据库

drop database itcast;

2 数据类型

使用MySQL数据库存储数据时,不同的数据类型决定了MySQL存储数据方式的不同。

2.1 整型

在MySQL数据库中,经常需要存储整数数值。根据数值取值范围的不同,MySQL中的整数类型可分为5种,分别是TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。不同整数类型的取值范围可以根据字节数计算出来,例如,TINYINT类型的整数占用1个字节,1个字节是8位,那么,TINYINT类型无符号数的最大值就是28-1,即255。同理可以算出其它不同整数类型的取值范围。
如:
TINYINT:-128—127

2.2 小数

在MySQL数据库中,存储的小数都是使用浮点数和定点数来表示的。浮点数的类型有两种,分别是单精度浮点数类型(FLOAT)和双精度浮点类型(DOUBLE)。而定点数类型只有DECIMAL类型。

2.3 日期时间

为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别是YEAR、DATE、TIME、DATETIME和TIMESTAMP。使用NOW来输入当前系统的日期和时间。
CURRENT_TIMESTAMP,NULL,无任何输入,系统都会输入系统当前的日期和时间
YEAR
使用4位字符串或数字表示,范围为‘1901’~‘2155’
例如,输入‘2014’或2014插入到数据库的值为2014
使用YEAR类时,一定要区分‘0’和0,字符串格式的‘0’表示的是2000,0表示的是0000
DATA
以’YYYY-MM-DD’或者’YYYYMMDD’字符串格式表示

2.4 字符串和二进制

为了存储字符串、图片和声音等数据,MySQL提供了字符串和二进制类型。包括CHAR和VARCHAR类型、BINARY和VARBINARY类型、TEXT类型(小文本类型)、BLOB类型、ENUM类型、SET类型和BIT类型。
CHAR(4)不管插入的长度为多少,都为4
VARCHAR(4)所对应的数据所占字节数为实际长度加一
CHAR省时间,VARCHAR省空间
相同点是CHAR和VARCHAR类型都用来表示字符串数据。
不同点是CHAR存储固定长度字符串,也就是当你输入的字符小于你指定的数目时,它会在后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。VARCHAR可以存储可变长度的字符串,但它的存储效率没有CHAR高。

适合存储高清电影的数据类型是BOLB

3 数据表的基本操作

3.1 创建数据表
3.1.1 语法:

CREATE TABLE 表名
(
字段名1 数据类型[完整性约束条件],
字段名2 数据类型[完整性约束条件],
......
字段名n 数据类型[完整性约束条件],
)character set 字符集 collate 校对规则(一般使用默认,不设规定)
举例
create table teacher(
id VARCHAR(8),
name VARCHAR(10),
age int,
weight FLOAT
)
在操作数据表之前,应该使用“USE 数据库名”指定使用的数据库,否则会抛出“No database selected”错误。
如: use zhida;

3.2 查看数据表

3.2.1 语法
SHOW CREATE TABLE 表名;
可以查看创建表时的定义语句,和表的字符编码。
DESCRIBE 表名;
可以查看表的字段信息,其中包括字段名、字段类型等信息。
DESC 表名;、
查看表结构
举例
show create table student;
describe student;
dsc student;

3.3 修改数据表

六种修改形式:

1) 修改表名

alter TABLE student1 rename to student;

2) 修改字段名(列名),把name修改成username

alter table student change username name varchar(10);

3) 修改字段类型

alter table student modify age int;

4) 添加字段

alter table student add qq varchar(20);

5) 删除字段

alter table student drop qq;

6) 修改字段排列位置

alter table student MODIFY phone varchar(11) first;
alter table student MODIFY sex bit after name;

7) 修改表的字符集为utf8

alter table student character set utf8;

3.4 删除数据表

drop table student;

4 表的约束

为了防止数据表中插入错误数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束。
约束条件 说明
PRIMARY KEY 主键约束,用于唯一标识对应的记录
FOREIGN KEY 外键约束
NOT NULL 非空约束
UNIQUE 唯一性约束
DEFAULT 默认值约束,用于设置字段的默认值
表中列举的约束条件均是针对表中字段进行的限制,从而保证表中数据的正确性和唯一性。

4.1 主键约束(PRIMARY KEY)

通过主键可以快速查找表中的某条信息,它可以唯一标识表中的记录,就好比身份证可以用来标识人的身份一样。
每个数据表中最多只能有一个主键约束,定义为PRIMARY KEY的字段,不能有重复值且不能为NULL值。

4.1.1 单字段主键

单字段主键指的是由一个字段构成的主键。创建单字段主键:
create table ex1(
id int primary key,
name varchar(10)
)

4.1.2 多字段主键

多字段主键指的是由多个字段组合而成的主键。创建多字段主键。

create table ex2(
id int,
name varchar(10),
sex int,
PRIMARY key(name ,sex)
)

4.2 非空约束

非空约束指的是字段的值不能为NULL,创建非空约束。
create table ex3(
id int,
name varchar(10) not null,
sex int
)

4.3 唯一约束

唯一约束用于保证数据表中字段的唯一性,即表中字段的值不能重复出现,要么为null,要么唯一,添加唯一约束会自动添加索引。
create table ex4(
id int,
name varchar(10) UNIQUE,
sex int
)

4.4 默认约束

默认约束用于给表中字段指定默认值,即当在表中插入一条新记录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。注意,默认值和类型一致。
create table ex5(
id int,
name varchar(10),
sex int default 0
)

4.5 设置表的字段值自动增加

在数据表中,若想为表中插入的新记录自动生成唯一的ID,可以使AUTO_INCREMENT约束来实现。AUTO_INCREMENT约束的字段可以是任何整数类型,默认情况下,该字段的值是从1开始自增的。自增字段必须是键。
create table ex6(
id int PRIMARY key AUTO_INCREMENT,
name varchar(10),
sex int
)

4.6 外键约束

一个表中的某个字段,是另一个表中的主键,该键在第一个表中称为外键。
表一(部门)
create table dep(
id int primary key,
name varchar(10)
)
表二(老师),外键名称自动命名。
create table teacher(
id int primary key,
name varchar(10),
depId int,
FOREIGN key(depId) REFERENCES dep(id)
)
表二(老师),外键名称手动命名。
create table teacher1(
id int primary key,
name varchar(10),
depId int,
CONSTRAINT depId FOREIGN key(depId) REFERENCES dep(id)
)

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明,KuangStudy,以学为伴,一生相伴!

本文链接:https://www.kuangstudy.com/bbs/1501218631412273153