ITOO5.0中用到了MySQL数据库,对于从来都没有接触过MySQL的我是一个挑战,也是一个学习的机会。因为了有了sql server的基础,觉得MySQL应该也差不多,但是从中也出了一些问题,建表的sql语句有错,建不上表,添加不了外键,添加不了数据等等一系列问题。下面就总结一下这段时间对MySQL数据库的经验。
在数据库系统系统中创建名为mytest的数据库
<span style="font-size:18px;">create DATABASE mytest;</span>
<span style="font-size:18px;">use mysql;</span>
检验数据库库系统中是否存在名为mytest的数据库
<span style="font-size:18px;">show databases;</span>
语法: drop dababase 数据库名;执行语句后,再次检查mytest数据库已被删除。
<span style="font-size:18px;">drop dadabase mytest;</span>
语法:show engines;
在对数据库操作的时候有些问题是因为必要的存储引擎需要打开,如果创建带有外键的表,或给表添加外键的时候,innodb引擎需要打开。
创建表的时候需要注意,字段的命名如果和数据库里的数据类型一样,需要加引号,如果添加外键的话,需要用到innodb存储引擎。
语法:
create table 表名(字段名 数据库类型 [完整性约束条件],
……
字段名 数据类型);
例:创建ta_roleresource 表,主键为RoleResourceId,外键为RoleId和ResourceId,在删除和更新时外键起Cascade(级联)约束。
<span style="font-size:18px;">CREATE TABLE `ta_roleresource` ( `RoleResourceId` varchar(64) NOT NULL, `RoleId` varchar(64) NOT NULL, `ResourceId` varchar(64) NOT NULL, `TimeSpan` datetime DEFAULT NULL, `IsDeleted` varchar(2) DEFAULT NULL, PRIMARY KEY (`RoleResourceId`), KEY `fkrole` (`RoleId`), KEY `ffuserg` (`ResourceId`), CONSTRAINT `ffuserg` FOREIGN KEY (`ResourceId`) REFERENCES `ta_resource` (`ResourceId`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `fkrole` FOREIGN KEY (`RoleId`) REFERENCES `ta_role` (`RoleId`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8</span>
语法: describe 表名;
例:查看ta_roleresource的表结构
<span style="font-size:18px;">describe ta_roleresource;</span>
语法:show create table 表名;
例;查看 ta_roleresource的详细结构:
<span style="font-size:18px;">show create table ta_roleresource;</span>
语法:alter table 旧表名 rename 新表名;
例;修改ta_roleresource的表名为ta_user
<span style="font-size:18px;">alter table ta_roleresource rename ta_user;</span>
查询修改后的表结构
语法:alter table 表名 modify 字段名 数据类型;(数据类型是字段修改后的新数据类型)
例:修改ta_roleresource中RoleResourceId 的数据类型为char(64);
<span style="font-size:18px;">alter table ta_roleresource modify RoleResourceId char(64);</span>
再次查询表结构
语法:alter table 表名 change 旧字段名 新字段名 数据类型;
例:修改ta_roleresource RoleResourceId 的名称为rrId 数据类型为varchar(64)
<span style="font-size:18px;">alter table ta_roleresource change RoleResourceId rrId varchar(64);</span>
成功执行语句
再次查询执行成功够的ta_roleresource结构
语法: alter table 表名 add 新增字段名 数据类型 [完整性约束条件] [first | after 字段名];中括号括起来的是根据需求来添加的条件,第一个是完整性约束条件,第二个中括号是表名字段的位置,
例:在ta_roleresource中的rrId 字段后面添加testId字段,数据类型为varchar(64),不能为空;
<span style="font-size:18px;">alter table ta_roleresource add restId varchar(64) not null after rrId;</span>
再次查询ta_roleresource的表结构
语法:alter table 表名 drop 字段名;
例;删除ta_roleresource中的restId 字段
<span style="font-size:18px;">alter table ta_roleresource drop testId;</span>
再次查询ta_roleresource的表结构;
一路实践过来,发现这些操作也是有很多规律性的东西,MySQL也是一个门语言,它也是有一定的语法的,就像我们平时说话一样,主谓宾是主导,怎么变也离不开这个定律。