1.查看mysql数据库版本
mysql --version
2.登录mysql
MySQL -u root -p
3.查看mysql数据库
SHOW DATABASES;
4.选择数据库
use 数据库名;
5.查看表
show tables;
6.新建数据库
CREATE NEW_DATABASE_NAME;
7.新建表,以学生表为例
CREATE TABLE student(
id INT PRIMARY KEY, ##PRIMARY KEY能唯一表示每一笔数据的属性。也就是说id的数据不能出现重复。
name VARCHAR(20),
major VARCHAR(20), score INT
);
##PRIMARY KEY的第二种写法:
student(
`id` INT
`name` VARCHAR(20),
`major` VARCHAR(20),
`score` INT,
PRIMARY KEY(`id`)
);
8.插入数据(INSERT INTO)
INSERT INTO `student` VALUES(1,'小白','英语',90); #按顺序插入数据
INSERT INTO `student`(`name`,`major`,`id`,`score`) VALUES(`小红`,`数学`,2,89);#自定义插入顺序。
INSERT INTO `student`(`major`,`id`,`score`) VALUES(`语文`,`3`80);#这样子写的话由于没有定义name,因此数据表中name的值为NULL。
9.查看学生表
SELECT * FROM `student`; ##通过这个命令来查看和检查学生表所有数据。
10.constraint 限制,约束
student(
id INT PRIMARY KEY,
name VARCHAR(20) NOT NULL, ##值不能为空。
major VARCHAR(20) UNIQUE, ##值不能重复。
score INT
);
11.修改、删除数据
##修改表名
rename table `student` to `student_info`;
##把major等于英语的数据全部改成英语文学。
UPDATE `student`
SET `major` = '英语文学'
WHERE `major` = 英语;
##把major=‘生物’或major=‘化学’的数据改成生化。
UPDATE `student`
SET `major` = '生化'
WHERE `major` = `生物` OR major = `化学`;
##把student_id = 1的学生的名字改为‘小辉’、课程改为‘物理’。
UPDATE `student`
SET `name = '小辉’,`major` = '物理' #中间用逗号隔开。WHERE `student_id` = 1;
##如果不用WHERE,执行如下命令,则会把该属性的值全部修改。
UPDATE `student`
SET `major` = '物理';
##如果需要新增一个列并同时设置其为AUTO_INCREMENT,可以在ALTER TABLE语句中使用ADD子句
ALTER TABLE table_name ADD new_id INT AUTO_INCREMENT PRIMARY KEY;
使用DISTINCT关键字:在SQL查询中,使用DISTINCT关键字可以去除查询结果中的重复记录。例如,SELECT DISTINCT column_name FROM table_name可以返回指定列中的唯一值。
##删除student表中,id=4的所有数据。
DELETE FROM `student`
WHERE student_id = 4;
##删除课程为物理且分数为80的数据。
DELETE FROM `student`
WHERE `major` = '物理' AND `score` = 80;
##删除把分数小于等于60的数据。
DELETE FROM `student`
WHERE `score` < 60; ##比较符号有:>,>=,<,<=,<>不等于。
##删除表内所有数据。
##DELETE FROM `student`;
13.给字段添加约束条件,唯一性、主键、外键、自增、非空等约束
如果表已经创建但没有包含AUTO_INCREMENT
属性,可以通过ALTER TABLE
语句来添加。
例如,将为id字段添加自增属性。
ALTER TABLE my_table MODIFY id INT AUTO_INCREMENT PRIMARY KEY;
如果需要新增一个列并同时设置其为AUTO_INCREMENT,可以在ALTER TABLE语句中使用ADD子句:
ALTER TABLE table_name ADD new_id INT AUTO_INCREMENT PRIMARY KEY;
14.查询数据(SELECT)
##查看student表所有数据。
SELECT * FROM `student`
##查询student表中所有学生的名字。
SELECT `name` FROM `student`;
##查询表中所有学生的名字和课程。
SELECT `name`,`major` FROM `student`;
##查询student表中所有学生的名字并按分数从高到低排序。
SELECT `name` FROM `student` ORDER BY `score` DESC;
##查询student表中所有学生的名字并按分数从低到高排序。
SELECT `name` FROM `student` ORDER BY `score` ASC; ##默认值为ASC,由低到高。
##先根据分数排序,如果出现分数一样的则按照id排序。
SELECT * FROM `student` ORDER BY `score`,`student_id`;
##如果觉得查询的数据太多,通过LIMIT来限制输出的数据数量。
SELECT * FROM `student` ORDER BY `score` LIMIT 2 ##输出结果为分数最低的两名同学的数据。
SELECT * FROM `student` ORDER BY `score` DESC LIMIT 2; ##输出学生成绩为前三名的同学的数据。
##输出课程为英语且分数大于等于60的学生的数据。
SELECT * FROM `student` WHERE `major` = '英语' AND `score` >= 60;
##查询主修英语或历史或生物的学生的数据。
SELECT * FROM `student`
WHERE `major` IN('英语','历史','生物'); ##第一种写法。
SELECT * FROM `student`
WHERE `major` = '英语' OR '历史' OR '生物';##第二种写法。
上述内容把SQL的增删查改都涉及了,建表时,主键的定义,字段或属性的约束、限制(NOT NULL,UNIQUE);修改、删除时,update、set、delete、where的使用;and、or、比较符的使用。查询数据时,SELECT FROM、ORDER BY的使用;使用DESC ASC LIMIT来对输出结果进行限制。
15.设置外键
foreign key(class_id) references Class(id) ON UPDATE CASCADE ON DELETE CASCADE;
class_id 是 student 表中的外键,它引用了 course 表中的 id 主键。
ON UPDATE CASCADE 和 ON DELETE CASCADE 是可选的级联操作,分别表示当父表中的主键更新或删除时,子表中的外键值也会相应地更新或删除。
123
2024.1203