mysql的基本操作(1)

创建数据库

CREATE DATABASE `school`

创建表

CREATE TABLE `student` ( #表名字
  `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号', #列的元素的细节,列自增
  `name` varchar(4) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `pwd` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` varchar(2) NOT NULL DEFAULT '女' COMMENT '性别',
  `birthday` datetime DEFAULT NULL COMMENT '出生日期',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  `age` int(3) NOT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)#设置主键
) ENGINE=InnoDB DEFAULT CHARSET=utf8 #设置数据库引擎和数据库的编码

看查表的结构

DESC `student`

ALTER

修改表的名字

ALTER TABLE `student` RENAME `student1`

添加表的列

ALTER TABLE `student` ADD `aoligei` INT(10)

修改表的列的数据类型

ALTER TABLE `student` MODIFY `aoligei` VARCHAR(11)

修改表的列名

ALTER TABLE `student` CHANGE `aoligei` `address` VARCHAR(20)

删除表的字段

ALTER TABLE `student` DROP `address`

设置外键

什么是外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字。

这也许难懂,我们换一种方式解释:当你其中一个表需要引用到其他的表中的数据时,就可以引入外键来作为对其他表的引用。

我们一般在数据库中创建的外键叫做物理外键,我们平常在工作中不会使用物理外键,而是使用逻辑外键,这样在对数据库的管理中又方便。

我们将第一个创建的student表删除

drop table `student`

创建一个grade表

CREATE table `grade`(
 `gradeid` INT(10) NOT NULL auto_increment COMMENT '年纪id',
 `gradename` varchar(50) NOT NULL COMMENT '年纪名称',
 PRIMARY KEY(`gradeid`)
)ENGINE = INNODB DEFAULT CHARACTER SET utf8

创建一个有把grade表中gradeid作为外键的表

CREATE TABLE `student` (
  `id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` varchar(4) NOT NULL DEFAULT '匿名' COMMENT '姓名',
  `pwd` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',
  `sex` varchar(2) NOT NULL DEFAULT '女' COMMENT '性别',
  `birthday` datetime DEFAULT NULL COMMENT '出生日期',
  `gradeid` INT(10) NOT NULL COMMENT '学生年级',
  `email` varchar(10) DEFAULT NULL COMMENT '邮箱',
  `age` INT(3) NOT NULL DEFAULT '12' COMMENT '年龄',
  PRIMARY KEY (`id`),
  KEY `FK_gradeid` (`gradeid`),#设置外键
  CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)#设置引用
) ENGINE=InnoDB DEFAULT CHARACTER SET utf8#创建表成功之后添加外键约束

如果创建表的时候没有外键关系,想要添加外键

ALTER TABLE `student`ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`)
#ALTER TABLE 表名 ADD CONSTRAINT 约束名	FOREIGN KEY(作为外键的列) REFERENCES 那个表(哪个字段

以上的操作都为物理外键(不推荐使用,避免数据库太多造成困扰,必须要先把引用的表删除,再删除被引用的表

dml语言

dml就是增删查改

insert

insert语句的结构 insert into 表名([字段名1,字段2,字段3])VALUE('值1','值2','值3')

#插入语句 
    #insert into 表明([字段名1,字段2,字段3])VALUE('值1','值2','值3')
     INSERT into `grade`(`gradename`) value ('大四')  #对一个表插入一个属性
     INSERT INTO `student`(`name`,`sex`,`age`)VALUES ('心机','男',15)
     INSERT INTO `student`(`name`,`sex`,`age`)   #对一个表同时插入多个属性
     VALUES ('真嗣','男',14) , ('明日香','女',14)

每次只能对一个表插入一个或者多个数据

update

UPDATE的问题 修改谁 (条件) set原来的值 = 新值
update语句的结构 UPDATE 表名 set colnum_name = value WHERE [条件]

#UPDATE的问题 修改谁 (条件) set原来的值 = 新值
#UPDATE 表明 set colnum_name = value WHERE [条件]
UPDATE `student` SET `name` = '谁呢' WHERE `name`= '奥里给'
UPDATE `student` SET `name` = '奥里給',`email` = '114514@163.com' WHERE name = '谁呢'
UPDATE `student` SET `name` = '114' WHERE id BETWEEN 1 AND 5
UPDATE `student` SET `name` = '155' WHERE id BETWEEN 1 AND 6 AND `age` = 12

#colnum_name 是数据库的列,尽量带上``
#条件,筛选的条件,如果没有指定则会修改所有的列
#value,是一个具体的值,也可以是一个变量
UPDATE `student` SET `birthday` = CURRENT_TIME WHERE `name` = '155' #其中CURRENT_TIME是一个变量
#多个设置的属性之间,使用英文逗号隔开

delete和TRUNCATE

delete和truncate的相同点:都可以删除数据
delete和truncate的不同点:TRUNCATE 重新设置自增列 计数器归零,TRUNCATE 不会影响事务

DELETE `student` #删除整个表的数据
truncate `student` #删除整个表的数据
delete `student` where id=‘115’ #删除id为115的数据