Mysql----浅入浅出之插入删除等操作

一、数据插入 INSERT

eg:INSERT INTO student VALUES(NULL, 'lulu', 24, 'chaoyang beijing');

这句指令将会在student表中插入一行新数据。这种写法必须保证每个值和表中的列顺序一一对应,如果不想指定值,可以写NULL,但不能省略。例如,表定义时可为null的列或指定自增的列。

虽然这种写法很简单,但是并不安全。因为它要求数据的顺序已经完整性,在表结构有变更时甚至普通应用时都是不安全的。更安全的用法如下。

eg:INSERT INTO student(sid, name, age, address)  VALUES(NULL, 'lulu', 24, 'chaoyang beijing');

这句指令中,因为提供了列名,VALUES中的数据只需要与前面的列明相对应即可,不必再受到完整性和表中列顺序的限制。通常情况下,推荐这种用法,比较安全。注意,如果想省略某列时,必须满足一定条件:列定义允许为NULL,或者,列定义时给出了默认值(包括自增列)。

同时向表中插入多个行:

eg:INSERT INTO student(name, age, address) values('lulu', 24, 'chaoyang beijing'),('ss', 25, 'men beijing');

插入检索出来的结果:

eg:INSERT INTO student(name, age, address) SELECT name, a, add FROM school;

上一句中,将school中所有数据导入到了student中。从中额可以看出SELECT与INSERT的列名是无关的,只要对应位置的列的类型通用即可。

二、数据更新 UPDATE

1.使用UPDATE时,除非特殊情况,否则一定要加WHERE子句,否则将更新表中的所有行。

eg:UPDATE student SET age = 23 WHERE sid = 2;

这一句指令将student中,sid为2的行的age设置了新的值23.如果没有WHERE子句,将更新student中所有行的age为23。

2.可以同时更新多个行的数据,如下。

eg:UPDATE student SET age = 23, name = 'lili' WHERE sid = 2;

为删除某数据中指定列的值,可以SET为NULL。

3.可以把SELECT的结果作为新值UPDATE给指定列,但是这里要注意。在SqlServer中可以简单的这样写:

eg:update student SET student.name = (selcet name from school) WHERE student.sid = scholl.sid;

但是在Mysql中却不行,必须用内联结:

eg:update student INNER JOIN (SELECT * from school WHERE sid > 1) as sc ON student.sid = sc.sid SET student.name = sc.name;

4.可以把SELECT的结果作为UPDATE指令中WHERE子句的条件:

eg:UPDATE student SET name = 'test' WHERE sid IN(SELECT sid from scholl);

三、删除数据 DELETE

使用DELETE时,除非特殊情况,否则一定要加WHERE子句,否则将删除表中的所有行。

eg:DELETE FROM student WHERE sid = 1;

四、创建表 CREATE TABLE

eg:CREATE TABLE student(

sid int NOT NULL AUTO_INCREMENT,

name char(20) NOT NULL,

age int NULL,

PRIMARY KEY(sid));

上例看出,每列列名后面是列的数据类型。

AUTO_INCREMENT是自增标示,当插入数据时,如果没指定此列的值,Mysql会自定填充一个比上一次+1的值。如果某次插入中指定了自增列的一个值,那下次自动填充时,将从上一次的指定值开始+1.每个表只允许一个AUTO_CREMENT的列,切该列必须被索引,如指定为主键。自增列是可以指定初始值的,AUTO_INCREMENT = 100, 则从100开始自增。(这里要注意的是,某些引擎,如Innodb,自增值是存在内存里的而不是磁盘中,每次在数据库启动时,会找到自增列最大值,存在内存备用。问题来了,如果刚创建的一张表,并没有插入数据,但是数据库在此时重启了。那Mysql在找最大值时,是找不到我们设置的初始值的,那么又从1开始了。解决这个问题的办法,可以用创建表后插入一条脏数据来解决。)

PRIMARY KEY(列名)指出了哪个列为主键,指定单个列时,列的值必须唯一;指定多个列时,列的值的组合必须唯一。

NOT NULL指定这一列不能为空。NULL为默认的选择,即没有指定时,列的值可以为空。

DEFAULT指定某列的默认值,既没有指定值时的自动填充内容。

五、更新表 ALTER TABLE 

eg: ALTER TABLE student ADD sex CHAR(1);

eg: ALTER TABLE student DROP COLUMN sex;

eg: ALTER TABLE schoolADD CONSTRAINT stu_sch FOREIGN KEY (sid) REFRENCES student(sid);

六、删除表 DROP TABLE

eg:DROP TABLE student;

七、重命名表 RENAME TALBE

eg:RENAME TABLE student TO students;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值