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 原有字段]
新增无完整性约束的字段