MySQL的库表详细操作

一 库操作

1、创建数据库

    1.1 语法

      CREATE DATABASE 数据库名 charset utf8;

    1.2 数据库命名规则

      可以由字母、数字、下划线、@、#、$

      区分大小写

      唯一性

      不能使用关键字如 create select

      不能单独使用数字

      最长128位

基本上跟python或者js的命名规则一样

2、数据库相关操作

    也是一些基本操作,和我们之前说的差不多。

1 查看数据库
show databases;
show create database db1;
select database();

2 选择数据库
USE 数据库名

3 删除数据库
DROP DATABASE 数据库名;

4 修改数据库
alter database db1 charset utf8;

  关于库的内容,咱们就说这些吧,哈哈,有点少是吧,不是咱们的重点,来看下面的表操作~~~

二 表操作

1、存储引擎

    存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制,关于存储引擎的介绍看我这篇博客:https://www.cnblogs.com/changxin7/p/11525457.html

2、表介绍

    表相当于文件,表中的一条记录就相当于文件的一行内容,表中的一条记录有对应的标题,称为表的字段

    

    第一行的id、name2、age是字段,,其余的,一行内容称为一条记录。

3、创建表

    3.1 建表语法   

#语法:
create table 表名(
字段名1 类型[(宽度) 约束条件],
字段名2 类型[(宽度) 约束条件],
字段名3 类型[(宽度) 约束条件]
);

#注意:
1. 在同一张表中,字段名是不能相同
2. 宽度和约束条件可选、非必须,宽度指的就是字段长度约束,例如:char(10)里面的10
3. 字段名和类型是必须的
mysql> create database db1 charset utf8;

mysql> use db1;

mysql> create table t1(
    -> id int,
    -> name varchar(50),
    -> sex enum('male','female'),
    -> age int(3)
    -> );

mysql> show tables; #查看db1库下所有表名

mysql> desc t1;
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+

mysql> select id,name,sex,age from t1;
Empty set (0.00 sec)

mysql> select * from t1;
Empty set (0.00 sec)

mysql> select id,name from t1;
Empty set (0.00 sec)
mysql> insert into t1 values
    -> (1,'chao',18,'male'),
    -> (2,'sb',81,'female')
    -> ;
mysql> select * from t1;
+------+------+------+--------+
| id   | name | age  | sex    |
+------+------+------+--------+
|    1 | chao |   18 | male   |
|    2 | sb |   81 | female |
+------+------+------+--------+

mysql> insert into t1(id) values
    -> (3),
    -> (4);
mysql> select * from t1;
+------+------+------+--------+
| id   | name | age  | sex    |
+------+------+------+--------+
|    1 | chao |   18 | male   |
|    2 | sb |   81 | female |
|    3 | NULL | NULL | NULL   |
|    4 | NULL | NULL | NULL   |
+------+------+------+--------+

4、查看表结构

mysql> describe t1; #查看表结构,可简写为:desc 表名
+-------+-----------------------+------+-----+---------+-------+
| Field | Type                  | Null | Key | Default | Extra |
+-------+-----------------------+------+-----+---------+-------+
| id    | int(11)               | YES  |     | NULL    |       |
| name  | varchar(50)           | YES  |     | NULL    |       |
| sex   | enum('male','female') | YES  |     | NULL    |       |
| age   | int(3)                | YES  |     | NULL    |       |
+-------+-----------------------+------+-----+---------+-------+

mysql> show create table t1\G; #查看表详细结构,可加\G

5、MySQL的基础数据类型

    关于数据类型,看我这篇博客:https://www.cnblogs.com/changxin7/p/11528101.html

6、表的完整性约束

    关于表的完整性约束,看我这篇博客:https://www.cnblogs.com/changxin7/p/11535976.html

    

7、修改表 alter table

    下面的内容就不带着大家演示了,简单带大家看一下,都是固定的语法格式,按照这个写就行了,毫无逻辑可言,所以不做太多的演示,大家自己回去练一下:

    

语法:
1. 修改表名
      ALTER TABLE 表名
                          RENAME 新表名;

2. 增加字段
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…], #注意这里可以通过逗号来分割,一下添加多个约束条件
                          ADD 字段名  数据类型 [完整性约束条件…];
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  FIRST; #添加这个字段的时候,把它放到第一个字段位置去。
      ALTER TABLE 表名
                          ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;#after是放到后的这个字段的后面去了,我们通过一个first和一个after就可以将新添加的字段放到表的任意字段位置了。

3. 删除字段
      ALTER TABLE 表名
                          DROP 字段名;

4. 修改字段
      ALTER TABLE 表名
                          MODIFY  字段名 数据类型 [完整性约束条件…];
      ALTER TABLE 表名
                          CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];  #change比modify还多了个改名字的功能,这一句是只改了一个字段名
      ALTER TABLE 表名
                          CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];#这一句除了改了字段名,还改了数据类型、完整性约束等等的内容

    给一个字段添加外键属性的语句:alter table 表2名 add foreign key(表2的一个字段) references 表1名(表1的一个字段);

    注意一点:在mysql里面表名是不区分大小写的,如果你将一个名为t1的(小写的t1)改名为一个T1(大写的T1),是完全没用的,因为在数据库里面表名都是小写的。

示例:
1. 修改存储引擎
mysql> alter table service
    -> engine=innodb;

2. 添加字段
mysql> alter table student10
    -> add name varchar(20) not null,
    -> add age int(3) not null default 22;

mysql> alter table student10
    -> add stu_num varchar(10) not null after name;                //添加name字段之后

mysql> alter table student10
    -> add sex enum('male','female') default 'male' first;          //添加到最前面

3. 删除字段
mysql> alter table student10
    -> drop sex;

mysql> alter table service
    -> drop mac;

4. 修改字段类型modify
mysql> alter table student10
    -> modify age int(3);
mysql> alter table student10
    -> modify id int(11) not null primary key auto_increment;    //修改为主键

5. 增加约束(针对已有的主键增加auto_increment)
mysql> alter table student10 modify id int(11) not null primary key auto_increment;
ERROR 1068 (42000): Multiple primary key defined

mysql> alter table student10 modify id int(11) not null auto_increment;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

6. 对已经存在的表增加复合主键
mysql> alter table service2
    -> add primary key(host_ip,port);        

7. 增加主键
mysql> alter table student1
    -> modify name varchar(10) not null primary key;

8. 增加主键和自动增长
mysql> alter table student1
    -> modify id int not null primary key auto_increment;

9. 删除主键
a. 删除自增约束
mysql> alter table student10 modify id int(11) not null; 

b. 删除主键
mysql> alter table student10
    -> drop primary key;

    

8、复制表

    

    我们通过select查询出来的结果既有表结构又有表记录(数据),我们在重新创建一个和它一样的表的时候,之前用create还需要自己将表结构写好,然后把那些数据插入到新建的表中,很麻烦,那么我们就可以直接使用mysql提供的复制表的功能:(复制表用的很少昂,了解一下就行了)

    语法:复制表结构+记录 (key不会复制: 主键、外键和索引)
    mysql> create table new_service select * from service;#这句话的意思是你从service表里面查询出来的数据不要在屏幕上打印了,你直接给我的新表new_service

    我们自己写个例子:

      

      虽然我们不能复制key,但是我们可以给他加回去啊:alter table xxx

      

    只复制表结构,不要数据
    mysql> select * from service where 1=2; //条件为假,查不到任何记录,所以我们可以通过它来只复制表结构,看下面一句
    Empty set (0.00 sec)
    mysql> create table new1_service select * from service where 1=2; #筛选数据的条件为假,那么只拿到了结构,并没有查询出任何的数据,所以做到了只复制表结构
    Query OK, 0 rows affected (0.00 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    mysql> create table t4 like employees; #获取用like可以达到这个效果

原文地址:https://www.cnblogs.com/changxin7/p/11550121.html

时间: 2024-10-11 18:03:51

MySQL的库表详细操作的相关文章

Python-MySQL库表详细操作

昨天我们初始了MySQL,今天我们先从库表方面详细说一下具体操作 一.库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 # 基本上跟python或者js的命名规则一样 2.数据库相关操作 也是一些基本操作,和我们之前说的差不多. 1 查看数据库 show databases; sh

mysql 查询库表磁盘占用

查整个库的状态:select concat(truncate(sum(data_length)/1024/1024,2),'MB') as data_size,          concat(truncate(sum(max_data_length)/1024/1024,2),'MB') as max_data_size,          concat(truncate(sum(data_free)/1024/1024,2),'MB') as data_free,          conc

MySQL学习——有关表的操作语句

MySQL学习——有关表的操作语句 摘要:本文主要学习了使用DDL语句对表进行操作的方法. 创建表 语法 1 create table 表名 [表定义选项] [表选项] [分区选项]; 表定义选项 用来创建定义表的结构,由列名(col_name).列的定义(column_definition)以及可能的空值说明.完整性约束或表索引组成. 实例 1 create table test ( 2 id int(11) not null comment '编号', 3 name varchar(50)

mysql对库,表,数据类型的操作以及完整性约束

一丶对库的操作 求救语法: help create database; 1.创建数据库 CREATE DATABASE 数据库名 charset utf8; 2.数据库的命名规则: 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 # 基本上跟python或者js的命名规则一样 3.数据库的相关操作: #查看数据库 show databases; #查看当前库 show create database db1;

mysql 之库, 表的简易操作

一. 库的操作 1.创建数据库 创建数据库: create database 库名 charset utf8;   charset uft8  可选项 1.2 数据库命名规范: 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 2.数据库基本操作: 1 查看数据库 show databases; show create database db1; select database(); 2 选择数据库 USE 数

mysql 库表的操作

MySQL的库.表的详细操作 MySQL数据库 本节目录 一 库操作 二 表操作 三 行操作 一 库操作 1.创建数据库 1.1 语法 CREATE DATABASE 数据库名 charset utf8; 1.2 数据库命名规则 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 # 基本上跟python或者js的命名规则一样 2.数据库相关操作 也是一些基本操作,和我们之前说的差不多. 复制代码 1 查看数据库

Mysql之库表操作(胖胖老师)

SQL概念:结构化查询语言(SQL = Structured Query Language),也是一种编程语言(数据库查询和程序设计语言),可以用于数据的存取及查询,更新,管理关系型数据库系统ps: 不同数据库系统之间的SQL不能完全相互通用; 分类针对操作的对象不同,可以分成不同语言1: 数据操作(数据管理)语言  DML(Data Management Language)    1): 查询数据           DQL    2): 增, 删, 改           DML2: 数据定

表详细操作

表的详细操作: 1.修改表名: alter table 旧表名 rename 新表名 2.修改表的引擎与字符编码: alter table 表名 engine ='引擎名' charset='编码名'; 3.复制表 create table 新表名 like 旧表名; create table 新表名 select * from 表名 where 条件; 4.清空表: truncate 表名: 表被清空,包括自增字段 表中字段的详细操作: 1.需要改字段信息: alter table 表名 mo

MySQL基本操作--库\表增删改查

库的增删改查 增: create database db1; 删: drop database db1; 改: alter database db1 charset utf8; 修改库的字符集编码 查: show database; 查看所有的数据库 show create database db1\G; 查看数据库创建信息 表的增删改查 切换库: use db1     #要操作表文件,要先切换到对应的库下才能操作 增: create table tb1(id int); 删: drop ta