1、创建数据库
create database star;#star 是数据库名
2、选则特定数据库,创建表
USE star;
CREATE TABLE `star_sky`(
`id` int(11) NOT NULL AUTO_INCREMETN,
`star_name` varchar(255) DEFAULT NULL,
PRIMARY KEY(`id`)
)ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf;
解释:
- a、创建表,必须同时创建表的字段及相关设置;
- b、int(11),首先int类型,也就是整数类型,字段能存储的数据上限是2147483647(有符号型)和4294967295(无符号型),数据库里面存储的都是4个字节的长度。
- 此处(11),仅表示其显示宽度,例:int(5)UNSIGNED ZEROFILL【无符号且0填充】,当输入id值12,显示的是00012。如果只有int(5),当输入id值12,显示的是12。
- c、DEFAULT NULL,是指默认值是null,(NULL表示可以为任何值)在mysql中占有空间,也参与mysql的 字段比较运算,影响效率,所有针对索引要设置成NOT NULL;当然,一般函数会忽略null值的,如count()。
- d、设置成DEFAULT '',或者DEFAULT "",或者DEFAULT empty string,它们不占用空间。 也即是设置默认值是''或者""或者empty string。
- e、索引值设置成NOT NULL,表示字段不接受NULL值,但是可以接受空值,如''或者"",因为NULL会影响效率。此外`id` int(11) NOT NULL AUTO_INCREMETN,类型属性设置auto_increment,打了个补丁,即便插入null值,它会自动按序列填充整数。
- f、ENGINE=InnoDB,存储引擎设置成InnoDB,最大化效率。要想所有表都有应用这个引擎,“default- storage-engine=INNODB”加到/etc/mysql/my.cnf(位置可能不同)
3、添加/修改表中字段的注释
ALTER TABLE `star_sky` MODIFY COLUMN `id` int COMMET'主键';
语法1:ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 COMMENT' ';
modify关键字只能修改列的数据类型和注释等。
语法2:alter table 表名 change column 修改前字段名 修改后字段名 字段类型 comment
change关键字不仅可以修改列名,还可以修改列数据类型或者注释等;
语法3:alter table 表名 rename 表名2 add column 列名新加 类型 after 列名已存在;
重命名表名,在 列名已存在 之后追加一列 列名新加 ,并确定新加列的数据类型。
4、给整张表添加注释
ALTER TABLE `star_sky` COMMENT' ';
5、查看整张表的注释
show create table `star_sky`;
6、查看表字段的注释
show full columns from `star_sky`;
7、事实上,我们在创建表的时候可以添加注释,且可以直接在指定字段 设置为primary key
USE star;
CREATE TABLE `star_sky`(
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMETN COMMENT'主键',
`star_name` varchar(255) DEFAULT NULL,
)ENGINE=InnoDB COMMENT ='夜空' AUTO_INCREMENT=10 DEFAULT CHARSET=utf;
我们在此新建两张表,一张名为person,另一张为favorite_food表。
坑:当表名未用 ``符合标注是,需要和CREATE TABLE table_name ()隔开。
语法:insert into 表名
(字段1,字段2,字段3,,,,)
values(值1,值2,值3,,,,);
注意:对应字段值的类型要与事先定义的保持一致,如果不一直报错。
例:gender ENUM('M','F'),我们在性别字段添加了个约束,非M F的值非法。
insert into `person`
(`person_id`,`fname`,`lname`,`gender`,`birth_day`)
values(null,'jess','zen','M','1990-5-10');
语法:update 表名 set 字段1=值1,字段2=值2,,,,where 字段【一般主键】= 1;
注意:如果没有where 语句做选中,那么将改变整张表,对应自动的所有值。
update `person` set `street`='changxu',`city`='suzhou' where `perosn_id` =3;
a、删除行:语法:delete from 表名 where 列名=。。。;
注意:如果该行,被另一张表,作为外键约束,则不能删除,此种情况下,person表可以视为父表,另一张favorite food 可视为子表,子表同样约束与父表。
b、删除列 语法:alter table 表名 drop column 列名。
1、主键不唯一,例子:新加的语句,主键和已经存在重复。
2、不存在的外键,例子:favorite food 增加数据,涉及到的person id 不存在于person的person id中,报错。
3、列值不合法,例子:列 enum()约束,只能输入特定值。
4、无效的日期转化 例子:可以显示指定日期类型
update person set `birth_day` = string_to_date('DSC_21-1980','%b -%d-%y')
其中%b表示月的简写。