一:MySQL支持的数据类型
1:CHAR和TEXT :分别表示定长的和可变长的串。
CHAR:1-255个字符的定长串,它的长度必须在创建时指定。
TEXT:最大长度为64K的文本
VARCHAR:长度为0-255之间的可变字符串。
//MySQL处理不定长的串比处理定长的串的效率低的多。
2:数值,取值范围越大,需要的字节数越多,除过BIT和BOOLEAN之外,所有的都支持有符号和无符号两种类型。
BIT:位字段,1-64位。
BOOLEAN:bool,0或者1。
TINYINT:相当于char。
DECIMAL:精度可变的浮点值。货币可以使用DECIMAL。
SMALLINT:相当于short。
INT:普通的INT。
FLOAT:单精度浮点值。
DOUBLE:双精度浮点值。
BIGINT:整数值,范围非常大。
3:日期和时间
DATE:1000-01-01~9999-12-31,格式YYYY-MM-DD
TIME:格式HH:MM:SS
DATETIME: DATE和TIME的结合。
YEAR:用两位数表示,范围为1901~2155
4:二进制数据类型:存储信息,图像。
BLOB:BLOB最大长度为64KB
TINYBLOB:255个字节
MEDIUMBLOB:16M
LONGBLOB:4G
二:创建,删除,更新,插入。
//创建表
CREATE TABLE student //指定表名为student
(
stu_id int NOT NULL AUTO_INCREMENT PRIMARY KEY, //stu_id类型为int,并且AUTO_INCREMENT指定本列每当增加一行时自动增量。
stu_name CHAR(30) NOT NULL, //stu_name 不能为NULL,NULL不等于空串。
stu_phoneNum CHAR(30) NULL, DEFAULT '110', //NULL表明stu_phoneNum允许为空值。并且设置默认电话号码为'110'
stu_age int NOT NULL check(stu_age BETWEEN 18 AND 25), //但是好像check在MySQL中不支持
stu_courseID int REFERENCES Course(stu_courseID), //定义外键,使得student.stu_courseID与Course表中的stu_courseID一样。
stu_time datetime DEFAULT now() //设置stu_time的默认值为当前的时间。
);
create table test(a int identity(1,1),b int) //identity(1,1) 表示默认从1开始每次增加1
//更新表
ALTER TABLE student ADD stu_address CHAR(20) NOT NULL;
//这条语句可以给vendors增加一个stu_address的列,但是注意必须确定其数据类型。
ALTER TABLE student MODIFY COLUMN stu_id int NOT NULL AUTO_INCREMENT;
//如果没有给stu_id指定AUTO_INCREMENT,可以用MODIFY指定AUTO_INCREMENT,但是注意需要给stu_id 指定类型
ALTER TABLE student MODIFY COLUMN stu_time timestamp DEFAULT now(); //更新stu_time的默认值为now()。
ALTER TABLE student ALTER COLUMN stu_id SET DEFAULT 0; //重新设置stu_id默认值为0
ALTER TABLE student MODIFY COLUMN stu_id int DEFAULT 0; //和上面的语句效果是一样的。
UPDATE student SET stu_id=1 WHERE stu_name='yang'; //只更新名字为yang的一行,将它的stu_id设为1
UPDATE student SET stu_id=1; //直接将所有的行更新。
//删除表和数据库,删除一列
DROP DATABASE database; //删除数据库databse
DROP TABLE student; //删除表直接用DROP TABLE
ALTER TABLE table DROP COLUMN stu_id; //删除掉表table中的stu_id列
DELETE FROM student WHERE stu_id=1; //删除stu_id为1的那一列
//重命名
RENAME TABLE stduent TO stduent1 //将student命名为student1