数据库&表结构
一、数据库操作
show databases; //列出数据库
use database_name //使用database_name数据库
create database data_name //创建名为data_name的数据库
drop database data_name //删除一个名为data_name的数据库
二.表结构操作
1.show tables //列出所有表
2.创建一个名为regist的新表
create table regist(id int(10) not null auto_increment primary key,name varchar(40),pwd varchar(40)) ;
3.drop table tab_name 删除名为tab_name的数据表
4.describe tab_name //显示名为tab_name的表的数据结构
5.show columns from tab_name //同上
6.删除表内容:删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心。但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的表来重新创建也是常有的事情;另外在测试的时候,也有需要重新创建数据库的所有表。
delete from tab_name //将表tab_name中的记录清空
或 TRUNCATE table_name;
如果没外键引用直接删除就可以了。
说明:如果有外键,会报错,因此在删除这个表(父表)之前必须先删除具有外键的表(子表)。也就是说,删除表的过程需要和创建表的过程一致。
但是这往往不可接受,一方面如果表太多了,手动排序有点不可接受;另一方面,现在还没有自动的工具对进行排序(其实也不是不能实现)。因此,MySQL中提供了一个变量FOREIGN_KEY_CHECKS来设置是否在必要的时候检查外键约束。一般比较推荐这样做:
首先,自动生成所有的DROP语句,将其中的MyDatabaseName替换成你的数据库名称:
SELECT concat('DROP TABLE IF EXISTS ', table_name, ';')
FROM information_schema.tables
WHERE table_schema = 'MyDatabaseName';
然后,在生成的代码前后添加下面设置FOREIGN_KEY_CHECKS变量的语句:
SET FOREIGN_KEY_CHECKS = 0
-- DROP语句
SET FOREIGN_KEY_CHECKS = 1;
7.显示表tab_name中的记录
select * from tab_name
三.修改表结构
1.更改表得的定义把某个栏位设为主键。
ALTER TABLE tab_name ADD PRIMARY KEY (col_name)
2.把主键的定义删除
ALTER TABLE tab_name DROP PRIMARY KEY (sid)
3.在tab_name表中增加一个名为col_name的字段且类型为varchar(20)
alter table tab_name add col_name varchar(20);
4.在tab_name中将col_name字段删除
alter table tab_name drop col_name
5.修改字段属性,注若加上not null则要求原字段下没有数据
alter table tab_name modify col_name varchar(40) not null
//SQL Server200下的写法是:Alter Table table_name Alter Column col_name varchar(30) not null;
6.如何修改表名:以下两种我是第二种可以
alter table new_tab_name rename to new_name
7.修改字段名
alter table 表名称 change 旧字段名称 新字段名称 新字段的类型 [是否允许非空];
alter table 表名称 modify 字段名称 字段类型 [是否允许非空];
例:alter table studentexam change transactor newfiled varchar(15);
alter table tab_name change old_col new_col varchar(40); //必须为当前字段指定数据类型等属性,否则不能修改
8.相当于复制表结构:
create table new_tab_name like 旧表名 //用一个已存在的表来建新表,但不包含旧表的数据
9.删除表
DROP table_name;
DROP TABLE IF EXISTS table_name;