博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
表操作
阅读量:5289 次
发布时间:2019-06-14

本文共 6136 字,大约阅读时间需要 20 分钟。

表介绍

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

id,name,qq,age称为字段,其余的,一行内容称为一条记录

本节重点:

1 创建表

2 查看表结构

3 数据类型

4 表完整性约束

5 修改表

6 复制表

7 删除表

 

一 创建表

语法:create table 表名(字段名1 类型[(宽度) 约束条件],字段名2 类型[(宽度) 约束条件],字段名3 类型[(宽度) 约束条件]);注意:1. 在同一张表中,字段名是不能相同2. 宽度和约束条件可选3. 字段名和类型是必须的

 

MariaDB [(none)]> create database db1 charset utf8;MariaDB [(none)]> use db1;MariaDB [db1]> create table t1(      -> id int,     -> name varchar(50),    -> sex enum('male','female'),    -> age int(3)    -> );MariaDB [db1]> show tables; #查看db1库下所有表名MariaDB [db1]> 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    |       |+-------+-----------------------+------+-----+---------+-------+MariaDB [db1]> select id,name,sex,age from t1;Empty set (0.00 sec)MariaDB [db1]> select * from t1;Empty set (0.00 sec)MariaDB [db1]> select id,name from t1;Empty set (0.00 sec)
MariaDB [db1]> insert into t1 values    -> (1,'egon',18,'male'),    -> (2,'alex',81,'female')    -> ;MariaDB [db1]> select * from t1;+------+------+------+--------+| id   | name | age  | sex    |+------+------+------+--------+|    1 | egon |   18 | male   ||    2 | alex |   81 | female |+------+------+------+--------+MariaDB [db1]> insert into t1(id) values     -> (3),    -> (4);MariaDB [db1]> select * from t1;+------+------+------+--------+| id   | name | age  | sex    |+------+------+------+--------+|    1 | egon |   18 | male   ||    2 | alex |   81 | female ||    3 | NULL | NULL | NULL   ||    4 | NULL | NULL | NULL   |+------+------+------+--------+
mysql> create database db1 charset latin1;mysql> use db1;mysql> create table t1(name varchar(20));mysql> show create table t1; #查看表,发现表默认与数据db1的字符编码一致mysql> insert into t1 values('林'); #插入中文出错,因为latin1不支持中文ERROR 1366 (HY000): mysql> #解决方法一:删除库db1,重建db1,字符编码指定为utf8#解决方法二:修改mysql> alter table t1 charset utf8; #修改表t1的编码mysql> insert into t1 values('林'); #虽然t1的编码改了,但是t1的字段name仍然是按照latin1编码创建的ERROR 1366 (HY000): mysql> alter table t1 modify name varchar(20); #需要重新定义下字段namemysql> insert into t1 values('林');mysql> select * from t1;+------+| name |+------+| 林   |+------+ps:不要忘记将数据库编码也改成utf8,这样以后在该数据库下创建表时,都默认utf8编码了#配置文件:http://blog.csdn.net/yipiankongbai/article/details/16937815
#1. 修改配置文件[mysqld]default-character-set=utf8 [client]default-character-set=utf8 [mysql]default-character-set=utf8#mysql5.5以上:修改方式有所改动    [mysqld]    character-set-server=utf8    collation-server=utf8_general_ci    [client]    default-character-set=utf8    [mysql]    default-character-set=utf8#2. 重启服务#3. 查看修改结果:\sshow variables like '%char%'

 

注意注意注意:表中的最后一个字段不要加逗号 

 

二 查看表结构

MariaDB [db1]> 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    |       |+-------+-----------------------+------+-----+---------+-------+MariaDB [db1]> show create table t1\G; #查看表详细结构,可加\G

 

三 数据类型

四 表完整性约束

五 修改表ALTER TABLE

语法:1. 修改表名      ALTER TABLE 表名                           RENAME 新表名;2. 增加字段      ALTER TABLE 表名                          ADD 字段名  数据类型 [完整性约束条件…],                        ADD 字段名  数据类型 [完整性约束条件…];    ALTER TABLE 表名                          ADD 字段名  数据类型 [完整性约束条件…]  FIRST;    ALTER TABLE 表名                            ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;                            3. 删除字段      ALTER TABLE 表名                                     DROP 字段名;4. 修改字段      ALTER TABLE 表名                           MODIFY  字段名 数据类型 [完整性约束条件…];      ALTER TABLE 表名                           CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];      ALTER TABLE 表名                           CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];示例: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. 修改字段类型modifymysql> 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 definedmysql> alter table student10 modify id int(11) not null auto_increment;Query OK, 0 rows affected (0.01 sec)Records: 0  Duplicates: 0  Warnings: 06. 对已经存在的表增加复合主键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;

 

六 复制表

复制表结构+记录 (key不会复制: 主键、外键和索引)mysql> create table new_service select * from service;只复制表结构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: 0mysql> create table t4 like employees;

 

七 删除表

DROP TABLE 表名;

转载于:https://www.cnblogs.com/moning/p/7510395.html

你可能感兴趣的文章
easydict的使用方法
查看>>
第一册:lesson seventy nine.
查看>>
查看webservice服务下的所有方法和参数类型
查看>>
GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
查看>>
团队作业
查看>>
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
SpringBoot13 利用mybatis-plus自动生成entity、dao、service、controller
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
maven内置属性
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>