二、数据库和表的基本操作

操作数据库

创建数据库

//创建数据库,并先检查是否已经存在,可省略不检查
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,...]]

//创建的条件
create_specification:
    [DEFAULT]CHARACTER SET charset_name指定数据库采用的字符集
    [DEFAULT]COLLATE collation_name指定数据库字符集的比较方式

例一:创建一个名为mydb1的数据库

CREATE DATABASE mydb1;

例二:创建一个使用gbk字符集的mydb2数据库

CREATE DATABASE mydb2 CHARACTER SET gbk;

例三:创建一个使用utf-8字符集,并带校对规则的mydb3数据库【校对规则见MySQL文档】

CREATE DATABASE mydb3 character set utf8 collate utf8_bin;

查看数据库

//显示数据库语句
SHOW DATABASES
//显示数据库创建语句
SHOW CREATE DATABASE db_name

例一:查看当前数据库服务器中的所有数据库

show databases;

例二:查看mydb2数据库的定义信息

show create database mydb2;

修改数据库

ALTER DATABASE [IF NOT EXISTS] db_name [alter_specification [,...]]

alter_specifucation:
  [DEFAULT]CHARACTER SET charset_name
  [DEFAULT]COLLATE collation_name

例一:查看服务器中的数据库,并把其中一个库的字符集改为utf8

show create database mydb2;  
alter database mydb2 character set utf8;

删除数据库

DROP DATABASE [IF EXISTS] db_name

例一:删除mydb1

drop database mydb1;

选择数据库

USE db_name
SELECT DATABASE();查看数据库

例一:选择mydb1数据库

use mydb1;

例二:查看当前选择的数据库

select database();

数据库中表的操作

MySQL数据库中的数据类型

整型数据

数据类型字节数无符号数的取值范围有符号数的取值范围
TINYINT10~255-128~127
SMALLINT20~65535-32768~32768
MEDIUMINT30~16777215-8388608~8388608
INT40~4294967295-2147483648~2147483648
BIGINT80~18446744073709551615-9223372036854775808~9223372036854775808

浮点数类型和定点数类型

数据类型字节数
FLOAT4
DOUBLE8
DECIMAL(M,D)【M表示数据长度,D表示小数点后的长度】M+2

日期与时间类型

数据类型字节数日期格式零值
YEAR1YYYY0000
DATE4YYYY-MM-DD0000-00-00
TIME3HH:MM:SS00:00:00
DATETIME8YYYY-MM-DD HH:MM:SS0000-00-00 00:00:00
TIMESTAMP4YYYY-MM-DD HH:MM:SS0000-00-00 00:00:00

字符串和二进制类型

CHAR:固定长度字符串,char4),查询速度快
VARCHAR:可变长度字符串,varchar4BINARYVARBINARY类型,同上
TEXT类型【存大文本】:TINYTEXTTEXTMEDIUMTEXTLONGTEXT
BLOB类型【存大二进制】:TINYBLOBBLOBMEDIUMBLOBLONGBLOB
ENUM类型:枚举类型
SET类型:同枚举,但存储的是每个值的序号
BIT类型:表示二进制数,BIT(1)表示1位二进制
增加表
CREATE TABLE table_name
(
    field1 datatype,
    field2 datatype,
    field3 datatype,
)character set 字符集 collate
校对规则【一般不指定,使用数据库默认的字符集和校对规则】
//field:指定列名,datatype:指定列类型
create table employee(
    id int,
    name varchar(20),
    gender char(1),
    birthday date,
    entry_date date,
    job varchar(50),
    salay double,
    resume text
);
查看表
SHOW TABLES;查看所有表
DESC employee;查看employee表结构
SHOW CREATE TABLE employee;查看建表语句
修改表
//增加一列
ALTER TABLE table_name ADD(column datatype [DEFAULT expr][,column datatype]...);
//修改列属性
ALTER TABLE table_name MODIFY(column datatype [DEFAULT expr][,column datatype]...);
//删除列
ALTER TABLE table_name DROP(column);
//修改表名
REMANE TABLE 表名 TO 新表名;
//修改列的名称
ALTER TABLE table_name change [column] old_name new_name datatype;
//修改表的字符集编码
ALTER TABLE table_name CHARACTER SET utf8;

例一:在员工表中添加一列image列

alter table employee add image blob;

例二:修改job列,使其长度为60

alter table employee modify job varchar(60);

例三:删除gender列

alter table employee drop gender;

例四:表名改为user

rename table employee to user;

例五:修改表的字符集为utf8

alter table user character set utf8;

例六:列名name修改为username

alter table user change name username varchar(20);
删除表
DROP TABLLE table_name;

例一:删除user表

drop table user;

表的约束

概述:为了防止数据表中插入错误的数据,需要对表定义一些规则,即表的约束。

约束条件 说明
PRIMARY KEY 主键约束,用于唯一标识对应的记录
FOREIGN KEY 外键约束
NOT NULL 非空约束
UNIQUE 唯一性约束
DEFFAULT 默认值约束,用于设置字段的默认值

主键约束 PRIMARY KEY

//1.单字段主键
CREATE TABLE example1(id INT PRIMARY KEY,
                      name VARCHAR(20)
);
//多字段主键
CREATE TABLE example1(id INT,
                      name VARCHAR(20),
                      grade FLOAT,
                      PRIMARY KEY(id,name)
);

非空约束 NOT NULL

CREATE TABLE example1(id INT,
                      name VARCHAR(20) NOT NULL,
                      grade FLOAT,
                      PRIMARY KEY(id,name)
);

唯一约束 UNIQUE

CREATE TABLE example1(id INT,
                      name VARCHAR(20) NOT NULL,
                      grade FLOAT UNIQUE,
                      PRIMARY KEY(id,name)
);

默认约束 DEFAULT

CREATE TABLE example1(id INT,
                      name VARCHAR(20) NOT NULL,
                      grade FLOAT,
                      job VARCHAR(20) DEFAULT 'sxs',
                      PRIMARY KEY(id,name)
);

设置表的字段值自动增加(AUTO_INCREMENT)

CREATE TABLE example1(id INT PRIMARY KEY AUTO_INCREMENT,
                      name VARCHAR(20) NOT NULL,
                      grade FLOAT
);

索引

概述:在数据库操作中,需要经常查询其中一条记录,比如,查询id=1000的记录,这时候就需要一种效率高的查询方法,即索引。是对表中的值进行排列后的一种结构。

普通索引:是由KEY或者INDEX定义的索引,可以创建在任何类型,其值是否唯一或者非空没有要求。

唯一性索引:由UNIQUE定义的所以,该索引字段必须唯一

全文索引:由FULLTEXT定义的所以,只能创建在char、varchar或者text类型的字段上,并且只有MyISAM存储引擎支持全文索引

单列索引:指在表中单个字段上创建索引,可以是普通索引,唯一索引或者全文索引

多列索引:指表中多个字段上创建索引,只有在查询中使用了这些字段中的第一个字段时,该索引才会被使用

空间索引:由SPATIAL定义的索引,只能创建在空间数据类型的字段上。只能在存储引擎为MyISAM的表中创建
空间数据类型:GEOMETRY,POINT,LINESTRING,POLYGON

创建索引
创建表的时候创建索引

CREATE TABLE 表名(
    字段名 数据类型 [完整性约束条件]
    ....
    [UNIQUE或FULLTEXT或SPATIAL] INDEXKEY [别名] (字段名1 [(长度)]) [ASC或者DESC]
);

例一:创建普通索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, INDEX (id));

例二:创建唯一索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, UNIQUE INDEX unique_id(id ASC););

例三:创建全文索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, FULLTEXT INDEX fulltext_name(name))ENGINE = MyISAM;

例四:创建多列索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, INDEX multi(id,name(20)));

例五:创建空间索引

CREATE TABLE example1(id INT, name VARCHAR(20) NOT NULL, grade FLOAT, space GEOMETRY NOT NULL, SPATIAL INDEX sp(space))ENGINE = MyISAM;

CREATE INDEX语句

CREATE [UNIQUE或者FULLTEXT或者SPATIAL] INDEX 索引名 ON 表名 (字段名 [(长度)] [ASC或者DESC]);

例一:对book表创建普通索引

CREATE INDEX index_id ON book (id)

例二:创建唯一索引

CREATE UNIQUE INDEX uniqueidx ON book (id);

使用ALTER TABLE语句创建索引

ALTER TABLE 表名 ADD [UNIQUE或者FULLTEXT或者SPATIAL] INDEX 索引名 (字段名 [(长度)] [ASE或者DESC])

例一:在book表上创建普通索引

ALTER TABLE book ADD INDEX indexone (id);

删除索引

ALTER TABLE 表名 DROP INDEX 索引名;

DROP INDEX 索引名 ON 表名;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值