创建数据表

CREATE TABLE IF NOT EXISTS tbl_name(
字段名称 字段类型 [完整性约束条件],
字段名称 字段类型 [完整性约束条件],

)ENGINE=存储引擎 CHARSET=编码方式;
#VARCHAR(10)代表10个字符,不管是英文,汉字

  1. --用户表imooc_user
  2. CREATE TABLE IF NOT EXISTS `imooc_user`(
  3. `id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '用户编号',
  4. `username` VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名',
  5. `password` CHAR(32) NOT NULL COMMENT '密码',
  6. `email` VARCHAR(50) NOT NULL UNIQUE COMMENT '邮箱',
  7. `age` TINYINT UNSIGNED NOT NULL DEFAULT 18 COMMENT '年龄',
  8. `sex` ENUM('男','女','保密') NOT NULL DEFAULT '保密' COMMENT '性别',
  9. `tel` CHAR(11) NOT NULL UNIQUE COMMENT '电话',
  10. `addr` VARCHAR(50) NOT NULL DEFAULT '北京' COMMENT '地址',
  11. `card` CHAR(18) NOT NULL UNIQUE COMMENT '身份证号',
  12. `married` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '0代表未结婚,1代表已结婚',
  13. `salary` FLOAT(8,2) NOT NULL DEFAULT 0 COMMENT '薪水'
  14. )ENGINE=INNODB CHARSET=UTF8;
--创建结构相同的表
CREATE GTABLE user2 LIKE user1;

查询数据表

  1. 查看当前数据库中的所有表格:SHOW TABLES;

完整命令:SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE ‘pattern’ | WHERE expr]

  1. 查看指定数据表的详细信息:SHOW CREATE TABLE tbl_name;

显示建表语句

SHOW CREATE TABLE users;
  1. 查看数据表结构:以下三条语句的效果是一样的

DESC tbl_name;

DESC users;

DESCRIBE tbl_name;

DESCRIBE users;

SHOW COLUMNS FROM tbl_name;

SHOW COLUMNS FROM users;

4,查看数据表的具体状态(引擎,数据格式等)

SHOW TABLE STATUS LIKE 'test_myisam';

删除数据表

  1. 删除指定的数据表:DROP TABLE tbl_name;
  2. 如果数据表存在则删除:DROP TABLE [IF EXISTS] tbl_name;
    DORP TABLE IF EXISTS users;
    

修改数据表

添加,删除字段

ALTER TABLE tbl_name
ADD 字段名称 字段属性 [完整性约束条件][FIRST|AFTER 字段名称]

ALTER TABLE tbl_name
DROP 字段名称

--测试添加和删除字段
CREATE TABLE IF NOT EXISTS user1(
  id INT UNSIGNED AUTO_INCREMENT KEY
);

--添加用户名字段 username VARCHAR(20)
ALTER TABLE user1
ADD username VARCHAR(20);

--添加密码字段 password CHAR(32) NOT NULL
ALTER TABlE user1
ADD password CHAR(32) NOT NULL;

--添加邮箱字段 email VARCHAR(50) NOT NULL 加到username之后
ALTER TABLE user1
ADD email VARCHAR(50) NOT NULL AFTER username;

--添加测试字段 test TINYINT(1) NOT NULL DEFAULT 0;加到首位
ALTER TABLE user1
ADD test TINYINT(1) NOT NULL DEFAULT 0 FIRST;

--删除测试字段
ALTER TABLE user1
DROP test;

--添加age,addr字段,删除email字段
ALTER TABLE user1
ADD age TINYINT UNSIGNED NOT NULL DEFAULT 18,
ADD addr VARCHAR(100) NOT NULL DEFAULT '北京',
DROP email;

--以下这样也是可以的
ALTER TABLE user1
ADD (age TINYINT UNSIGNED NOT NULL DEFAULT 18,addr VARCHAR(100) NOT NULL DEFAULT '北京');

添加,删除默认值

ALTER TABLE tbl_name
ALTER 字段名称 SET DEFAULT 默认值;

ALTER TABLE tbl_name
ALTER 字段名称 DROP DEFAULT;

--测试添加删除默认值操作
CREATE TABLE user2(
  id INT UNSIGNED AUTO_INCREMENT KEY,
  username VARCHAR(20) NOT NULL,
  age TINYINT UNSIGNED NOT NULL DEFAULT 18,
  email VARCHAR(50) NOT NULL
);

--给email字段添加默认值 imooc@qq.com
ALTER TABLE user2
ALTER email SET DEFAULT 'imooc@qq.com';

--删除age字段的默认值
ALTER TABLE user2
ALTER age DROP DEFAULT;

修改字段类型,属性

ALTER TABLE tbl_name
MODIFY 字段名称 字段类型 [字段属性][FIRST | AFTER 字段名称]

修改字段名称,类型,属性

ALTER TABLE tbl_name
CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER字段名称]

--MODIFY:修改字段类型,字段属性,字段位置
--CHANGE:修改字段名称,字段类型,字段属性,字段位置
CREATE TABLE user3(
  id INT UNSIGNED AUTO_INCREMENT KEY,
  username VARCHAR(5) NOT NULL UNIQUE,
  password CHAR(32) NOT NULL,
  email VARCHAR(10) NOT NULL
);

--将用户名字段的类型改为20
ALTER TABLE user3
--修改的时候UNIQUE可以不用加,否则会报警告
--但是NOT NULL必须写,否则这个属性会消失
-- MODIFY username VARCHAR(20) NOT NULL UNIQUE;
MODIFY username VARCHAR(20) NOT NULL;

--将密码字段长度改为40
ALTER TABLE user3
MODIFY password CHAR(40) NOT NULL;

--将email字段改为VARCHAR(50) NOT NULL FIRST
ALTER TABLE user3
MODIFY email VARCHAR(50) NOT NULL FIRST;

--用MODIFY添加default属性也是可以的
ALTER TABLE user3
MODIFY username VARCHAR(5) NOT NULL DEFAULT 'SONG';

--将username 名称改为user
ALTER TABLE user3
CHANGE username user VARCHAR(20) NOT NULL;

--将password 名称改pwd
ALTER TABLE user3
CHANGE password pwd CHAR(32) NOT NULL;

--将email改成userEmail 类型改成VARCHAR(100) DEFAULT 'imooc@qq.com'
ALTER TABLE user3
CHANGE email userEmail VARCHAR(100) DEFAULT 'imooc@qq.com';

--以下这样是不对的
-- ALTER TABLE user3
-- CHANGE email VARCHAR(50) DEFAULT 'imooc@qq.com';

添加,删除主键

ALTER TABLE tbl_name
ADD PRIMARY KEY (字段名称)

ALTER TABLE tbl_name
DROP PRIMARY KEY

--测试添加和删除主键
CREATE TABLE user4(
  id INT UNSIGNED,
  username VARCHAR(20) NOT NULL
);

--添加主键
--这个时候会自动添加NOT NULL属性
ALTER TABLE user4
ADD PRIMARY KEY(id);

--删除主键
--这个是时候NOT NULL属性仍然存在
ALTER TABLE user4
DROP PRIMARY KEY;
CREATE TABLE user5(
  id INT UNSIGNED AUTO_INCREMENT KEY,
  username VARCHAR(20) NOT NULL
);

--以下这个时候是会报错的,因为有AUTO_INCRMENT属性存在
--AUTO_INCREMENT属性必须和主键属性搭配存在
-- ALTER TABLE user5
-- DROP PRIMARY KEY;

--正确的做法是先把id的AUTO_INCREMENT属性删除,然后在删除主键
ALTER TABLE user5
MODIFY id INT UNSIGNED;

ALTER TABLE user5
DROP PRIMARY KEY;

添加,删除唯一索引

CREATE TABLE user6(
  id INT UNSIGNED AUTO_INCREMENT KEY,
  username VARCHAR(20) NOT NULL UNIQUE,
  password CHAR(32) NOT NULL,
  email VARCHAR(50) NOT NULL UNIQUE
);

ALTER TABLE tbl_name
ADD UNIQUE KEY(字段名称);
#不设置索引名,mysql默认设置索引名与字段名一致

--添加唯一索引
ALTER TABLE user6
ADD UNIQUE KEY(username);

ALTER TABLE tbl_name
ADD UNIQUE INDEX index_name(字段名称);
#设置索引名,mysql会采用此索引名

ALTER TABLE user6
ADD UNIQUE INDEX uni_email(email);

ALTER TABLE tbl_name
DROP KEY index_name;
#如果没有自定义索引名,用KEY删除

--删除唯一索引
ALTER TABLE user6
DROP KEY username;

ALTER TABLE tbl_name
DROP INDEX index_name;
#如果已经设置索引名,只能用INDEX删除

ALTER TABLE user6
DROP INDEX uni_email;

修改数据表名称

ALTER TABLE tbl_name
RENAME [TO/AS] new_tbl_name;

RENAME TABLE tbl_nameTO new_tbl_name;

--将user6改为user666
ALTER TABLE user6
RENAME TO user666;
--RENAME AS user666;这样也是可以的
--RENAME user666;这样也是可以的

--这样也是可有的,不过这里只能用TO
RENAME TABLE user6 TO user7;

重置INCREMENT

ALTER TABLE tbl_name AUTO_INCREMENT=1;

ALTER TABLE user AUTO_INCREMENT=1;