【数据库】mysql学习笔记之一:表的创建和操作


第一:创建表

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  ()隔开。

1、插入数据

语法: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');
2、更新数据

语法:update 表名 set 字段1=值1,字段2=值2,,,,where 字段【一般主键】= 1;

注意:如果没有where 语句做选中,那么将改变整张表,对应自动的所有值。

update `person` set `street`='changxu',`city`='suzhou' where `perosn_id` =3;
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表示月的简写。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值