MySQL操作

在安装环境都好之后就可以对数据库进行操作了

一、数据库的基本操作

1、查看数据库:show databases;
MySQL安装完成之后,会自动创建几个必须的数据库

2、创建数据库:create database database_name;
创建一个名为database_name的数据库

3、查询创建的数据库:show create database database_name;
查询名为database_name的数据库

4、删除数据库:drop database database_name;
删除名为database_name的数据库,如果没有则会报错

图片.png

5、查看系统所支持的引擎类型:show engines;

图片.png

Support列的值表示某种引擎是否能用:YES表示可以使用,NO表示不能使用,DEFAULT表示该引擎为当前默认存储引擎

二、数据表的基本操作

(1)创建数据表

1、在创建数据表之前,应该使用语句USE <数据库名>指定操作的是哪个数据库,不然的话会抛出No database selected的错误

2、创建数据表:create table <表名>
创建表名的时候,必须指定以下信息:

  • 要创建的表的名称,不区分大小写,不能使会用SQL语言中的关键字,如DROP、ALTER、INSERT等
  • 数据表中的每一列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开
CREATE TABLE <表名>
(
字段名1, 数据类型 [列级别约束条件] [默认值],
字段名2, 数据类型 [列级别约束条件] [默认值],
......
[表级别约束条件]
);

3、创建一个名称为tb_emp1的数据表:
create table tb_emp1 ( id INT(11), name VARCHAR(25), deptId INT(11), salary FLOAT);

查看数据表:show tables;

4、使用主键约束:

  • 单字段主键,语法规则:字段名 数据类型 PRIMARY KEY [默认值]
create table tb_emp2 ( id INT(11) PRIMARY KEY, name VARCHAR(25), deptId INT(11), salary FLOAT);
  • 定义完所有列之后指定主键,语法规则:[CONSTRAINT <约束名>] PRIMARY KEY [字段名]
create table tb_emp3 ( id INT(11), name VARCHAR(25), deptId INT(11), salary FLOAT, PRIMARY KEY(id));
  • 多字段联合主键,语法规则:PRIMARY KEY [字段1, 字段2, ..., 字段n]
create table tb_emp4 ( name VARCHAR(25), deptId INT(11), salary FLOAT, PRIMARY KEY(name, deptId));

5、使用外键约束

外键约束用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以是空值,若不为空,则每一个外键值必须等于另一个表中主键的某个值。

外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键主要作用是保证数据引用的完整性。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。
从表(字表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。

创建外键的语法规则:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [ , 字段名2, ...] 
REFERENCES <主表名> 主键列1 [ , 主键列2, ...]

“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;“字段名”表示子表需要添加外键约束的字段列;“主表名”即被字表外键所以来的表的名称;“主键列”表示主表中定义的主键列,或者列组合

// 创建一个部门表
create table tb_dept1 ( id INT(11) PRIMARY KEY, name VARCHAR(22) NOT NULL, location VARCHAR(50));

// 创建一个员工表,让它的键deptId作为外键关联到tb_dept1的主键id
create table tb_emp5 ( id INT(11) PRIMARY KEY, name VARCHAR(25), deptId INT(11), salary FLOAT, CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES tb_dept1(id)  );

6、使用非空约束

非空约束(Not Null Constraint)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

非空约束的语法规则:字段名 数据类型 not null

create table tb_emp6 (id INT(11) PRIMARY KEY, name VARCAR(25) NOT NULL, deptId INT(11), salary FLOAT);

7、使用唯一性约束

唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

唯一性约束的语法规则:

  • 在定义完列之后直接指定唯一约束,字段名 数据类型 UNIQUE
create table tb_dept2 (id INT(11) PRIMARY KEY, name VARCHAR(22) UNIQUE, location VARCHAR(50));
  • 在定义完所有列之后指定唯一约束,[CONSTRAINT <约束名>] UNIQUE (<字段名>)
create table tb_dept3 (id INT(11) PRIMARY KEY, name VARCHAR(22), location VARCHAR(50), CONSTRAINT STH UNIQUE(name));

UNIQUE与PRIMARY KEY的区别:一个表中可以有多个字段声明为UNIQUE,但只能有一个PRIMARY KEY声明,声明为PRIMARY KEY的列不允许有空值,但是声明为UNIQUE的字段允许空值(NULL)的存在。

8、使用默认约束

默认约束(Default Constraint)指定某列的默认值。如果插入一条新的记录时没有为这个字段赋值,那么系统就会自动为这个字段赋值为默认值。

语法规则:字段名 数据类型 DEFAULT 默认值

create table tb_emp7 (id INT(11) PRIMARY KEY, name VARCHAR(25) NOT NULL, deptId INT(11) DEFAULT 1111, salary FLOAT);

9、设置表的属性值自动增加

在数据库应用中,经常希望在每次插入新纪录时,系统自动生成字段的主键值。可以通过为主键添加AUTO_INCREMENT关键字来实现。默认的,在MySQL中AUTO_INCREMENT的初始值为1,每新增一条记录,字段值自动加1.一个表只能有一个字段使用AUTO_INCREMENT,且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLIN、INT、BIGINT等)。

设置表的属性值自动增加的语法规则:字段名 数据类型 AUTO_INCREMENT

create table tb_emp8 (id INT(11) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(25) NOT NULL, depted INT(11), salary FLOAT);
(2)查看数据表结构

使用SQL语句创建好数据表之后,可以查看表结构的定义,以确认表的定义是否正确。在MySQL中,查看表结构可以使用DESCRIBESHOW CREATE TABLE语句。

  • 查看表基本结构语句DESCRIBE

DESCRIBE/DESC语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等


图片.png

NULL:表示该列是否可以存储NULL值
Key:表示该列是否已编制索引。PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次
Default:表示该列是否有默认值,如果有的话值是多少
Extra:表示可以获取的与给定咧有关的附加信息,例如AUTO_INCREMNET

  • 查看表详细结构语句SHOW CREATE TABLE

使用SHOW CREATE TABLE不仅可以查看表创建时候的详细语句,而且还可以查看存储引擎和字符编码

如果不加\G参数,显示的结果可能非常混乱,加上\G参数之后可以使得显示结果更加直观,易于查看。

图片.png

(3)修改数据表

1、修改表名

语法规则:ALTER TABLE <旧表名> RENAME [TO] <新表名>;,其中TO为可选参数,使用与否均不影响结果

alter table tb_dept3 rename tb_deptment3;
// 将数据表tb_dept3改名为tb_deptment3

2、修改字段的数据类型

就是把字段的数据类型转换成另一种数据类型,语法规则:ALTER TABLE <表名> MODIFY <字段名> <数据类型>;

图片.png

3、修改字段名

语法规则:ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

图片.png

4、添加字段

一个完整字段包括字段名、数据类型、完整性约束。

添加字段的语法格式:ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST | AFTER 已存在字段名]

  • 添加无完整性约束条件的字段
  • 添加有完整性约束条件的字段
  • 在表的第一列添加一个字段
  • 在表的指定列之后添加一个字段
图片.png

5、删除字段

删除字段就是讲数据表中某个字段从表中移除,语法格式为:ALTER TABLE <表名> DROP <字段名>

图片.png

6、修改字段的排列位置

对于一个数据表来说,在创建的时候,字段在表中的排列顺序就已经确定了。但表的结构不是完全不可以改变的,可以通过ALTER TABLE来改变表中字段的相对位置。

语法格式:ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>

图片.png

7、更改表的存储引擎

可以根据自己的需要选择不同的引擎,甚至可以为每一张表选择不同的存储引擎。使用SHOW ENGINES;语句查看系统支持的存储引擎。

更改表的存储引擎的语法格式:ALERT TABLE <表名> ENGINE=<更改后的存储引擎名>

图片.png

8、删除表的外键约束

对于数据库中定义的外键,如果不需要,可以将其删除。外键一旦删除,就会接触主表和从表间的关联关系。

MySQL中删除外键的语法格式:ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>

外键约束名指的是在定义表时CONSTRAINT关键字后面的参数

图片.png
(4)删除数据表

删除数据表就是将数据库中已经存在的表从数据库中删除。

注意,在删除表的同时,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做个备份,以免造成无法挽回的后果。

1、删除没有被关联的表

在MySQL中,使用DROP TABLE可以一次删除一个或多个没有被其他表关联的数据表。

语法格式:DROP TABLE [IF EXISTS] 表1, 表2, ...表n;,其中“表n”指要删除的表的名称,后面可以同时删除多个表,只需将要删除的表名依次写在后面,相互之间用逗号隔开即可。如果要删除的数据表不存在,则MySQL会提示一条错误信息。参数“IF EXISTS”用于在删除前判断删除的表是否存在,加上该参数后,再删除表的时候,如果不存在,SQL语句可以顺利执行,但是会发出警告(warning)。

图片.png

2、删除被其他表关联的主表

数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因是直接删除,将破坏表的参照完整性。如果必须要删除,可以先删除与它关联的子表,再删除父表,只是这样同时删除了两个表中的数据。但有的情况下可能要保留子表,这时如要单独删除父表,只需要将关联的表的外键约束条件取消,然后就可以删除父表。

图片.png

注意:
(1)表删除操作需谨慎,最好能在删除之前对数据进行备份
(2)并不是每一个表都需要主键,如果多个表进行连接操作时,需要用到主键
(3)并不是每个表都可以任意选择存储引擎。外键约束(FOREIGN KEY)不能跨引擎使用。MySQL支持多种存储引擎,每一个表都可以指定一个不同的存储引擎,但是要注意,外键约束是用来保证数据的参照完整性,如果表之间需要关联外键,却指定了不同的存储引擎,这些表之间是不能创建外键约束的。所以说,存储引擎的选择也不完全是随意的。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容