1.创建数据库
mysql> create DATABASE booktik
-> ;
Query OK, 1 row affected (0.02 sec)
2.创建表
mysql> use booktik
Database changed
mysql> create TABLE book(
-> id INT,
-> bookname VARCHAR(1024),
-> size INT);
Query OK, 0 rows affected (0.20 sec)
3.插入数据
mysql> insert into book
-> (id, bookname, size)
-> values
-> (1, "server", 100)
-> ;
Query OK, 1 row affected (0.06 sec)
4.查询数据
mysql> select * from book
-> ;
+------+----------+------+
| id | bookname | size |
+------+----------+------+
| 1 | server | 100 |
+------+----------+------+
1 row in set (0.05 sec)
alter add命令用来增加表的字段。
alter add命令格式:alter table 表名 add字段 类型 其他;
例如,在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0:
mysql> alter table MyClass add passtest int(4) default '0';
- 加索引
mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);
例子: mysql> alter table employee add index emp_name (name);
- 加主关键字的索引
mysql> alter table 表名 add primary key (字段名);
例子: mysql> alter table employee add primary key(id);
- 加唯一限制条件的索引
mysql> alter table 表名 add unique 索引名 (字段名);
例子: mysql> alter table employee add unique emp_name2(cardnumber);
- 删除某个索引
mysql> alter table 表名 drop index 索引名;
例子: mysql>alter table employee drop index emp_name;
- 增加字段
mysql> ALTER TABLE table_name ADD field_name field_type;
- 修改原字段名称及类型
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
- 删除字段
MySQL ALTER TABLE table_name DROP field_name;
- 修改字段
如果要修改字段的话就用这个:
ALTER TABLE 创建好的表名称 MODIFY COLUMN 创建好的表需要修改的字段 INT AUTO_INCREMENT
- 修改字段属性
mysql修改已存在的表增加ID属性为auto_increment自动增长
今天有需要将已经存在表设置自动增长属性
alter table customers change id id int not null auto_increment primary key;
//添加字段并设置主键
ALTER TABLE tabelname ADD new_field_id int(5) unsigned default 0 not null auto_increment ,ADD primary key (new_field_id);
查询数据库里所有表名和字段名的语句
MySQL库表的操作命令
| 功能 | 方法 | 说明 |
|---|---|---|
| 显示当前用户名 | select user(); | |
| 显示数据库列表 | show databases; | |
| 进入 mysql库 | use mysql; | |
| 显示库中的数据表 | show tables; | |
| 显示数据表的结构 | describe 表名; | |
| 建库 | CREATE { DATABASE | SCHEMA } [IF NOT EXIST ] db_name [DEFAULT] CHARACTER SET [=] charset_name | 大括号必须有一个,中括号可不写,简写例子:create database 库名; |
| 进入库后建表 | use 库名; | |
| 建表 | create table 表名 (字段设定列表); | 需要先use 库名,进入指定库才可以建表 |
| 删除库 | drop database 库名; | |
| 删除表 | drop table 表名; | |
| 记录清空表记录的内容 | delete from 表名; | |
| 显示表中记录的内容 | select * from 表名 ; |
SQL 查询所有表名:
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
select table_name from information_schema.tables where table_schema='database_name' and table_type='base table'
SELECT * FROM INFORMATION_SCHEMA.TABLES
查询表的所有字段名:
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(' 表名' )
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT * FROM INFORMATION_SCHEMA.VIEWS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
Mysql表字段的操作命令
| 功能 | 规范 | 例子 |
|---|---|---|
| 增加表的字段 | alter table 表名 add字段 类型 其他; | alter table MyClass add passtest int(4) default '0';#在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0: |
| 加索引 | alter table 表名 add index 索引名 (字段名1[,字段名2 …]); | alter table employee add index emp_name (name); |
| 加主关键字的索引 | alter table 表名 add primary key (字段名); | alter table employee add primary key(id);#例子 |
| 加唯一限制条件的索引 | alter table 表名 add unique 索引名 (字段名);#加唯一索引 | alter table employee add unique emp_name2(cardnumber); |
| 删除某个索引 | alter table 表名 drop index 索引名; | alter table employee drop index emp_name; |
| 增加字段 | ALTER TABLE table_name ADD field_name field_type; | |
| 修改原字段名称及类型 | ALTER TABLE table_name CHANGE old_field_name new_field_name field_type; | |
| 删除字段 | MySQL ALTER TABLE table_name DROP field_name; | |
| 修改字段 | ALTER TABLE 表名称 MODIFY COLUMN 需要修改的字段 INT AUTO_INCREMENT | 表可字段要存在才可以 |
| 修改字段属性 | alter table customers change id id int not null auto_increment primary key; | mysql修改已存在的表增加ID属性为auto_increment自动增长 |
| 添加字段并设置主键 | ALTER TABLE tabelname ADD new_field_id int(5) unsigned default 0 not null auto_increment ,ADD primary key (new_field_id); |
字段类型限制说明
| 字段类型 | 中文说明 | 限制条件 | 其它说明 | |
|---|---|---|---|---|
| CHAR | 固定长度字符串 | 最大长度2000 bytes | ||
| VARCHAR2 | 可变长度的字符串 | 最大长度4000 bytes | 可做索引的最大长度749 | |
| NCHAR | 根据字符集而定的固定长度字符串 | 最大长度2000 bytes | ||
| NVARCHAR2 | 根据字符集而定的可变长度字符串 | 最大长度4000 bytes | DATE | |
| 日期(日- 月- 年) | DD-MM-YY (HH-MI-SS ) | 经过严格测试,无千虫问题 | ||
| LONG | 超长字符串 | 最大长度 2G (231 -1 ) | 足够存储大部头著作 | |
| RAW | 固定长度的二进制数据 | 最大长度2000 bytes | 可存放多媒体图象声音等 | |
| LONG RAW | 可变长度的二进制数据 | 最大长度 2G | 同上 | |
| BLOB | 二进制数据 | 最大长度 4G | ||
| CLOB | 字符数据 | 最大长度 4G | ||
| NCLOB | 根据字符集而定的字符数据 | 最大长度 4G | ||
| BFILE | 存放在数据库外的二进制数据 | 最大长度 4G | ||
| ROWID | 数据表中记录的唯一行号 | 10 bytes | ********.****.**** 格式,* 为0 或1 | |
| NROWID | 二进制数据表中记录的唯一行号 | 最大长度4000 bytes | ||
| NUMBER(P,S) | 数字类型 | P 为整数位,S 为小数位 | ||
| DECIMAL(P,S) | 数字类型 | P 为整数位,S 为小数位 | ||
| INTEGER | 整数类型 | 小的整数 | ||
| FLOAT | 浮点数类型 | |||
| NUMBER(38) | 双精度 | |||
| REAL | 实数类型 | |||
| NUMBER(63) | 精度更高 |