在《 MySql数据表添加字段》一节我们介绍了 MySQL 添加数据表字段的 3 种方式,本节主要介绍 MySQL 修改和删除数据表字段的方法。
修改字段名称
MySQL 中修改表字段名的语法规则如下:
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
其中:
例 1
使用 ALTER TABLE 修改表 tb_emp1 的结构,将 col1 字段名称改为 col3,同时将数据类型变为 CHAR(30),SQL 语句和运行结果如下所示。
mysql> ALTER TABLE tb_emp1-> CHANGE col1 col3 CHAR(30);Query OK, 0 rows affected (0.76 sec)Records: 0Duplicates: 0Warnings: 0mysql> DESC tb_emp1;+--------+-------------+------+-----+---------+-------+| Field| Type| Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| col3| char(30)| YES|| NULL||| id| int(11)| YES|| NULL||| name| varchar(30) | YES|| NULL||| deptId | int(11)| YES|| NULL||| salary | float| YES|| NULL||+--------+-------------+------+-----+---------+-------+5 rows in set (0.01 sec)
CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。
修改字段数据类型
修改字段的数据类型就是把字段的数据类型转换成另一种数据类型。在 MySQL 中修改字段数据类型的语法规则如下:
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
其中:
例 2
使用 ALTER TABLE 修改表 tb_emp1 的结构,将 name 字段的数据类型由 VARCHAR(22) 修改成 VARCHAR(30),SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp1-> MODIFY name VARCHAR(30);Query OK, 0 rows affected (0.15 sec)Records: 0Duplicates: 0Warnings: 0mysql> DESC tb_emp1;+--------+-------------+------+-----+---------+-------+| Field| Type| Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| col1| int(11)| YES|| NULL||| id| int(11)| YES|| NULL||| name| varchar(30) | YES|| NULL||| col2| int(11)| YES|| NULL||| deptId | int(11)| YES|| NULL||| salary | float| YES|| NULL||+--------+-------------+------+-----+---------+-------+6 rows in set (0.00 sec)
语句执行后,发现表 tb_emp1 中 name 字段的数据类型已经修改成 VARCHAR(30),修改成功。
删除字段
删除字段是将数据表中的某个字段从表中移除,语法格式如下:
ALTER TABLE <表名> DROP <字段名>;
其中,“字段名”指需要从表中删除的字段的名称。
例 3
使用 ALTER TABLE 修改表 tb_emp1 的结构,删除 col2 字段,SQL 语句和运行结果如下所示。
mysql> ALTER TABLE tb_emp1-> DROP col2;Query OK, 0 rows affected (0.53 sec)Records: 0Duplicates: 0Warnings: 0mysql> DESC tb_emp1;+--------+-------------+------+-----+---------+-------+| Field| Type| Null | Key | Default | Extra |+--------+-------------+------+-----+---------+-------+| col1| int(11)| YES|| NULL||| id| int(11)| YES|| NULL||| name| varchar(30) | YES|| NULL||| deptId | int(11)| YES|| NULL||| salary | float| YES|| NULL||+--------+-------------+------+-----+---------+-------+5 rows in set (0.00 sec)
编写java程序
终于搞定,我这里用的是mySqlpublic class JDBCTest { public static void main(String[] args) throws Exception {Connection conn = null;PreparedStatement pstmt = null;String red = ;String sql = ;String url = jdbc:mysql://127.0.0.1:3306/mysql?useUnicode=true&characterEncoding=utf-8;String user = root;String password = ;String driver = ;String sql_0[] = null;ResultSet rs = null;try { (driver); Bufferedreader br = new BufferedReader(new inputStreamReader()); conn = (url, user, password); (false); do {(请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开);red = ();sql_0 = (,);if (((sql_0[0]))) { if (sql_ < 2) {sql = select * from user_shen ; } else {sql = select * from user_shen where id = + sql_0[1]+ ; } pstmt = (sql); rs = (); // () while (()) {(ID: + (id)+ Name: + (name) + Age: + (age)); }} else if (((sql_0[0]))) { sql = Insert into user_shen(id,name,age) values(?,?,?); pstmt = (sql); (1, sql_0[1]); (2, sql_0[2]); (3, new Integer(sql_0[3])); (); (); ();} else if (((sql_0[0]))) { sql = upDate user_shen set name = ?, age = ? where id = ?; pstmt = (sql); (1, sql_0[2]); (2, new Integer(sql_0[3])); (3, sql_0[1]); (); (); ();} else if (((sql_0[0]))) { sql = delete from user_shen where id = + sql_0[1] + ; pstmt = (sql); (); (); ();} } while (!((sql_0[0])));} catch (Exception e) { ();} finally { (); ();} }}结果:请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开1ID: 1 Name: veriie Age: 32ID: 2 Name: vieri1 Age: 22ID: 3 Name: vieri4 Age: 34请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开1,2ID: 2 Name: vieri1 Age: 22请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开2,4,vieri5,60请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开1ID: 1 Name: veriie Age: 32ID: 2 Name: vieri1 Age: 22ID: 3 Name: vieri4 Age: 34ID: 4 Name: vieri5 Age: 60请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开3,2,vieri88,90请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开1ID: 1 Name: veriie Age: 32ID: 2 Name: vieri88 Age: 90ID: 3 Name: vieri4 Age: 34ID: 4 Name: vieri5 Age: 60请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开4,3请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开1ID: 1 Name: veriie Age: 32ID: 2 Name: vieri88 Age: 90ID: 4 Name: vieri5 Age: 60请按一下顺序输入:操作类型,ID主键,姓名,年龄,以逗号隔开0退出
sql 防注入代码
<%
dimsql_injdata
SQL_injdata=|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare
SQL_inj=split(SQL_Injdata,|)
<>Then
ForEachSQL_
ForSQL_Data=0ToUbound(SQL_inj)
ifinstr((SQL_Get),Sql_Inj(Sql_DATA))>0Then
endif
next
Next
EndIf
<>Then
ForEachSql_
ForSQL_Data=0ToUbound(SQL_inj)
ifinstr((Sql_Post),Sql_Inj(Sql_DATA))>0Then
endif
next
next
endif
%>
写在数据库连接文件中
数据库系统存储过程sp_rename ,sp_helptext 的功能各是什么吗?
sp_rename:更改当前数据库中用户创建对象(如表、视图、列、存储过程、触发器、默认值、数据库、对象或规则或用户定义数据类型)的名称sp_helptext 在多个行中显示用来创建对象的文本PS大玮,给我分吧...
发表评论