数据库相关概念
**2.语句以;
结尾 **
3.数据库名或表名通常用反引号`` 引出,用于区别数据库中的关键字
mysql -uroot -p******;//登陆MySQL -u后为用户名,这里以root为例 ******为用户密码
show databases;//查看所有数据库
use database_name;//选择数据库
SELECT * FROM database_name.table_name;//查询数据库下的表单信息
show tables;//显示数据库mysql中所有的表
flush privileges;//刷新数据库
drop database database_name;//删除数据库
exit;//退出MySQL
#在询问窗口输入(MySQL注释用#声明)
#创建数据库
CREATE DATABASE `database_name`;
#创建表
CREATE TABLE IF NOT EXISTS `table_name`(
#创建列字段
`字段名1` 列类型 数据字段属性 COMMENT '字段1的注释',
......
`字段名n` 列类型 数据字段属性 COMMENT '字段n的注释',
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
#INSERT INTO命令
INSERT INTO Table_name(字段1,字段2,字段3,...) VALUES('值1','值2','值3')
# 添加一行数据时'字段1,字段2...'该部分可省略 , 但添加的值务必与表结构,数据列,顺序相对应,且数量一致.
#示例
#插入单个数据,主键不自增
INSERT INTO height(`studentNo`,`height`) VALUES (1000,178);
#可以省略字段名
INSERT INTO height VALUES (1000,178);
#插入多个数据,主键不自增
INSERT INTO height(`studentNo`,`height`) VALUES (1001,188),(1002,170),(1003,178),(1004,158);
#插入单个数据,主键自增
INSERT INTO height (`tall`) VALUES (178);
#插入多个数据,主键自增
INSERT INTO height (`tall`) VALUES (178),(180),(168),(190);
# DROP TABLE [IF EXISTS] 表名
# IF EXISTS判断是否存在该数据表,如果删除不存在的数据表会抛出错误
# DELETE FROM tabel_name WHERE condition;
# condition为筛选条件,如不指定则删除该表的所有列数据
# TRUNCATE [TABLE] table_name;
# 用于完全清空数据表,但表结构,索引,约束等不变
#举例
#使用delete删除height表中studentNo=1004的数据,其中studentNo属性为自增
DELETE FROM height WHERE studentNo=1004;
#删除后,使用INSERT添加数据
INSERT INTO height(`height`) VALUES (178);
#执行结果:添加的该条数据的studentNo不再是1004,而是1005
#结论:使用delete删除数据,自增当前值依然从原来基础上进行,会记录日志.
#使用truncate删除height数据表
TRUNCATE TABLE height;
#删除后,使用INSERT添加数据
INSERT INTO height(`height`) VALUES (178);
#执行结果:添加的该条数据的studentNo不再是1004,而是1
#结论:使用truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.
#修改表名 :ALTER TABLE 旧表名 RENAME AS 新表名
#添加字段 :ALTER TABLE 表名 ADD字段名 列属性[属性]
#修改字段 :ALTER TABLE 表名 MODIFY 字段名 列类型[属性] (适用于不改变列名只改变列属性的情况)
# ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
#删除字段 :ALTER TABLE 表名 DROP 字段名
#示例
#修改列字段studenNo的属性,不修改列字段名称
ALTER TABLE height MODIFY `studentNo` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号';
#修改列字段studenNo的属性,修改列字段名称
ALTER TABLE height CHANGE `height` `tall` INT(3) NOT NULL COMMENT '学号';
#修改数据表中某一行的某个列值
# UPDATE table_name SET column_name=value [,column_name2=value2,...] WHERE condition;
#总结:column_name 为要更改的数据列,value 为修改后的数据,可以为变量,具体指表达式或者嵌套的SELECT结果。condition 为筛选条件,如不指定则修改该表的所有列数据。
#示例
#修改studentNo=1002的学生的身高
UPDATE height SET `height`=190 WHERE studentNo=1002;
# 创建外键的方式一:创建从表的同时创建外键
# 示例
# 先创建要被外键关联的主表
CREATE TABLE `grade` (
`gradeid` INT(2) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '年级id',
`grade` varchar(20) NOT NULL COMMENT '年级'
) ENGINE=INNODB DEFAULT CHARSET=utf8;
# 再创建从表
CREATE TABLE `student` (
`studentNo` INT(4) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '学号'
`studentname` VARCHAR(20) NOT NULL DEFAULT '匿名' COMMENT '姓名',
`sex` TINYINT(1) DEFAULT '1' COMMENT '性别',
`gradeid` INT(10) DEFAULT NULL COMMENT '年级',
KEY `FK_gradeid` (`gradeid`),
CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`)
) ENGINE=INNODB DEFAULT CHARSET=utf8
# 创建外键的方式二:数据表创建完后,修改从表属性,添加外键,关联主表
ALTER TABLE student
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY (`gradeid`) REFERENCES `grade` (`gradeid`);
#关联外键之后,就可以进行联合查询
SELECT a.StudentNo,a.StudentName,b.grade
FROM student AS a,grade AS b
WHERE a.gradeid=b.gradeid;
# 删除具有主外键关系的表时 , 要先删从表 , 后删主表
# 示例
ALTER TABLE student DROP FOREIGN KEY FK_studentNo;
ALTER TABLE student DROP INDEX FK_gradeid;