mysql基础
1. mysql-创建表、修改表、删除表
关键字:CREATE |ALTER | DROP
① 创建demo1表,插入一条记录
#demo1表->字段id name salary birthday
CREATE TABLE demo1 (
`id` INT,
`name` varchar(8),
salary DOUBLE,
`birthday` DATE);
#demo1表->插入数据
INSERT INTO demo1 VALUES
(1,'小马',12000,'2024-11-12');
#demo1表->查询
SELECT * FROM demo1;
②修改表
ALTER TABLE demo1 ADD `sex` VARCHAR(1);#添加一个sex属性列
ALTER TABLE demo1 MODIFY `name` VARCHAR(32);#修改varchar列 长度为32
ALTER TABLE demo1 DROP `salary` ;#删除salary列
RENAME TABLE demo1 to demotest;#修改表名
ALTER TABLE demotest CHARACTER SET utf8mb4;#修改字符集
ALTER TABLE demotest CHANGE `id` `序号` INT;#修改id表名为序号
SELECT * FROM demotest;
③删除表
DROP TABLE demotest;
2.增删改查语句-CURD
INSERT(添加)、UPDATE(更新)、DELETE(删除)、SELECT(查找)
①INSERT语句
#demo1表->添加一条新记录
INSERT INTO demo1 VALUES(1,'小马',12000,'2024-11-12');
SELECT * FROM demo1;
注意:
1.类型匹配(有些可能会强转,‘30’->30)
2.长度在指定范围内
3.字符日期在单引号’ ’
4.列可插入空值(前提是没有设置NOT NULL)
5.类型 、数据一一对应
6.可以添加多条数据
7.给所有字段添加数据,可不写列名
8.某列如果未指定NOT NULL,添加数据未给值时,会默认设置null
②UPDATE语句
#emp1表->所有resume修改为'我最棒'(不加where更新所有)
UPDATE emp1 SET `resume`='我最棒';
#emp1表->将name=msb的员工salary改为20000
UPDATE emp1 SET `Salary`=20000 WHERE `name`='msb';
#emp1表->name=msb的工资在原有基础上加1000
UPDATE emp1 SET Salary=Salary+1000 WHERE `name`='msb';
SELECT * FROM emp1;
注意:
1.可以用于更新表中的各列
2.SET后指定更新哪些 (列名+内容)
3.where指定更新哪一行(不加where更新所有)
4.修改多个值 (SET 列1=值1,列2=值2,…)
③DELETE语句
#emp表->删除该表中id=3的记录(不加where删除所有)
DELETE FROM emp WHERE `id`=3;
SELECT * FROM emp;
#emp表->删除该表所有记录
DELETE FROM emp;
SELECT * FROM emp;
注意:
1.不加where删除所有
2.delete不能删除一列(可以用update将一列置null /’ ')
3.delete只能删除表中的记录,删除表用Drop table
④SELECT语句
单表操作
#创建新的Student表
CREATE TABLE Student(
id INT NOT NULL DEFAULT 1,
`name` VARCHAR(20) NOT NULL DEFAULT '',
`chinese` FLOAT NOT NULL DEFAULT 0.0,
`english` FLOAT NOT NULL DEFAULT 0.0,
`math` FLOAT NOT NULL DEFAULT 0.0
);
(1)基础查询
#Student表->查询所有学生信息
SELECT * FROM Student;
#Student表->查询表中所有学生name和English成绩
SELECT `name`,english FROM Student;
#Student表->过滤重复条件DISTINCT (每个字段都相同才去重)
SELECT DISTINCT * FROM Student;
(2)使用表达式对查询的列进行计算
#Student表->统计每个学生的总分
SELECT `name`,(chinese+english+math) AS '总分' FROM Student;
#Student表->给所有学生成绩+10
SELECT `name`,(chinese+english+math+10) AS '总分' FROM Student;
(3)使用AS语句
#Student表->统计每个学生的总分(AS起别名)
SELECT `name`,(chinese+english+math) AS '总分' FROM Student;
(4)WHERE字句的运算符
注意LIKE 、IN 的用法。 <>是不等于
#Student表->查询所有姓李的学生成绩
SELECT * FROM Student WHERE name like '马%';
#查询总分为189,190,191的学生
SELECT * FROM Student where (chinese+english+math) in(300,190,191);
(5)使用ORDER BY字句排序查询结果
注意LIKE 、IN 的用法。 <>是不等于
#Student表->查询所有姓李的学生成绩
SELECT * FROM Student WHERE name like '马%';
#查询总分为189,190,191的学生
SELECT * FROM Student where (chinese+english+math) in(300,190,191);
练习:
#查询math>60 and id>4 的学生
SELECT * FROM Student WHERE math>60 and id>4;
#查询english>chinese的学生
SELECT * FROM Student WHERE english > chinese;
#查询总分>200 and 数学<语文 and 姓赵的学生
SELECT * FROM Student WHERE (english+math+chinese) >200 and math < chinese and name like '赵%';
#查询英语在80-90的学生
SELECT * FROM Student WHERE english between 80 and 90;
#查询数学分数为80,90,91的学生
SELECT * FROM Student WHERE math=80 or math=90 or math=91;
#查询数学分数>80 and 语文>80的学生
SELECT * FROM Student WHERE math>80 and chinese>80;
#查询语文分数在80-90的学生
SELECT * FROM Student WHERE chinese BETWEEN 80 and 90;
#查询姓李或姓宋的学生
SELECT * FROM Student WHERE name like '李%' or name like '宋%';
#查询数学比语文多1分的学生
SELECT * FROM Student where math - chinese > 1;
SELECT * FROM Student where math -chinese in(1);
…敬请期待…