MySQL之表操作

mysql -u root -p登陆MySQL服务器

-h : host (主机名)

-u : username (用户名)

-p : password (密码)

-- 查看现有的数据库 show databases; -- 创建数据库 create databases testdb; -- 删除数据库 drop database testdb; -- 选定数据库 use testdb; 数据表操作

语法:

create table 表名( 属性名 数据类型 [完整性约束], 属性名 数据类型 [完整性约束]), ...... ); -- 创建表 create table example0( id int, name varchar(20), sex boolean, ); 主键

介绍:特殊的字段,能够唯一标识每条记录,不能重复

目的:为了让MySQL能以最快的速度查找到改记录

创建语法:

-- 单字段主键 属性名 数据类型 primary key create table example1( stu_id int primary key, stu_name varchar(20), stu_sex boolean ); -- 多字段主键 primary key (属性1, ... , 属性n) create table example2( stu_id int, course_id int, grade_id float, primary key (stu_id, course_id) ); 外键

介绍:与父表建立关系的字段

原则:必须依赖与父表已存在的主键

目的:保证数据的完整性

语法:

constraint 外键别名 foreign key(字段1.1, 字段1.2) references 主表名(字段2.1, 字段2.2) create table example3( id int primary key, stu_id int, course_id int, constraint FK_STU_COURSE foreign key(stu_id, course_id) references example2(stu_id, course_id) );

注意:外键一定要和主表主键的类型一致

完整性约束

非空约束:属性名 类型 not null

唯一约束:属性名 类型 unique

自增长:属性名 类型 auto_increment(类型必须是整型)

默认值:属性名 类型 default 默认值

create table example4( id int primary key auto_increment, stu_id int unique, name varchar(20) not null, address varchar(255) default 'China' ); 表结构

查看表结构

基本结构

语法:describe 表名

可简写:desc 表名

mysql> desc example4; +---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | stu_id | int(11) | YES | UNI | NULL | | | name | varchar(20) | NO | | NULL | | | address | varchar(255) | YES | | China | | +---------+--------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) 详细结构

语法:show create table 表名

mysql> show create table example4 \G; *************************** 1. row *************************** Table: example4 Create Table: CREATE TABLE `example4` ( `id` int(11) NOT NULL AUTO_INCREMENT, `stu_id` int(11) DEFAULT NULL, `name` varchar(20) NOT NULL, `address` varchar(255) DEFAULT 'China', PRIMARY KEY (`id`), UNIQUE KEY `stu_id` (`stu_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec) ERROR: No query specified -- 这里的\G是格式化输出,方便查阅,无其他作用 修改表 修改表名

语法:alter table 旧表名 rename [to] 新表名

mysql> show tables; +-------------------+ | Tables_in_example | +-------------------+ | example0 | | example1 | | example2 | | example3 | | example4 | +-------------------+ 5 rows in set (0.00 sec) mysql> alter table example0 rename user; Query OK, 0 rows affected (0.00 sec) mysql> show tables; +-------------------+ | Tables_in_example | +-------------------+ | example1 | | example2 | | example3 | | example4 | | user | +-------------------+ 5 rows in set (0.00 sec) 修改字段

修改字段类型

语法:alter table 表名 change 旧属性名 新属性名 属性类型

mysql> desc example1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | stu_id | int(11) | NO | PRI | NULL | | | stu_name | varchar(20) | YES | | NULL | | | stu_sex | tinyint(1) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> alter table example1 change stu_id stu_id int(4); Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc example1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | stu_id | int(4) | NO | PRI | NULL | | | stu_name | varchar(20) | YES | | NULL | | | stu_sex | tinyint(1) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)

修改字段名

mysql> desc example1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | stu_id | int(4) | NO | PRI | NULL | | | stu_name | varchar(20) | YES | | NULL | | | stu_sex | tinyint(1) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) mysql> alter table example1 change stu_id id int(4); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc example1; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | int(4) | NO | PRI | NULL | | | stu_name | varchar(20) | YES | | NULL | | | stu_sex | tinyint(1) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)

新增字段

语法:alter table 表名 add 新属性名 新属性类型 [完整性约束] [first | after 原有字段]

新增无完整性约束的字段

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdwsx.html