您的位置:首页 > 数据库 > MySQL

MySQL数据库的操作(02)---数据库、表的基本语法(操作)

2019-08-07 10:41 423 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_44825669/article/details/97684621

目录

 

1.操作数据库

2.表的操作语句

2.1创建表

2.2查看表结构

2.3修改表

2.4删除表

1.操作数据库

1.1创建数据库:

create database 数据库名;
create database 数据库名 character set 字符集;

例如:

[code]
#创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8
CREATE DATABASE day21_1;
#创建数据库 并指定数据库中数据的编码
CREATE DATABASE day21_2 CHARACTER SET utf8;

2.2查看数据库

查看数据库MySQL服务器中的所有的数据库:
show databases;
查看某个数据库的定义的信息:
show create database 数据库名;

 2.3删除数据库:(删除指定的数据库)

drop database 数据库名;

注意: 删除数据库时会删除数据库中的所有的表和表中的数据,因此删除要十分小心谨慎;最好先将该数据库中的数据备份,然后删除,避免不必要的麻烦

2.4使用数据库

use 数据库名;

2.5查看正在使用的数据库 

select database();

2.表的操作语句

表是数据库存储数据的基本单位,创建表是指在已存在的数据库中建立新表。因此在创建表之前,我们应该先使用自己想用的数据库,输入 use 数据库名; 即可

2.1创建表

2.1.1创建表的语法

create table 表名(

'属性名' 数据类型(长度) 完整性约束条件,
'属性名' 数据类型(长度) 完整性约束条件,

);

例如:

[code]create table user1(
id int,
name varchar(20),
sex boolean
);

 2.1.2主键的设置

      主键是用于标识当前记录的字段,在开发中一般情况下主键是不具备任何含义,只是用于标识当前记录,主键必须满足的条件是:主键必须是唯一的,表中任意两条记录的主键字段的值不能相同;主键的值是非空值。主键可以使单一字段,也可以是多个字段的组合。 

格式

  1. 在创建表时创建主键,在字段后面加上 primary key.

         create table user2(
         id int primary key,
         .......);

     2.在创建表时创建主键,在表创建的最后来指定主键
        create table user3(
        id int,
        .......,
        primary key(id));

上面均为单字段主键,即主键是由一个字段构成的,若要设置多字段主键,语法规则是:

primary key(属性名1,属性名2,....);

例如: 

[code] create table user2(
id int,
sex boolean,
primary key(id));

2.1.3设置表的外键

外键是表的一个特殊字段。 如果字段son是一个表A的属性,且依赖于表B的主键。那么,称表B为父表,表A为子表,sno 为表A的外键。通过son字段将父表B和子表A建立关联关系。

设置外键的原则就是必须依赖于数据库中已存在的父表的主键;外键可以为空值            外键的作用是建立该表与其父表的关联关系。父表中删除某条信息时,子表中与之对应的信息也必须有相应的改变,从而保证信息的完整性

语法:

constraint 外键别名 foreign key(属性1.1,.....,属性1.n)

               references 表名(属性2.1,.....,属性2.n)

其中,外键别名”参数是为外键的代号:“属性1”参数列表是子表中设置的外键;“表名”参数是指父表的名称:“属性2”参数列表是父表的主键。

例如:

[code]create table user3(
id1 int primary key,
id int,
constraint son foreign key(id)
references user2(id)
);

代码运行后,user3表中:id1字段是主键: id 字段为外键; son是外键的别名: user2表称为user3表的父表;user3 表的外键依赖于父表user2 的主键id

注意:子表的外键关联的必须是父表的主键,并且,数据类型必须是一致如果不满足这样的要求,在创建子表时,就会出现“ERROR 1005 (HY000): Can't create table”错误。

2.1.4设置表的非空约束

非空性是指字段的值不能为空值(NULL),非空约束将保证所有记录中该字段都有值,语法如下:

属性名 数据类型(长度) not null

例如,在 id int not null 即可

2.1.5设置表的唯一性约束

唯一性是指所有记录中该字段的值不能重复出现,唯一性约束将保证所有记录中该字段的值不能重复出现

属性名 数据类型 unique

 2.1.6设置表的属性值自动增加

auto_increment是mysql数据库中的一个特殊约束条件,主要用于为表中插入的新纪录自动生成唯一的id,一个表只能有一个字段使用auto_increment约束,且该字段必须为主键的一部分;其约束的字段可以是任何整数类型;默认地,该字段的开始值是 1,每条新记录递增 1(可以设置该字段的初值,设置完后新增的记录id就会从设置的初值开始往上增加)

属性名  数据类型 auto_increment

 2.1.7设置表的属性的默认值

在创建表时可以指定表中字段的默认值,如果插入一条新的记录时没有为这个字段赋值,那么数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字来设置的

属性名 数据类型 default 默认值

 2.2查看表结构

2.2.1查看表基本结构语句 describe(可缩写成desc)

describe语句可以 3ff7 查看表的基本定义。其中包括,字段名、字段数据,类型、是否为主键和默认值等

describe 表名;

 例如,这里我们查看创建的user2表:

[code]mysql> describe user2;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int(11)    | NO   | PRI | NULL    |       |
| sex   | tinyint(1) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.23 sec)

2.2.2 查看表详细结构语句 show create table

次命令执行后不仅能查看上树定义,还可以查看表默认的存储引擎和字符编码

show create table 表名;

ps:若在代码后面加上 \G参数,可以更加美观的显示内容,更加整齐,对内容较长的记录效果尤为,明显

[code]mysql> show create table user2\G
*************************** 1. row ***************************
Table: user2
Create Table: CREATE TABLE `user2` (
`id` int(11) NOT NULL,
`sex` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

可以看到,user2表的存储引擎(engine)为InnoDB,字符编码(charset)为utf8

2.3修改表

2.3.1修改表名

alter table 旧表名 rename [TO] 新表名;

 TO参数是可选参数,是否在语句中出现不会影响语句的执行

2.3.2修改字段的数据类型

alter table 表名 modify 属性名 数据类型;

其中,表名指所要修改的表的名称;属性名指需要修改的字段的名称;数据类型指修改后的新数据类型 

2.3.3修改字段名

alter table 表名 change 旧属性名 新属性名 新数据类型;

注意: “新数据类型”指修改后的数据类型,若不需要修改,将新数据类型设置成和原来一样即可;如果表中以有数据,修改数据类型时要十分小心,可能会影响表中的数据。特别是字符类型的数据最好不要修改成整数或浮点类型

2.3.4增加字段

alter table 表名 add 属性名1 数据类型 [约束条件] [first] after 属性名2;

其中,’属性名1‘为要增加的字段名称;’first‘与’after 属性名2‘参数为可选字段,first参数作用是将新增字段设置为表的第一个字段;‘after 属性名2’参数是将新增字段添加到属性名2所指的字段后

在user4表age属性后,增加sex属性:

[code]mysql> alter table user4 add sex varchar(1) after age;
Query OK, 0 rows affected (2.74 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> describe user4;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id1   | int(11)    | NO   | PRI | NULL    |       |
| age   | int(2)     | NO   |     | NULL    |       |
| sex   | varchar(1) | YES  |     | NULL    |       |
| id    | int(20)    | YES  | MUL | NULL    |       |
+-------+------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

2.3.5 删除字段

alter table 表名 drop 属性名;

 2.3.6 修改字段的排列位置

alter table 表名 modify 属性名1 数据类型 first | after 属性名2;

 first与after 属性名2的作用与增加字段时的作用一致,都是改变字段的位置

2.3.7更改表的存储引擎:

alter table 表名 engine=存储引擎名;

 show create table 表名\G可查看表当前使用的存储引擎,修改user2表的存储引擎:

[code]mysql> alter table user2 engine=myisam;
ERROR 3776 (HY000): Cannot change table's storage engine because the table participates in a foreign key constraint.

结果:出错,无法改变表的存储引擎,因为表参与外键约束

这是因为我们在上面创建user3时,使user2表为它的父表,因为存在外键约束而无法修改表的存储引擎,同时在删除表、修改表时都可能因外键约束从而无法操作完成。修改无外键约束表时操作成功:

[code]mysql> alter table user4 engine=myisam;
Query OK, 0 rows affected (0.53 sec)
Records: 0  Duplicates: 0  Warnings: 0

2.3.8 删除表的外键约束:

alter table 表名 drop foreign key 外键别名;

 ”外键别名“为创建表时设置的外键的代号,若忘记可执行 show create table 表名\G 语句,查看表的属性

删除user3表的外键约束

[code]mysql> show create table user3\G
*************************** 1. row ***************************
Table: user3
Create Table: CREATE TABLE `user3` (
`id1` int(11) NOT NULL,
`id` int(11) DEFAULT NULL,
PRIMARY KEY (`id1`),
KEY `son` (`id`),
CONSTRAINT `son` FOREIGN KEY (`id`) REFERENCES `user2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

mysql> alter table user3 drop foreign key son;
Query OK, 0 rows affected (0.35 sec)
Records: 0  Duplicates: 0  Warnings: 0

CONSTRAINT `son` FOREIGN KEY (`id`) REFERENCES `user2` (`id`) 表示‘son’约束外键‘id’继承于user2的'id';删除外键成功

2.4删除表

2.4.1 删除没有被关联的普通表:

drop table 表名;

 注:删除表,会将表中的数据也删除,因此十分注意,可将表中的数据先备份再删除

2.4.2 删除被关联的父表:

结果:会报错,原因:有外键依赖于此表,所以在删除父表时可通过先删除子表再删父表(不建议)或者 先删除子表中的外键约束,再删除父表

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: