Day15 PythonWeb全栈课程课堂内容

本文详细介绍了如何使用SQL进行数据库管理,包括连接与退出数据库、创建与删除数据库、查看数据库信息、操作数据表如创建、修改、删除表以及插入、更新和删除数据。此外,还讲解了查询数据时的where子句和比较、逻辑运算符的使用。内容涵盖了数据库的基础操作和实战应用。
摘要由CSDN通过智能技术生成

SQL语句

1. 操作数据库(DDL)

连接数据库

mysql -u用户名 -p

enter password:密码

在这里插入图片描述

  • MySQL的版本为:5.7.26;

退出数据库

exit
quit

查看已经创建的数据库

SHOW DATABASES;

  • MYSQL的语句结束,末尾必须添加;或者 \g

在这里插入图片描述

  • 数据库中不区分大小写,以空格区分命令,且以分号结束命令。

查看数据库版本

select version();

在这里插入图片描述

创建数据库

CREATE DATABASE 数据库名;

CREATE DATABASE 数据库名 charset=utf8;

在这里插入图片描述

  • 注意
    • 当你创建的数据库名有特殊符号时。

在这里插入图片描述

  • 为解决此问题可以在命名的名字两边加上 ``

在这里插入图片描述

  • charset:指定编码为utf8

查看当前数据库创建的命令

SHOW CREATE DATABASE 数据库名;

在这里插入图片描述

查看当前使用的数据库

SELECT DATABASE();

在这里插入图片描述

使用数据库

USE 数据库名;

删除数据库(慎用)

DROP DATABASE 数据库名;
在这里插入图片描述


练习

  • 创建数据库:Logic_edu

    CREATE DATABASE `Logic_edu`;
    

在这里插入图片描述

  • 查看已创建的数据库

    SHOW DATABASES;
    
  • 查看当前使用的数据库是否是Logic_edu

    SELECT DATABASE();
    
  • 若不是,则切换使用Logic_edu数据库

    USE Logic_edu;
    
  • 删除Logic_edu数据库

    DROP DATABASE Logic_edu;
    

2. 操作数据表

查看当前数据库中所有表

SHOW TABLES;

在这里插入图片描述

  • Empty表示该数据库中是空的。

  • 也可以查看有数据的数据库。

在这里插入图片描述

  • 当前数据库中含有数据表lesson1

创建表

CREATE TABLE 数据表名(字段 类型 约束[, 字段 类型 约束])

  • 需求:

    • 创建表名为mytable1,字段id为int并且字段name为varchar(30)

      CREATE TABLE mytable1(
      	id INT,
      	NAME VARCHAR(30),
      ); -- 报错。注意:字段与字段之间以英文状态下的逗号进行分割,但最后一个不允许有逗号。
      

在这里插入图片描述

  CREATE TABLE mytable1(
   	id INT,
   	NAME VARCHAR(30)
   ); -- 正确代码

在这里插入图片描述

  • 创建表名为mytable2,指定id为主键并且字段name为varchar(30)

    CREATE TABLE mytable2(
    	id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    	NAME VARCHAR(30)
    );
    
    • 其中PRIMARY KEY表示主键,NOT NULL表示非空,AUTO_INCREMENT表示自增。

    • PRIMARY KEY,NOT NULL,AUTO_INCREMENT代码之间是可以随意替换位置。

    • 你也可以写成id INT AUTO_INCREMENT PRIMARY KEY NOT NULL

在这里插入图片描述

查看表的创建语句

SHOW CREATE TABLE 数据表名;

在这里插入图片描述

  • ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci表示创建表的引擎。

  • 修改默认引擎,在MySQL5.7.26的文件中有一个my.ini的文件用记事本打开

在这里插入图片描述
在这里插入图片描述

查看表描述信息

DESC 数据表名

在这里插入图片描述

练习

  • 创建 students 表(id、name、age、high、gender、cls_id)

    CREATE TABLE students(
    	id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    	NAME VARCHAR(20),
    	age TINYINT UNSIGNED DEFAULT 18,
    	high DECIMAL(5,2),
    	gender ENUM ("男","女","保密") DEFAULT "", 
    	cls_id INT
    );
    

    在结尾添加;分号前添加默认编码集ENGINE=INNODB DEFAULT CAHRSET=utf8

    CREATE TABLE students(
    	id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    	NAME VARCHAR(20),
    	age TINYINT UNSIGNED DEFAULT 18,
    	high DECIMAL(5,2),
    	gender ENUM ("男","女","保密") DEFAULT "", 
    	cls_id INT
    )ENGINE=INNODB DEFAULT CAHRSET=utf8;
    

在这里插入图片描述

  • 枚举类型默认值必须在选项范围内
  • 添加上默认值后
CREATE TABLE students(
	id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
	NAME VARCHAR(20),
	age TINYINT UNSIGNED DEFAULT 18,
	high DECIMAL(5,2),
	gender ENUM ("男","女","保密") DEFAULT "保密" ,
	cls_id INT
)ENGINE=INNODB DEFAULT CHARSET=utf8;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 创建 classes 表(id、name)

    CREATE TABLE classes(
    	id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    	NAME VARCHAR(30)
    )ENGINE=INNODB DEFAULT CHARSET=utf8;
    

在这里插入图片描述

添加表字段

ALTER TABLE 数据表名 ADD 字段 类型;

-- 给students表添加一个生日字段
ALTER TABLE students ADD birthday DATE;

在这里插入图片描述

修改表字段

ALTER TABLE 数据表名 MODIFY 字段 类型; – 不重命名

ALTER TABLE 数据表名 CHANGE 原字段名 新字段名 类型及约束; – 将字段重命名

-- 给生日字段指定默认值
ALTER TABLE students MODIFY birthday DATE DEFAULT '1995-08-14';

在这里插入图片描述

-- 修改字段的名称birthday改成birth
ALTER TABLE students CHANGE birthday birth DATE DEFAULT '1995-08-14';

在这里插入图片描述

删除表字段

ALTER TABLE 数据表名 DROP 字段;

在这里插入图片描述

删除数据表(慎用)

DROP TABLE 数据表名称

-- 删除数据表classes
DROP TABLE classes

在这里插入图片描述

3. 操作数据

select * from 数据表名称

在这里插入图片描述

新增数据

整行插入

INSERT INTO 数据表名 VALUES(值1,值2,值3…);

INSERT INTO students VALUES('Sam',26,'男',8,'1996-01-01'); 
-- 报错。 ID虽然自增,但是整行插入的时候,也是需要的。

在这里插入图片描述

INSERT INTO students VALUES(1,'Sam',26,'男',8,'1996-01-01');

在这里插入图片描述

指定列中插入数据

INSERT INTO tabname (字段1, 字段2,…) VALUES (值1,值2,…);

INSERT INTO students(NAME,cls_id) VALUES('Janice',2);

在这里插入图片描述

INSERT INTO students NAME,cls_id VALUES('Janice',2);
-- 报错。字段未加括号。无论字段多少。

在这里插入图片描述

INSERT INTO students(NAME,gender) VALUES('Mike',1);
-- 枚举类型可以通过下标取值,根据插入顺序,并且从1开始。

在这里插入图片描述

指定列中插入多条数据

INSERT INTO 数据表名 (字段1, 字段2,…) VALUES (值1,值2,…),(值1,值2,…);

INSERT INTO students (NAME,gender) VALUES('Lily',2),('John',1);

在这里插入图片描述

修改数据

UPDATE 数据表名 SET 字段1=新值,字段2=新值 [WHERE 条件];

练习
  • 将姓名全部修改为Fung。
UPDATE students SET NAME=Fung;
-- 新值得加双引号,因为该值VARCHAR类型。

在这里插入图片描述

UPDATE students SET NAME='Fung';
-- 将NAME字段的所有值改成Fung。

在这里插入图片描述

  • 将性别为女的名字修改为rose。
UPDATE students SET NAME='Rose' WHERE gender='女';

在这里插入图片描述

  • 将id为3的年龄修改为22,并且性别改为女。
UPDATE students SET age=22,gender='女' WHERE id=3;

在这里插入图片描述

删除数据

DELETE FROM 数据表名 [WHERE 条件];

练习

  • 将姓名为rose的数据删除
DELETE FROM students WHERE NAME='Rose';
-- 真正意义上的删除,物理上的删除。

-- 逻辑删除,60天的缓冲时间。
-- 通过判断,一个字段的值给用户呈现是否删除现象,实际上并没有正真删除。
-- 1.新增标识字段:is_del 用来表示数据是否删除
ALTER TABLE students ADD is_del INT DEFAULT 0;
-- 2.is_del: 0,未删除
-- 3.is_del: 1,已删除
UPDATE students set is_del VALUES(1);
-- 在登陆时,数据还在保存。
-- 60之后,所有数据删除。

在这里插入图片描述
在这里插入图片描述

查询数据

查询整个表数据

SELECT * FROM 数据表名;

查询****指定字段数据

SELECT 字段1,字段2 FROM 数据表名;

查询****指定字段数据,并给字段起别名

SELECT 字段1 as 别名,字段2 as 别名 FROM 数据表名;

查询指定字段并去重

SELECT DISTINCT 字段1 FROM 数据表名;

练习

  • 查询Students表所有数据(不推荐)
SELECT * FROM students;

在这里插入图片描述

  • 查询Students表中name与gender字段的数据
SELECT NAME,gender FROM students;
SELECT gender,NAME FROM students;

在这里插入图片描述

在这里插入图片描述

SELECT (NAME,gender) FROM students; -- 报错。不要添加括号
SELECT (NAME) FROM students;-- 可以,但不建议加

在这里插入图片描述

  • 查询指定字段重命名。
SELECT gender AS '性别',NAME AS '姓名' FROM students;
-- 没有改变原表的字段名
-- 表也可以重命名
SELECT s.gender FROM students AS s;

在这里插入图片描述

在这里插入图片描述

  • 查询Students表中name字段的数据并且去重。

在这里插入图片描述

SELECT DISTINCT NAME FROM students;
-- DISTINCT 具有去重的意思。

在这里插入图片描述

  • 如果多个字段进行去重,字段1+字段2+…+字段n,重复才去重。
SELECT DISTINCT NAME,age FROM students;

在这里插入图片描述

where子句

  • where子句通常结合增删改查使用,用于做筛选的条件。

  • 比如,查询当id=1的数据

select * from Student where id=1
  • 不仅如此,经常结合运算符使用。
比较运算符
运算符描述
=等于
>大于
>=大于等于
<小于
<=小于等于
!=或<>不等于
练习

1.查询id大于3的数据

SELECT * FROM students WHERE id>3;

在这里插入图片描述

2.查询年龄大于18岁的信息

SELECT * FROM students WHERE age>18;

在这里插入图片描述

3.查询姓名不是Fung的数据

SELECT * FROM students WHERE NAME!='Fung';

在这里插入图片描述

逻辑运算符
运算符描述
a and b当同时满足a,b时,则为True
a or b当满足a或b其中一个时,则为True
not a否定
练习

1.查询18~22之间的所有学生信息

SELECT * FROM students WHERE 18<=age AND age<=22;
-- SELECT * FROM students WHERE 18<=age<=22; 不建议
-- SELECT * FROM students WHERE 18<=age AND <=22; 报错,缺少age

在这里插入图片描述

2.查询id大于3的女同学

SELECT * FROM students WHERE id>3 AND gender='女';

在这里插入图片描述

3.查询id小于2或者id大于4的学生信息

SELECT * FROM students WHERE id>4 OR id<2;

在这里插入图片描述

4.查询年龄不是18的女同学

SELECT * FROM students WHERE age!=18 AND gender='女';
SELECT * FROM students WHERE (NOT age=18) AND gender='女';

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值