本文链接:
https://www.yuque.com/docs/share/9368acd4-df55-45aa-bfda-8aee584f76ee?# 《数据库命令》
目录
1.数据库的基本操作
1.1创建数据库
创建数据库就是在数据库系统中划分一块存蓄数据的空间。“数据库名称”是唯一的,不可重复出现。
CREATE DATABASE 数据库名称;
create database 数据库名称;
例:创建一个名为itcast的数据库 Create database itcast;
1.2查看数据库
1.2.1使用SHOW语句查看已经存在的数据库
SHOW DATABASES;
show databases;
1.2.2查看已经创建好的数据库的信息
SHOW CREATE DATABASE 数据库名称;
show create database 数据库名称;
例:查看创建好的数据库itcast Show create database itcast;
1.3修改数据库编码
ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码方式 COLLATE 编码方式_bin;
alter database 数据库名称
default character set 编码方式
collate 编码方式_bin;
编码方式是指修改后的数据库编码。
例:将数据库itcast的编码修改为gbk.
Alter database itcast default character set gbk collate gbk_bin;
1.4删除数据库
成功删除数据库后,数据库中的所有数据都将被清除,原来分配的空间也将被回收。
DROP DATABASE 数据库名称;
drop database 数据库名称;
例:删除数据库itcast Drop database itcast;
2.数据表的基本操作
2.1创建数据表
创建数据表指的是在已经存在的数据库中建立新表。
在操作数据表之前应该使用“USE 数据库名”指定在 哪个数据库中操作表,否则会抛出“No database selected”的错误。
USE 数据库名;
CREATE TABLE 表名
(
字段名1 数据类型 [完整性约束条件],
字段名2 数据类型 [完整性约束条件],
字段名n 数据类型 [完整性约束条件]
);
use 数据库名;
create table 表名
(
字段名1 数据类型[完整性约束条件],
字段名2 数据类型[完整性约束条件],
字段名n 数据类型[完整性约束条件]
);
例:创建学生表
Use itcast; Create table student ( Id int(10), Name varchar(20), Age int(3) );
2.2查看数据表
2.2.1查验数据表是否创建成功
可以查看数据库中创建的数据表名称,在之前先输入use语句
SHOW TABLES
show tables;
2.2.2查看已经创建好的数据表的信息
SHOW CREATE TABLE 表名; /*句不仅可以查看 创建表时的定义语句,还可以查看表的字符编码*/同时表名之后加上参数\G使显示结果更加美观。
show create table 表名;
例:查看学生表信息
show create table student;
或
DESCRIBE 表名; /*可以查看表的字段信 息,其中包括字段名、字段类型等信息*/
describe 表名;
简写:DESC 表格;
desc 表名;
例:查看学生表信息
null:表示该列是否可以存储null值
key:表示该列是否已经编制索引
default:表示该列是否有默认值
extra:表示获取到的与给定列相关的附加信息。
2.3修改数据表
2.3.1修改表名
ALTER TABLE <旧表名> RENAME [TO] <新表名>; 关键字TO是可选的,是否出现不会影响语句执行
alter table 旧表名 rename t0 新表名;
例 将数据库itcast中的student表改为tb_stu表, SQL语句 如下:
Alter table student rename tb_stu;
2.3.2修改字段名
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
如果不需要修改数据类型,可以将新数据类型设置成与原来一样。
alter table 表名 change 旧字段名 新字段名 新数据类型;
例 将数据表tb_stu中的name字段改为sname,数据类型保持 不变,SQL语句如下
Alter table tb_stu change name sname varchar(20);
2.3.3修改字段名的数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>;
alter table 表名 modify 字段名 数据类型;
例 将数据表tb_stu中的id字段的数据类型修改为INT(15), SQL语句如下:
Alter table tb_stu modify id int(15);
2.4添加字段名
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];
FIRST 为可选参数,其作用 是将新添加的字段设置为表的第一个字段;AFTER 为可选参数,其作 用是将新添加的字段添加到指定的已存在的字段名的后面。
alter table 表名 add 新字段名 数据类型 约束条件 first/after 已存在的字段名;
first为可选,用于将新添加的字段设置为表第一个字段
after为可选,用于将新添加的字段放在已存在的字段名后
例 在数据表tb_stu中添加一个没有约束条件的grade字段 ,数据类型为FLOAT, 放在sname后面。
Alter table tb_stu add grade float after sname;
2.5删除字段名
ALTER TABLE <表名> DROP <字段名>;
Alter table 表名 drop 字段名;
例 删除tb_stu表中的grade字段, SQL语句如下:
Alter table tb_stu drop grade;
2.6修改字段名的排列位置
ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST/AFTER 字段名2;
“FIRST”为可选参数,指的是将字段1修改为表的第一个字 段,“AFTER 字段名2”是将字段1插入到字段2的后面。
alter table 表名 modify 字段名1 数据类型 first/after 字段名2;
例 将数据表tb_stu的sname字段修改为表的第一个字段, SQL语句如下:
Alter table tb_stu modify sname varchar(20) first;
2.7删除数据表
DROP TABLE 表明;
drop table 表明;
例:删除tb_stu表
2.8表的约束
2.8.1主键约束
可以唯一标识表中的记录,每个数据表最多只能有一个主键约束,定义为主键的字段不能有重复值且不能为null值
2.8.1.1单字段主键
在定义列的同时指定主键,语法规则如下:
字段名 数据类型 PRIMARY KEY
字段名 数据类型 primary key
例:创建一个数据表example01,并设置id为主键
Create table example01 ( Id int(10) primary key, Name varchar(20), Age int(3) );
2.8.1.2多字段主键
主键由多个字段联合组成,语法规则如下:
PRIMARY KEY [字段1,字段2,…,字段n]
例:创建一个数据表example02,并设置id和name共同作为主键
Create table example02 ( Id int(10) , Name varchar(20), Age int(3), primary key (id,Name) );
2.8.2非空约束
非空约束(NOT NULL)在表中某个列的定义后加上关键字 NOT NULL 作为限定词,来约束该列的取值不能为空。
具体的语法规则如下:
字段名 数据类型 NOT NULL;
字段名 数据类型 not null;
例:创建一个数据表example03,并设置name为非空约束
Create table example03 ( Id int(10), Name varchar(20) not null, Age int(3), );
2.8.3唯一约束
唯一约束(Unique Key)要求该列唯一,允许为空,但只能出现一个空值。
语法规则如下:
字段名 数据类型 UNIQUE;
字段名 数据类型 unique;
例:创建一个数据表example04,并设置id为唯一约束
Create table example04 ( Id int(10) unique, Name varchar(20) not null, Age int(3), );
2.8.4默认约束
默认约束用于给数据表的字段指定默认值,即当在表中插入一条记录时,如果没有给这个字段赋值,那么数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字定义的。
语法规则如下:
字段名 数据类型 DEFAULT 默认值;
字段名 数据类型 default 默认值;
例:创建一个数据表example05,并设置name字段的默认值为0
Create table example05 ( Id int(10), Name varchar(20) default 0, Age int(3), );
2.8.5设置表的字段值自动增加
在数据表中,若想为表中插入的新记录自动生成唯一的身份证,可以使用自动增量约束来实现。自动增量约束的字段可以是任何整数类型,默认情况下,该字段的值是从1开始自增的.
-语法格式如下所示:
字段名 数据类型 AUTO_INCREMENT;
字段名 数据类型 auto_increment;
例:创建一个数据表example06,并设置id字段为自动增加且唯一
Create table example06 ( Id int(10) primary auto_increment, Name varchar(20), Age int(3), );
2.9索引
索引是对数据库中一列或多列的值进行排序后的一种结构,其作用就是提高表中的查询数据
普通索引
由KEY或INDEX定义的索引
唯一性索引
由UNIQUE定义的索引,该索引所在的字段的值必须唯一的
全文索引
由FULLTEXT定义的索引,只能创建再CHAR,VARCHAR,TEXT类型的字段上。只有MyISAM存储引擎支持全文索引。
单列索引
在单个字段上创建索引
多列索引
在表中多个字段创建多个索引,只有在查询条件中使用了这些字段中的第一个字段时,该索引才会被使用。
空间索引
由SPATIAL定义的索引,只能创建在空间数据类型的字段上。空间类型的字段有四种,分别是GEOMETRY,POINT,LINESTEING,POLYGON。创建空间索引的字段,必须将其声明为NOT NULL,只有MyISAM存储引擎支持空间索引。
2.10创建索引
2.10.1创建表的时候创建索引
create table 表名(字段名 数据类型[完整性约束条件],
字段名 数据类型[完整性约束条件],
……
字段名 数据类型
[unique | fulltext | spatial] index | key
[别名] (字段名1 [(长度)] [asc | desc])
);
index | key:用来表示字段的索引,二者选一即可。
别名:可选参数,表示创建的索引的名称。
字段名1:指定索引对应字段的名称。
长度:可选参数,用于表示索引的长度
asc | desc:可选参数,asc表示升序排列,desc表示降序排列
1.创建普通索引
例:在t1表中id字段上建立索引
create table t1 (id int, name varchar(20), sore float, index (id) );
查看表结构,在id字段上已经创建了一个名称为id的索引
查看索引是否被使用
explain select from 表名 where (条件表达式;
2.创建唯一性索引
例:创建一个表名为t2的表,在表中的id字段上建立索引为unique_id的唯一性索引,并且按照升序排列。
create table t2 (id int not null, name varchar(20) not null, sore float, unique index unique_id(id asc) );
查看表结构已显示创建成功
3.创建全文索引
例:创建一个表名为t3的表,在表中的name字段上建立索引名为fulltext_name的全文索引
create table t3 (id int not null, name varchar(20) not null, sore float, fulltext index fulltext_name(name) )engine=myusam;
4.创建单列索引
例:创建一个表名为t4的表,在表中的name字段上建立索引名为single_name的单列索引,索引长度为20.
create table t4 (id int not null, name varchar(20) not null, sore float, index single_name(name(20)) );
5.创建多列索引
例:创建一个表名为t5的表,在表中的id和name字段上建立索引名为multi的多列索引,name字段索引长度为20.
create table t5 (id int not null, name varchar(20) not null, sore float, index multi(id,name(20)) );
6.创建空间索引
例:创建一个表名为t6的表,在空间类型为GEOMETRY的字段上创建空间索引
create table t6 (id int, space geometry sp ) engine=yisam;