From 70218cbcffe8e39aac319784767655fb7a698189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 28 Feb 2023 15:24:33 +0000 Subject: [PATCH 1/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2003?= =?UTF-8?q?=20=E6=9E=97=E5=B1=95/20230213=20MySQL=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E4=BB=A5=E5=8F=8A=E7=8E=AF=E5=A2=83=E9=85=8D=E7=BD=AE.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...57\345\242\203\351\205\215\347\275\256.md" | 90 ------------------- 1 file changed, 90 deletions(-) delete mode 100644 "03 \346\236\227\345\261\225/20230213 MySQL\345\256\211\350\243\205\344\273\245\345\217\212\347\216\257\345\242\203\351\205\215\347\275\256.md" diff --git "a/03 \346\236\227\345\261\225/20230213 MySQL\345\256\211\350\243\205\344\273\245\345\217\212\347\216\257\345\242\203\351\205\215\347\275\256.md" "b/03 \346\236\227\345\261\225/20230213 MySQL\345\256\211\350\243\205\344\273\245\345\217\212\347\216\257\345\242\203\351\205\215\347\275\256.md" deleted file mode 100644 index ab5347f..0000000 --- "a/03 \346\236\227\345\261\225/20230213 MySQL\345\256\211\350\243\205\344\273\245\345\217\212\347\216\257\345\242\203\351\205\215\347\275\256.md" +++ /dev/null @@ -1,90 +0,0 @@ - -9. - 9. ### **一、下载MySQL** - - 首先,去数据库的官网[http://www.mysql.com](https://link.zhihu.com/?target=http%3A//www.mysql.com/)下载MySQL。 - - 点击进入后的首页如下: - - ![img](https://pic3.zhimg.com/80/v2-aa56bc30228063d38e75ff335f06fa56_720w.webp) - - 推荐使用谷歌浏览器,自带页面翻译功能,对英语不好的小白,简直就是福音 - - 按顺序点击 - - ![img](https://pic3.zhimg.com/80/v2-463f1a78840c9f28d8be701e9d858262_720w.webp) - - ![img](https://pic4.zhimg.com/80/v2-c3830b1631b302a0c2a16072fbb4258b_720w.webp) - - 按顺序进行如下操作 - - ![img](https://pic1.zhimg.com/80/v2-883d93518b97819a98c7645459927448_720w.webp) - - ![img](https://pic1.zhimg.com/80/v2-c55e415d144b531b01b20768c7b3e050_720w.webp) - - 完成下载 - - ### **二、安装MySQL** - - 打开刚刚下载好的安装包,开始安装MySQL。如图这选择“Custom(自定义)”,方便我们把MySQL安装到非系统盘 - - ![img](https://pic3.zhimg.com/80/v2-ac3199bbefdf73957631f5289df917e2_720w.webp) - - 继续往下next - - ![img](https://pic2.zhimg.com/80/v2-d8f210e4f9bbdb60dcc112891023cb11_720w.webp) - - 点击execute,安装插件 - - ![img](https://pic2.zhimg.com/80/v2-696498ac49fcbfaed7125f5e82c85cc5_720w.webp) - - ![img](https://pic1.zhimg.com/80/v2-de472a990f1ba87403e7ba325ca30c00_720w.webp) - - 一路继续往下next,MySQL默认端口为3306 - - ![img](https://pic1.zhimg.com/80/v2-28a67ca08b867d777af338607e5d6278_720w.webp) - - 选择传统加密,方便后面连接Navicat - - ![img](https://pic2.zhimg.com/80/v2-f8f9091ff4b1f06b5b0c5d3e70991c35_720w.webp) - - 继续往下next,设置root, 密码要复杂点,要不然通不过 - - ![img](https://pic2.zhimg.com/80/v2-be022e003b4592472430895b88fb883d_720w.webp) - - next - - ![img](https://pic3.zhimg.com/80/v2-f59a701986f87731fc4534f0edd3e302_720w.webp) - - 一路next下去 - - ![img](https://pic2.zhimg.com/80/v2-e4ce0cab30ed4d237f39e4e6276c8509_720w.webp) - - 点击finish,完成 - - 安装完成后会在系统的开始菜单下出现下图所示的程序,随便打开一个,输入之前设置的密码就可以连接 - - ![img](https://pic4.zhimg.com/80/v2-bb87c7ad95979316862996026bd211b3_720w.webp) - - ## 三、MySQL环境变量配置 - - 为了能让Windows命令行操作MySQL数据库,需要配置一下系统的环境变量。 - - 点开电脑-右键属性-进入高级系统设置-高级-环境变量-新建 - - ![img](https://pic4.zhimg.com/80/v2-9f6c9641cc4abc565a62cab8b833700f_720w.webp) - - 变量名如图,变量值为mysql的安装目录 - - ![img](https://pic4.zhimg.com/80/v2-0b3dccc1335dcbdbf046fa10492c29db_720w.webp) - - (1)变量名:path - - (2)变量值:%MYSQL_HOME%\bin - - ![img](https://pic2.zhimg.com/80/v2-6dd5094272621ad56c3960b8405d2889_720w.webp) - - 通过cmd进入命令窗口,输入net start mysql80,如图就说明完成配置 - - ![img](https://pic2.zhimg.com/80/v2-3eef039794125250f22db6b5104dbfcd_720w.webp) - -- Gitee From 9cd7927c6b8cb0501b170f1cf16115c045fc3ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 28 Feb 2023 15:24:49 +0000 Subject: [PATCH 2/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2003?= =?UTF-8?q?=20=E6=9E=97=E5=B1=95/20230215=20MySQL=E7=9A=84=E5=BB=BA?= =?UTF-8?q?=E5=BA=93=E5=92=8C=E5=88=B6=E8=A1=A8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...23\345\222\214\345\210\266\350\241\250.md" | 35 ------------------- 1 file changed, 35 deletions(-) delete mode 100644 "03 \346\236\227\345\261\225/20230215 MySQL\347\232\204\345\273\272\345\272\223\345\222\214\345\210\266\350\241\250.md" diff --git "a/03 \346\236\227\345\261\225/20230215 MySQL\347\232\204\345\273\272\345\272\223\345\222\214\345\210\266\350\241\250.md" "b/03 \346\236\227\345\261\225/20230215 MySQL\347\232\204\345\273\272\345\272\223\345\222\214\345\210\266\350\241\250.md" deleted file mode 100644 index 1d59216..0000000 --- "a/03 \346\236\227\345\261\225/20230215 MySQL\347\232\204\345\273\272\345\272\223\345\222\214\345\210\266\350\241\250.md" +++ /dev/null @@ -1,35 +0,0 @@ -笔记 - -create + table/databases + charset +字符类型 创建库/表 - -SHOW DATABASES -CREATE DATABASE 数据库名 -USE 数据库名 -SELECT DATABASE(): -DROP DATABASE 数据库名 - -SHOW TABLES -CREATE TABLE 表名(字段 字段类型,字段 字段类型 ); -DESC 表名 -SHOW CREATE TABLE 表名 -ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ... ;DROP TABLE 表名; - -```sql -创建库taobao -创建表computer -表里存放: -编号,显示宽度5位,不足的补0 -电脑品牌,定长10 -型号,可变长10 -价格:整数部分限长6,小数2位 - -create database taobao charset utf8; -use taobao; -create table computer( -id int(5)zerofull, -brand chat(10), -model varchar(10), -price float(8,2) -); -``` - -- Gitee From 9785bc11a250d611b7f728d2b8ef4a45de6f64f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 28 Feb 2023 15:24:55 +0000 Subject: [PATCH 3/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2003?= =?UTF-8?q?=20=E6=9E=97=E5=B1=95/20230216DDL=E5=92=8CDML=E8=AF=AD=E5=8F=A5?= =?UTF-8?q?=E7=BB=83=E4=B9=A0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...55\345\217\245\347\273\203\344\271\240.md" | 247 ------------------ 1 file changed, 247 deletions(-) delete mode 100644 "03 \346\236\227\345\261\225/20230216DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" diff --git "a/03 \346\236\227\345\261\225/20230216DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" "b/03 \346\236\227\345\261\225/20230216DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" deleted file mode 100644 index 7535e1c..0000000 --- "a/03 \346\236\227\345\261\225/20230216DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" +++ /dev/null @@ -1,247 +0,0 @@ - - -笔记 - -ALTER TABLE 表名 MODIFY 主动移动字段名 date AFTER 被动字段 - -移动字段 - -ALTER TABLE 表名 CHANGE 旧字段 新字段 新数据类型 - -修改字段属性 - -ALTER TABLE 表名 add 新字段和它的数据类型 - -增加字段 - - - -插入数据 - -INSERT INTO 表名(指定字段) VALUES (添加的数据); - -若无指定默认为全添加 - - - -删除数据 - -ALTER TABLE 表名 DROP 指定字段 - -修改数据 - -UPDATE 表名 set 字段名 where 条件; - -```sql --- 1、创建数据库test01_market -CREATE DATABASE test01_market -alter database test01_market character set utf8; --- 2、创建表格customers -USE test01_market --- | 字段名 | 数据类型 | --- | --------- | ----------- | --- | c_num int(11) | --- | c_name varchar(50) | --- | c_contact varchar(50) | --- | c_city varchar(50) | --- | c_birth date | -CREATE TABLE customers( -c_num int(11), -c_name varchar(50), -c_contact varchar(50), -c_city varchar(50), -c_birth date -); --- **要求3:**将c_contact字段移动到c_birth字段后面 -ALTER TABLE customers MODIFY c_contact date AFTER c_birth --- **要求4:**将c_name字段数据类型改为 varchar(70) -ALTER TABLE customers MODIFY c_name VARCHAR(70) --- **要求5:**将c_contact字段改名为c_phone -ALTER TABLE customers CHANGE c_contact c_phone VARCHAR(50) --- **要求6:**增加c_gender字段到c_name后面,数据类型为char(1) -ALTER TABLE customers add c_gender char(1) -ALTER TABLE customers MODIFY c_gender date after c_name --- **要求7:**将表名改为customers_info -ALTER TABLE customers RENAME customers_info --- **要求8:**删除字段c_city -ALTER TABLE customers_info DROP c_city - - - - --- ## 第2题 --- 1、创建数据库test02_library -create database test02_library -alter DATABASE test02_library character set utf8 -USE test02_library --- 2、创建表格books --- | 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | --- | ------- | -------- | ------------- | -------- | ---- | --- | b_id | 书编号 | int(11) | 否 | 是 | --- | b_name | 书名 | varchar(50) | 否 | 否 | --- | authors | 作者 | varchar(100) | 否 | 否 | --- | price | 价格 | float | 否 | 否 | --- | pubdate | 出版日期 | year | 否 | 否 | --- | note | 说明 | varchar(100) | 是 | 否 | --- | num | 库存 | int(11) | 否 | 否 | -DROP TABLE books -CREATE TABLE books( -b_id int(11) UNIQUE,#书编号 -b_name VARCHAR(50), #书名 -authors varchar(100), #作者 -price float,#价格 -pubdate year, #出版日期 -note varchar(100) NULL, #说明 -num int(11) #库存 -); --- 3、向books表中插入记录 --- 1) 指定所有字段名称插入第一条记录 -INSERT INTO books(b_id,b_name,authors,price,pubdate,note,num) VALUES (10,'流浪地球','刘慈欣',30,1997,NULL,8); --- 2)不指定字段名称插入第二记录 -INSERT INTO books VALUES (55,'55','55',55,55,NULL,55); --- 3)同时插入多条记录(剩下的所有记录) -INSERT into books VALUES (1,'Tal of AAA','Dickes',23,1995,'novel',11),(2,'EmmaT','Jane lura',35,1993,'joke',22),(3,'Story of Jane','Jane Tim',40,2001,'novel',0),(4,'Lovey Day','George Byron',20,2005,'novel',30),(5,'Old land','Honore Blade',30,2010,'law',0),(6,'The Battle','Upton Sara',30,1999,'medicine',40),(7,'Rose Hood','Richard haggard',28,2008,'cartoon',28); --- | b_id | b_name | authors | price | pubdate | note | num | --- | ---- | ------------- | --------------- | ----- | ------- | -------- | ---- | --- | 1 | Tal of AAA | Dickes | 23 | 1995 | novel | 11 | --- | 2 | EmmaT | Jane lura | 35 | 1993 | joke | 22 | --- | 3 | Story of Jane | Jane Tim | 40 | 2001 | novel | 0 | --- | 4 | Lovey Day | George Byron | 20 | 2005 | novel | 30 | --- | 5 | Old land | Honore Blade | 30 | 2010 | law | 0 | --- | 6 | The Battle | Upton Sara | 30 | 1999 | medicine | 40 | --- | 7 | Rose Hood | Richard haggard | 28 | 2008 | cartoon | 28 | --- --- 4、将小说类型(novel)的书的价格都增加5。 -UPDATE books set price=price+5 where note='novel'; --- 5、将名称为EmmaT的书的价格改为40。 -UPDATE books set price=40 WHERE b_name='EmmaT'; --- 6、删除库存为0的记录 -DELETE FROM books where num=0; - - - --- 1、创建数据库test03_bookstore -CREATE DATABASE test03_bookstore; -alter database test03_bookstore character set utf8; -USE test03_bookstore; --- 2、创建book表 -DROP TABLE book -CREATE TABLE book ( -id int(11) primary key NOT NULL auto_increment, -title varchar(100) NOT NULL, -author varchar(100) NOT NULL, -price double(11,2) NOT NULL, -sales int(11) NOT NULL, -stock int(11) NOT NULL, -img_path varchar(100) NOT NULL -); --- +----------+--------------+------+-----+---------+----------------+ --- | Field | Type | Null | Key | Default | Extra | --- +----------+--------------+------+-----+---------+----------------+ --- | id | int(11) | NO | PRI | NULL | auto_increment | 自动增量 --- | title | varchar(100) | NO | | NULL | | --- | author | varchar(100) | NO | | NULL | | --- | price | double(11,2) | NO | | NULL | | --- | sales | int(11) | NO | | NULL | | --- | stock | int(11) | NO | | NULL | | --- | img_path | varchar(100) | NO | | NULL | | --- +----------+--------------+------+-----+---------+----------------+ --- ``` --- --- 尝试添加部分模拟数据,参考示例如下: --- --- +----+-------------+------------+-------+-------+-------+----------------------------+ --- | id | title | author | price | sales | stock | img_path | --- +----+-------------+------------+-------+-------+-------+-----------------------------+ --- | 1 | 解忧杂货店 | 东野圭吾 | 27.20 | 102 | 98 | upload/books/解忧杂货店.jpg | --- | 2 | 边城 | 沈从文 | 23.00 | 102 | 98 | upload/books/边城.jpg | --- +----+---------------+------------+-------+-------+-------+----------------------------+ -INSERT INTO book VALUES(1,'解忧杂货店','东野圭吾',27.20 ,102,98,'upload/books/解忧杂货店.jpg '),(2,'边城','沈从文',23.00,102,98,'upload/books/边城.jpg '); --- 3、创建用户表users,并插入数据 -CREATE TABLE users( -id int(11) PRIMARY KEY auto_increment, -username varchar(100) UNIQUE, -password varchar(100), - email varchar(100) NULL -); --- ```mysql+----------+--------------+------+-----+---------+---------- --- | Field | Type | Null | Key | Default | Extra | --- +----------+--------------+------+-----+---------+----------------+ --- | id | int(11) | NO | PRI | NULL | auto_increment | --- | username | varchar(100) | NO | UNI | NULL | | --- | password | varchar(100) | NO | | NULL | | --- | email | varchar(100) | YES | | NULL | | --- +----------+--------------+------+-----+---------+----------------+ --- 尝试添加部分模拟数据,参考示例如下: -INSERT INTO users VALUES( 1,'admin','112233','admin@mxdx.com'); --- +----+----------+----------------------------------+--------------------+ --- | id | username | password | email | --- +----+----------+----------------------------------+--------------------+ --- | 1 | admin | 112233 | admin@mxdx.com | --- +----+----------+----------------------------------+--------------------+ --- 4、创建订单表orders -DROP TABLE orders -CREATE TABLE orders( -id varchar(100) PRIMARY KEY NOT NULL, -order_time datetime NOT NULL, -total_count int(11) NOT NULL, -total_amount double(11,2) NOT NULL, -state int(11) NOT NULL, -user_id int(11) NOT NULL -); -alter table orders add index(user_id); --- +--------------+--------------+------+-----+---------+-------+ --- | Field | Type | Null | Key | Default | Extra | --- +--------------+--------------+------+-----+---------+-------+ --- | id | varchar(100) | NO | PRI | NULL | | --- | order_time | datetime | NO | | NULL | | --- | total_count | int(11) | NO | | NULL | | --- | total_amount | double(11,2) | NO | | NULL | | --- | state | int(11) | NO | | NULL | | --- | user_id | int(11) | NO | MUL | NULL | | --- +--------------+--------------+------+-----+---------+-------+ --- --- 尝试添加部分模拟数据,参考示例如下: -INSERT INTO orders VALUES('15294258455691','2018-06-20 00:30:45',2,50.2,0,1); --- +----------------+---------------------+-------------+--------------+-------+---------+ --- | id | order_time | total_count | total_amount | state | user_id | --- +----------------+---------------------+-------------+--------------+-------+---------+ --- | 15294258455691 | 2018-06-20 00:30:45 | 2 | 50.20 | 0 | 1 | --- +----------------+---------------------+-------------+--------------+-------+---------+ - --- --- 5、创建订单明细表order_items -CREATE TABLE order_items( -id int(11) PRIMARY KEY NOT NULL, -count int(11) NOT NULL, -amount double(11,2) NOT NULL, -title varchar(100) NOT NULL, -author varchar(100) NOT NULL, -price double(11,2) NOT NULL, -img_path varchar(100) NOT NULL, -order_id varchar(100) NOT NULL -); -alter table order_items add index(order_id); --- +----------+--------------+------+-----+---------+----------------+ --- | Field | Type | Null | Key | Default | Extra | --- +----------+--------------+------+-----+---------+----------------+ --- | id | int(11) | NO | PRI | NULL | auto_increment | --- | count | int(11) | NO | | NULL | | --- | amount | double(11,2) | NO | | NULL | | --- | title | varchar(100) | NO | | NULL | | --- | author | varchar(100) | NO | | NULL | | --- | price | double(11,2) | NO | | NULL | | --- | img_path | varchar(100) | NO | | NULL | | --- | order_id | varchar(100) | NO | MUL | NULL | | --- +----------+--------------+------+-----+---------+----------------+ --- 尝试添加部分模拟数据,参考示例如下: - -INSERT INTO order_items VALUES(1,1,27.20,'解忧杂货店','东野圭吾',27.20,'static/img/default.jpg','15294258455691'),(2,1,23.00,'边城','沈从文',23.00,'static/img/default.jpg','15294258455691'); --- +----+-------+--------+---------+---------+-------+----------------+----------------+ --- | id |count| amount| title | author | price | img_path | order_id | --- +----+-------+--------+------------+----------+-------+----------------+----------------+ --- | 1 | 1 | 27.20| 解忧杂货店 | 东野圭吾 | 27.20 | static/img/default.jpg|15294258455691 | --- | 2 | 1 | 23.00| 边城 | 沈从文 | 23.00 | static/img/default.jpg|15294258455691 | --- +----+-------+--------+------------+----------+-------+------------+----------------+ -``` - -- Gitee From dab62f55cf20194cad030c61f8952c74956452cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 28 Feb 2023 15:25:00 +0000 Subject: [PATCH 4/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2003?= =?UTF-8?q?=20=E6=9E=97=E5=B1=95/20230220DDL=E5=92=8CDML=5F=E5=BB=BA?= =?UTF-8?q?=E8=A1=A8=E4=B8=8E=E5=A1=AB=E5=80=BC.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...50\344\270\216\345\241\253\345\200\274.md" | 268 ------------------ 1 file changed, 268 deletions(-) delete mode 100644 "03 \346\236\227\345\261\225/20230220DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274.md" diff --git "a/03 \346\236\227\345\261\225/20230220DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274.md" "b/03 \346\236\227\345\261\225/20230220DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274.md" deleted file mode 100644 index c0e9bae..0000000 --- "a/03 \346\236\227\345\261\225/20230220DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274.md" +++ /dev/null @@ -1,268 +0,0 @@ - - -笔记 - -主键约束(primary key) -特点:每一个表只能有一个主键约束,主键约束的字段值是不允许为null,也不允许重复的 - -唯一键约束(unique key) - -特点:允许为null,不能重复,一个表可以有多个唯一键约束 - -非空约束 (not null) - -默认值约束 (DEFAULT '默认值') -如果某个字段,在添加数据时未指定值时,希望不要用NULL处理,而是按照一个默认值处理, -就可以使用默认值约束。基本与not null配合使用 - -外键约束 -约束两个表的关系,或者是一个表的两个字段之间的关系。 - -FOREIGN KEY (子表所要求字段名)REFERENCES 父表(父表所要求字段名) - -(1)主表(父表)和从表(子表) -主表:被依赖,被参考 -从表:依赖别人的,参考别人的 - -自增属性 AUTO_INCREMENT -维护某个字段的值自动增长的一个属性。 -一个表最多只能有一个字段是自增的 -自增的字段必须是整数类型 -自增的字段必须是键约束的字段(通常是主键、唯一键)自增字段赋值为null和0的时候,会自增, -如果赋值为其他的值,按照你指定的值来。 - -```sql --- ## 第1题 --- 1、创建数据库test01_company -CREATE database test01_company charset utf8 --- 2、创建表格offices -use test01_company -CREATE TABLE test01_company( -officeCode int, -city varchar(30), -address varchar(50), -country varchar(50), -postalCode varchar(25) -); --- | 字段名 | 数据类型 | --- | ---------- | ----------- | --- | officeCode | int | --- | city | varchar(30) | --- | address | varchar(50) | --- | country | varchar(50) | --- | postalCode | varchar(25) | --- --- 3、创建表格employees --- | 字段名 | 数据类型 | --- | --------- | ------------- | --- | empNum | int(11) | --- | lastName | varchar(50) | --- | firstName | varchar(50) | --- | mobile | varchar(25) | --- | code | int | --- | jobTitle | varchar(50) | --- | birth | date | --- | Note | varchar(255) | --- | Sex | varchar(5) | -CREATE TABLE employees( -empNum INT(11), -lastName VARCHAR(50), -firstName VARCHAR(50), -mobile VARCHAR(25), -code INT, -jobTitle VARCHAR(50), -birth DATE, -Note VARCHAR(255), -Sex VARCHAR(5) -); --- **要求4:**将表employees的mobile字段修改到code字段后面。 -ALTER TABLE employees MODIFY mobile VARCHAR(25) AFTER CODE --- **要求5:**将表employees的birth字段改名为birthday; -ALTER TABLE employees CHANGE birth birthday date; --- **要求6:**修改sex字段,数据类型为char(1)。 -ALTER TABLE employees MODIFY sex char(1); --- **要求7:**删除字段note; -ALTER TABLE employees DROP note; --- **要求8:**增加字段名favoriate_activity,数据类型为varchar(100); -ALTER TABLE employees ADD favoriate_activity VARCHAR(100); --- **要求9:**将表employees的名称修改为 employees_info -ALTER TABLE employees RENAME employees_info; --- ## 第2题 --- --- 1、创建数据库test02db -create DATABASE test02db CHARSET utf8; -USE test02db --- 2、创建表格pet --- | 字段名 | 字段说明 | 数据类型 | --- | ------- | -------- | ----------- | --- | name | 宠物名称 | varchar(20) | --- | owner | 宠物主人 | varchar(20) | --- | species | 种类 | varchar(20) | --- | sex | 性别 | char(1) | --- | birth | 出生日期 | year | --- | death | 死亡日期 | year | -CREATE TABLE pet( -name VARCHAR(20), #宠物名称 -OWNER VARCHAR(20), #宠物主人 -species VARCHAR(20), # 种类 -sex char(1), #性别 -birth YEAR, #出生日期 -death YEAR #死亡日期 -); --- 3、添加记录 --- | name | owner | species | sex | birth | death | --- | ------ | ------ | ------- | ---- | ----- | ----- | --- | Fluffy | harold | Cat | f | 2003 | 2010 | --- | Claws | gwen | Cat | m | 2004 | | --- | Buffy | | Dog | f | 2009 | | --- | Fang | benny | Dog | m | 2000 | | --- | bowser | diane | Dog | m | 2003 | 2009 | --- | Chirpy | | Bird | f | 2008 | | -INSERT into pet VALUES('Fluffy','harold','Cat','f',2003,2010),('Claws','gwen','Cat','m',2004,NULL), - ('Buffy',NULL,'Dog','f',2009,NULL),('Fang','benny','Dog','m',2000,NULL), - ('bowser','diane','Dog','m',2003,2009),('Chirpy',NULL,'Bird','f',2008,NULL); --- 4、 添加字段主人的生日owner_birth。 -ALTER TABLE pet ADD owner_birth DATE --- 5、 将名称为Claws的猫的主人改为kevin -UPDATE pet SET NAME='kevin' where NAME='Claws' --- 6、 将没有死的狗的主人改为duck -UPDATE pet SET name='duck' where species='dog' AND death IS NULL --- 7、 查询没有主人的宠物的名字; -SELECT * FROM pet WHERE OWNER is NULL --- 8、 查询已经死了的cat的姓名,主人,以及去世时间; -SELECT name,OWNER,death FROM pet WHERE death IS NOT NULL AND species='cat' --- 9、 删除已经死亡的狗 -DELETE FROM pet WHERE death is not NULL; --- 10、查询所有宠物信息 -SELECT * FROM pet - - - - --- ## 第3题 --- 1、创建数据库:test03_company - CREATE DATABASE test03_company CHARSET utf8 ; - USE test03_company --- 2、在此数据库下创建如下3表,数据类型,宽度,是否为空根据实际情况自己定义。 --- A. 部门表(department):部门编号(depid),部门名称(depname),部门简介(deinfo);其中部门编号为主键。 -CREATE TABLE department( -depid INT(3) PRIMARY KEY, -depname CHAR(3) NOT NULL, -deinfo char(6) -); --- B. 雇员表(employee):雇员编号(empid),姓名(name),性别(sex),职称(title),出生日期(birthday),所在部门编号(depid);其中 --- * ​ 雇员编号为主键; --- * ​ 部门编号为外键,外键约束等级为(on update cascade 和on delete set null); --- * ​ 性别默认为男; -CREATE TABLE employee( -empid int(4) PRIMARY KEY, -name char(2), -sex char(1)NOT NULL DEFAULT('男'), -title VARCHAR(5), -birthday DATE, -depid int(3), -FOREIGN KEY(depid) REFERENCES department(depid)ON UPDATE CASCADE ON DELETE SET NULL -); --- C. 工资表(salary):雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction)。其中雇员编号为主键。 -CREATE TABLE salary( -empid INT(4)PRIMARY KEY, -basesalary INT, -titlesalary INT, -deduction INT -); --- 3、给工资表(salary)的雇员编号(empid)增加外键约束,外键约束等级为(on update cascade 和on delete cascade) -ALTER TABLE salary ADD FOREIGN KEY (empid) REFERENCES employee (empid) ON UPDATE CASCADE ON DELETE CASCADE; -#添加部门表数据 --- 4、添加数据如下: --- 部门表: --- | 部门编号 | 部门名称 | 部门简介 | --- | -------- | -------- | ------------ | --- | 111 | 生产部 | Null | --- | 222 | 销售部 | Null | --- | 333 | 人事部 | 人力资源管理 | --- 雇员表: --- | 雇员编号 | 姓名 | 性别 | 职称 | 出生日期 | 所在部门编号 | --- | -------- | ---- | ---- | ---------- | ---------- | ------------ | --- | 1001 | 张三 | 男 | 高级工程师 | 1975-1-1 | 111 | --- | 1002 | 李四 | 女 | 助工 | 1985-1-1 | 111 | --- | 1003 | 王五 | 男 | 工程师 | 1978-11-11 | 222 | --- | 1004 | 张六 | 男 | 工程师 | 1999-1-1 | 222 | --- 工资表: --- | 雇员编号 | 基本工资 | 职务工资 | 扣除 | --- | -------- | -------- | -------- | ---- | --- | 1001 | 2200 | 1100 | 200 | --- | 1002 | 1200 | 200 | NULL | --- | 1003 | 2900 | 700 | 200 | --- | 1004 | 1950 | 700 | 150 | -INSERT INTO department VALUES -(111,'生产部',Null),(222,'销售部',Null),(333,'人事部','人力资源管理' ); -INSERT INTO employee VALUES -(1001,'张三','男','高级工程师','1975-1-1',111),(1002 ,'李四','女','助工','1985-1-1',111), -(1003,'王五','男','工程师','1978-11-11',222),( 1004,'张六','男','工程师','1999-1-1',222); -INSERT INTO salary VALUES -(1001,2200,1100,200),(1002,1200,200,NULL),(1003,2900,700,200),(1004,1950,700,150); - --- ## 第4题 --- 1、创建一个数据库:test04_school -CREATE DATABASE test04_school charset utf8; -USE test04_school --- 2、创建如下表格 --- 表1 Department表的定义 --- | **字段名** | **字段描述** | **数据类型** | **主键** | **外键** | **非空** | **唯一** | --- | ---------- | ------------ | ------------ | -------- | -------- | -------- | -------- | --- | DepNo | 部门号 | int(10) | 是 | 否 | 是 | 是 | --- | DepName | 部门名称 | varchar(20) | 否 | 否 | 是 | 否 | --- | DepNote | 部门备注 | Varchar(50) | 否 | 否 | 否 | 否 | -CREATE TABLE Departmen( -DepNo int(10) PRIMARY KEY, -DepName varchar(20) NOT NULL, -DepNote Varchar(50) -); --- 表2 Teacher表的定义 --- | **字段名** | **字段描述** | **数据类型** | **主键** | **外键** | **非空** | **唯一** | --- | ---------- | ------------ | ------------ | -------- | -------- | -------- | -------- | --- | Number | 教工号 | int | 是 | 否 | 是 | 是 | --- | Name | 姓名 | varchar(30) | 否 | 否 | 是 | 否 | --- | Sex | 性别 | varchar(4) | 否 | 否 | 否 | 否 | --- | Birth | 出生日期 | date | 否 | 否 | 否 | 否 | --- | DepNo | 部门号 | int | 否 | 是 | 否 | 否 | --- | Salary | 工资 | float | 否 | 否 | 否 | 否 | --- | Address | 家庭住址 | varchar(100) | 否 | 否 | 否 | 否 | -CREATE TABLE Teacher( -Number INT PRIMARY KEY, -Name VARCHAR(50) NOT NULL, -Sex VARCHAR(4), -Birth DATE, -DepNo INT, -FOREIGN KEY(DepNo) REFERENCES Departmen(DepNo)ON UPDATE CASCADE ON DELETE SET NULL, -Salary FLOAT, -Address VARCHAR(100) -); --- 3、添加记录 --- --- | **DepNo** | **DepName** | **DepNote** | --- | --------- | ----------- | ------------------ | --- | 601 | 软件技术系 | 软件技术等专业 | --- | 602 | 网络技术系 | 多媒体技术等专业 | --- | 603 | 艺术设计系 | 广告艺术设计等专业 | --- | 604 | 管理工程系 | 连锁经营管理等专业 | --- --- | **Number** | **Name** | **Sex** | **Birth** | **DepNo** | **Salary** | **Address** | --- | ---------- | -------- | ------- | ---------- | --------- | ---------- | ------------ | --- | 2001 | Tom | 女 | 1970-01-10 | 602 | 4500 | 四川省绵阳市 | --- | 2002 | Lucy | 男 | 1983-12-18 | 601 | 2500 | 北京市昌平区 | --- | 2003 | Mike | 男 | 1990-06-01 | 604 | 1500 | 重庆市渝中区 | --- | 2004 | James | 女 | 1980-10-20 | 602 | 3500 | 四川省成都市 | --- | 2005 | Jack | 男 | 1975-05-30 | 603 | 1200 | 重庆市南岸区 | -INSERT INTO Departmen VALUES -(601,'软件技术系','软件技术等专业'),(602,'网络技术系','多媒体技术等专业'), -(603,'艺术设计系','广告艺术设计等专业'),(604,'管理工程系','连锁经营管理等专业'); - -INSERT INTO Teacher VALUES -(2001,'Tom','女','1970-01-10',602,4500,'四川省绵阳市'),(2002,'Lucy','男','1983-12-18',601,2500,'北京市昌平区'), -(2003,'Mike','男','1990-06-01',604,1500,'重庆市渝中区'),(2004,'James','女','1980-10-20',602,3500,'四川省成都市'), -(2005,'Jack','男','1975-05-30',603,1200,'重庆市南岸区') ; --- 4、用SELECT语句查询Teacher表的所有记录。 -SELECT * FROM Teacher -``` - -- Gitee From 69d9c65c9928e36a777368d94bc79a5bc157eaa9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 28 Feb 2023 15:25:07 +0000 Subject: [PATCH 5/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2003?= =?UTF-8?q?=20=E6=9E=97=E5=B1=95/20230222=E5=9F=BA=E7=A1=80=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=5F=E8=BF=90=E7=AE=97=E7=AC=A6.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...2_\350\277\220\347\256\227\347\254\246.md" | 89 ------------------- 1 file changed, 89 deletions(-) delete mode 100644 "03 \346\236\227\345\261\225/20230222\345\237\272\347\241\200\346\237\245\350\257\242_\350\277\220\347\256\227\347\254\246.md" diff --git "a/03 \346\236\227\345\261\225/20230222\345\237\272\347\241\200\346\237\245\350\257\242_\350\277\220\347\256\227\347\254\246.md" "b/03 \346\236\227\345\261\225/20230222\345\237\272\347\241\200\346\237\245\350\257\242_\350\277\220\347\256\227\347\254\246.md" deleted file mode 100644 index 58c4b7e..0000000 --- "a/03 \346\236\227\345\261\225/20230222\345\237\272\347\241\200\346\237\245\350\257\242_\350\277\220\347\256\227\347\254\246.md" +++ /dev/null @@ -1,89 +0,0 @@ -笔记 - -查询多个字段 -SELECT 字段1,字段2,字段3 ...FROM 表名 -SELECT * FROM 表名 - -设置别名 -SELECT 字段1[AS 别名1],字段2[AS 别名2] ... FROM 表名 - -去除重复记录 -SELECT DISTINCT 字段列表 FROM 表名 - -条件查询(where)>, >= ,< ,<= ,<>,<=>,like,between...and,in,and,or - -```sql -CREATE DATABASE caogao charset utf8; -USE caogao ; -CREATE TABLE employee( - id INT, - `name` VARCHAR(20), - sex VARCHAR(20), - tel VARCHAR(20), - addr VARCHAR(50), - salary FLOAT -); -DROP TABLE employee -#添加信息 -INSERT INTO employee(id,`name`,sex,tel,addr,salary)VALUES -(10001,'张一一','男','13456789000','广东韶关',10010.58), -(10002,'刘小红','女','13454319000','广东江门',12010.21), -(10003,'李四','男','0751-1234567','广东佛山',10040.11), -(10004,'刘小强','男','0755-5555555','广东深圳',15010.23), -(10005,'王艳','女',NULL,'广东广州',14050.16); --- **要求1:**查询出薪资在12000~13000之间的员工信息。 -SELECT * FROM employee WHERE salary BETWEEN 12000 AND 13000; --- **要求2:**查询出姓“刘”的员工的工号,姓名,家庭住址。 -SELECT id,`name`,addr FROM employee WHERE NAME LIKE '刘%' --- **要求3:**将“李四”的家庭住址改为“广东韶关” -UPDATE employee SET addr='广东韶关' WHERE name='李四'; --- **要求4:**查询出名字中带“小”的员工 -SELECT * FROM employee WHERE `name` LIKE '%小%'; --- **要求5:**查询出薪资高于11000的男员工信息 -SELECT * FROM employee WHERE salary >11000 AND sex = '男'; --- **要求6:**查询没有登记电话号码的员工 -SELECT name FROM employee WHERE tel IS NULL; --- **要求7:**查询薪资高于12000或者家是广东深圳、广州的男员工 -SELECT * FROM employee WHERE salary>12000 AND sex = '男' OR (addr = '广东深圳'OR'广东广州') ; --- **要求8:**查询每个员工的年薪,显示“姓名、年薪” -SELECT `name` AS '姓名', salary*12 AS '年薪' FROM employee - - -CREATE TABLE `countries_info`( - `name` VARCHAR(100), - `continent` VARCHAR(100), - `area` INT, - population INT, - gdp BIGINT -); - -INSERT INTO countries_info VALUES -('Afghanistan','Asia',652230,25500100,20343000000), -('Albania','Europe',28748,2831741,12960000000), -('Algeria','Africa',2381741,37100000,188681000000), -('Andorra','Europe',468,78115,3712000000), -('Angola','Africa',1246700,20609294,100990000000); - --- **要求1:** 查询大国 的国家名称、人口和面积。 -SELECT `name`,`population`,`area` FROM `countries_info` --- 如果一个国家满足下述两个条件之一,则认为该国是 大国 : --- - 面积至少为 300万平方公里(即,3000000 km2) --- - 人口至少为 2500 万(即 25000000) -SELECT`name`AS '大国',`population`,`area` FROM `countries_info` WHERE area>=3000000 OR population >=25000000; --- **要求2:**查询属于亚洲的国家名称、所属大陆、面积、人口和 GDP 值 -SELECT * FROM `countries_info` WHERE `continent`='Asia'; --- **要求3:**查询国土面积不足1万平方公里且人口不走10万人的国家信息 -SELECT * FROM `countries_info` WHERE `area`<10000 AND population<100000; --- **要求4:**查询国家名字中包含“o“字母的国家信息 -SELECT `name` FROM `countries_info` WHERE `name` LIKE'%o%' --- **要求5:**查询GDP值超过10000000000的国家信息 -SELECT * FROM `countries_info` WHERE gdp >10000000000; --- **要求6:**查询每个国家的人均贡献GDP值(GDP/人口总数)并显示为“国家名、人口、GDP值、人均贡献GDP值” -SELECT `name` AS '国家名',population AS '人口',gdp AS 'GDP值',gdp / population AS '人均贡献GDP值' FROM `countries_info`; --- **要求7:**查询人均贡献GDP值低于1000的国家信息。 -SELECT * FROM `countries_info` WHERE (gdp / population)<1000; --- **要求8:**查询每个国家的人均国土面积(面积/人口总数)并显示为“国家名、面积、人口、人均国土面积值” -SELECT `name` AS '国家名',`area` AS '面积',population AS '人口',`area`/population AS '人均国土面积值'FROM `countries_info`; - -``` - -- Gitee From 3ecc81798f8a2bf0125f0d854a997edd8188f35c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 28 Feb 2023 15:25:14 +0000 Subject: [PATCH 6/9] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=2003?= =?UTF-8?q?=20=E6=9E=97=E5=B1=95/MySQL=E7=9A=844=E4=B8=AA=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E7=9A=84=E6=89=80=E6=9C=89=E7=AC=94=E8=AE=B0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...00\346\234\211\347\254\224\350\256\260.md" | 208 ------------------ 1 file changed, 208 deletions(-) delete mode 100644 "03 \346\236\227\345\261\225/MySQL\347\232\2044\344\270\252\350\257\255\350\250\200\347\232\204\346\211\200\346\234\211\347\254\224\350\256\260.md" diff --git "a/03 \346\236\227\345\261\225/MySQL\347\232\2044\344\270\252\350\257\255\350\250\200\347\232\204\346\211\200\346\234\211\347\254\224\350\256\260.md" "b/03 \346\236\227\345\261\225/MySQL\347\232\2044\344\270\252\350\257\255\350\250\200\347\232\204\346\211\200\346\234\211\347\254\224\350\256\260.md" deleted file mode 100644 index 0caef23..0000000 --- "a/03 \346\236\227\345\261\225/MySQL\347\232\2044\344\270\252\350\257\255\350\250\200\347\232\204\346\211\200\346\234\211\347\254\224\350\256\260.md" +++ /dev/null @@ -1,208 +0,0 @@ - - -# 前言 - -首先要下载MySQL和navicat或者别的图形化工具 - -# DDL - -```sql -cmd界面 -mysql -H主机 -P端口号 -u 用户名 -p -password:密码 --- 登录用户 - --------------------------------------------------------------------------- -数据库操作 -SHOW DATABASES -- 查看所有数据库 -CREATE DATABASE 数据库名 -- 创建数据库 -USE 数据库名 -- 使用数据库 -SELECT DATABASE(): -- 查看当前数据库 -DROP DATABASE 数据库名 -- 删除数据库 - --------------------------------------------------------------------------- -表操作 -SHOW TABLES -- 查看所有表 -CREATE TABLE 表名( - 字段 字段类型, - 字段 字段类型 -); -- 创建表 -DESC 表名 -- 查看表内字段类型 -SHOW CREATE TABLE 表名 -- 查看该表的字节类型(utf8) -DROP TABLE 表名; -- 删除该表 - --------------------------------------------------------------------------- -ALTER TABLE 表名 RENAME TO 新表名 -- 修改表名 -ALTER TABLE 表名 DROP 字段名 -- 删除字段 -ALTER TABLE 表名 ADD 字段名 类型(长度) -- 添加字段 -ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度) -- 修改字段类型 -ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) -- 修改字段名和字段类型 - -``` - - - -# 约束 - -```mysql -六大约束常与建表配合 --- 建表时设置约束 -CREATE TABLE 表名( - 字段 字段类型 约束种类, - 字段 字段类型 约束种类 -); --------------------------------------------------------------------------- --- 主键约束(primary key) -特点:每一个表只能有一个主键约束,主键约束的字段值是不允许为null,也不允许重复的 -添加:alter table 表名 add primary key (字段) -删除:alter table 表名 drop primary key --------------------------------------------------------------------------- --- 唯一键约束(unique key) -特点:允许为null,不能重复,一个表可以有多个唯一键约束 -添加:alter table 表名 add unique 约束名(字段) -删除:alter table 表名 drop key 约束名 --------------------------------------------------------------------------- --- 非空约束 (not null) -特点:该字段内不能为空(不能不填) -添加:alter table 表名 modify 列名 数据类型 not null -删除:alter table 表名 modify 列名 数据类型 null --------------------------------------------------------------------------- --- 默认值约束 (DEFAULT '默认值') -特点:如果某个字段,在添加数据时未指定值时,希望不要用NULL处理,而是按照一个默认值处理, -就可以使用默认值约束。基本与not null配合使用 -添加:alter table 表名 alter 列名 set default '值' -删除:alter table 表名 alter 列名 drop default --------------------------------------------------------------------------- --- 自增属性 AUTO_INCREMENT -特点:维护某个字段的值自动增长的一个属性。一个表最多只能有一个字段是自增的,自增的字段必须是整数类型,自增的字段必须是键约束的字段(通常是主键、唯一键)自增字段赋值为null和0的时候,会自增,如果赋值为其他的值,按照你指定的值来。 -添加:alter table 表名 modify 列名 int auto_increment -删除:alter table 表名 modify 列名 int --------------------------------------------------------------------------- --- 外键约束 -约束两个表的关系,或者是一个表的两个字段之间的关系。 -建表时约束: -FOREIGN KEY (子表所要求字段名)REFERENCES 父表(父表所要求字段名) - -主表(父表)和从表(子表) -主表:被依赖,被参考 -从表:依赖别人的,参考别人的 -添加:alter table 表名 add constraint 约束名 foreign key(外键列) -references 主键表(主键列) -删除: -第一步:删除外键 -alter table 表名 drop foreign key 约束名 -第二步:删除索引 -alter table 表名 drop index 索引名 -约束名和索引名一样 - -``` - - - -# DML - -```sql -DML分三大类,为添加【INSERT】,修改【UPDATE】,删除【DELETE】 数据 - --------------------------------------------------------------------------- -INSERT INTO 表名(字段1, 字段2,...) VALUES(值1, 值2,...)[,(值1, 值2,...) ...]; -- 指定字段添加数据 -若字段为空则需填写该表所有对应的所有字段的数据,可批量添加 - --------------------------------------------------------------------------- -UPDATE 表名 SET 字段1 = 值1,字段2 =值2[WHERE 条件]; -- 修改数据 -若where为空则全改 - --------------------------------------------------------------------------- -DELETE FROM 表[WHERE 条件]; -- 删除数据 -若where为空则全删 -``` - - - -# DQL - -```sql -SELECT 字段列表(*为全选) from 表名 [查询的tag] -- 选择你所选择的字段并展示 ----------------------------------------------------------------------------------- --- 查询的tag -LIMIT 分页查询 :起始索引(从0开始)每页展示记录数 (页码-1)*页记录数 -SELECT 字段列表(*为全选) from 表名 LIMIT 起始索引,查询记录数; -(若查询为第一页则起始索引为0或可以省略) - ----------------------------------------------------------------------------------- -WHERE 条件查询 -SELECT 字段列表(*为全选) from 表名 where 字段和条件运算符; -运算符号: -和:and && -或:or || -非:not ! -异或:xor (二选一[有我没他,有他没我]) -比大小: < 小于 , <= 小于等于, > 大于, >= 大于等于, <>与 != 不等于, <=> 安全等于,= 等于 -运算符:+ 加,- 减,* 乘,/ 除(全部保留),div 除(只保留整数,四舍五入),%余(显示余数) -是NULL值:IS NULL -在多少与多少之间:BETWEEN 最小值 AND 最大值 -集合匹配:in(.....) (与in后面的集合中所匹配的值,多选一) - ----------------------------------------------------------------------------------- -ORDER BY 排序字段列表 -SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2; -排序方式: -ASC:升序 (默认值) -DESC:降序 - ----------------------------------------------------------------------------------- -GROUP BY 分组查询 对所查询的结果再次分类,经常与别的查询或聚合函数连用 -SELECT 字段列表 FROM 表名[WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件] - -执行顺序: where > 聚合函数 > having -(分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。) -where与having -区别执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组,而having是分组之后对结果进行 -过滤判断条件不同:where不能对聚合函数进行判断,而having可以。 - ----------------------------------------------------------------------------------- -聚合函数 将一列数据作为一个整体后进行纵向计算 -SELECT 聚合函数(字段列表) FROM 表名; -常见的聚合函数 -count 统计数量 -max 最大值 -min 最小值 -avg 平均值 -sum 求和 - ----------------------------------------------------------------------------------- -别名的设置 -SELECT 字段[as]别名,字段[as]别名 from 表名 -as可省略,别名不会作用与原来的表,只会作用于临时查询的表 -``` - - - -# DCL - -```sql -用户管理 -CREATE USER中用户名@'主机名'IDENTIFIED BY密码 -- 创建用户 -ALTER USER“用户名@主机名 IDENTIFIED WITH mysal native password BY密码 -- 修改用户密码 -DROP USER用户名@'主机名 -- 删除用户 -主机名可使用%通配 --------------------------------------------------------------------------- -SHOW GRANTS FOR'用户名'@'主机名'; -- 查询用户权限 -GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名' -- 授予用户权限 -REVOKE 权限列表 ON 数据库名表名 FROM '用户名'@'主机名' -- 撤销用户权限 -多个权限之间,使用逗号分隔 -授权时,数据库名和表名可以使用 * 进行通配,代表所有 - -权限列表(常用) -ALL, ALL PRIVILEGES 所有权限 -SELECT 查询数据 -INSERT 插入数据 -UPDATE 修改数据 -DELETE 删除数据 -ALTER 修改表 -DROP 删除数据库/表/视图 -CREATE 创建数据库/表 -``` - - - -- Gitee From b4440399db0b9f96585c8719ff71eebf0f2af8e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 28 Feb 2023 23:25:45 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E6=9E=97=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...50\346\237\245\350\257\242\357\274\211.md" | 225 ++++++++++++++++++ ...00\346\234\211\347\254\224\350\256\260.md" | 49 +++- 2 files changed, 264 insertions(+), 10 deletions(-) create mode 100644 "03 \346\236\227\345\261\225/20230227 \345\205\263\350\201\224\346\237\245\350\257\242\357\274\210\350\201\224\345\220\210\346\237\245\350\257\242\343\200\201\345\244\232\350\241\250\346\237\245\350\257\242\357\274\211.md" diff --git "a/03 \346\236\227\345\261\225/20230227 \345\205\263\350\201\224\346\237\245\350\257\242\357\274\210\350\201\224\345\220\210\346\237\245\350\257\242\343\200\201\345\244\232\350\241\250\346\237\245\350\257\242\357\274\211.md" "b/03 \346\236\227\345\261\225/20230227 \345\205\263\350\201\224\346\237\245\350\257\242\357\274\210\350\201\224\345\220\210\346\237\245\350\257\242\343\200\201\345\244\232\350\241\250\346\237\245\350\257\242\357\274\211.md" new file mode 100644 index 0000000..41bc8bf --- /dev/null +++ "b/03 \346\236\227\345\261\225/20230227 \345\205\263\350\201\224\346\237\245\350\257\242\357\274\210\350\201\224\345\220\210\346\237\245\350\257\242\343\200\201\345\244\232\350\241\250\346\237\245\350\257\242\357\274\211.md" @@ -0,0 +1,225 @@ +# 笔记 + +```sql +关联查询 +-- 内连接:inner join ... on +SELECT <字段列表>FROM A表 INNER JOIN B表 ON A表.关联字段 = B表.关联字段 +结果: A∩B + +---------------------------------------------------------------------------------- +-- 左连接:A left join B on +SELECT <字段列表>FROM A表 LEFT JOIN B表 ON A表.关联字段=B表.关联字段 WHERE A表.关联字段IS NULL(设A为子表) +结果:A-A∩B + +SELECT<字段网表>FROM A赛 LEFT B表 ON A表,关联字段B表.关联字段 +结果:A+A∩B + +---------------------------------------------------------------------------------- +-- 右连接:A right join B on +SELECT <字段列表> +FROM A表 RIGHT JOIN B表 ON A表,关联字段=B表,关联字段 WHERE A表.关联字段IS NULL(设A为子表) +结果:B-B∩A + +SELECT <字段列表> +FROM A表 RIGHT JOIN B表 +ON A表,关联字段 = B表,关联字段 +结果:B+B∩A + +---------------------------------------------------------------------------------- +-- 全外连接 +MySQL中用 结果A-A∩B UNION 结果B-B∩A +其他数据库: SELECT <字段列表> +FROM A表 FULL JOIN B表 +ON A表文联字段 = B表,关联字段 +WHERE A表关联字段IS NULL +OR B表关联字段IS NULL +结果:A+B-2(B∩A) + +---------------------------------------------------------------------------------- +-- 子查询 +用于偏复杂的查询 +格式 +select 字段列表 from 表名 where 条件(select 字段列表 from 表名 where 条件); +``` + + + +# 作业 + +```sql +CREATE DATABASE cg charset utf8; +use cg; +CREATE TABLE Student( +Sno varchar (20) NOT NULL PRIMARY KEY, +Sname varchar (20) NOT NULL, +Ssex varchar (20) NOT NULL, +Sbirthday datetime, +Class varchar (20) +); + +CREATE TABLE Course( +Cno varchar (20) NOT NULL PRIMARY KEY, +Cname varchar (20) NOT NULL, +Tno varchar (20)NOT NULL, +FOREIGN KEY(Tno)REFERENCES Teacher(Tno) +); + +CREATE TABLE Score( +Sno varchar (20) NOT NULL, +Cno varchar (20) NOT NULL, +Degree Decimal(4,1), +FOREIGN KEY (Sno)REFERENCES Student(Sno), +FOREIGN KEY (Cno)REFERENCES Course(Cno) +); + +CREATE TABLE Teacher( +Tno varchar (20) NOT NULL PRIMARY KEY, +Tname varchar (20) NOT NULL, +Tsex varchar (20) NOT NULL, +Tbirthday datetime , +Prof varchar (20) , +Depart varchar (20) NOT NULL +); + +INSERT INTO Student VALUES +(108,'曾华','男','1977-9-1',95033), +(105,'匡明','男','1975-10-2',95031), +(107,'王丽','女','1976-1-23',95033), +(101,'李军','男','1976-2-20',95033), +(109,'王芳','女','1975-2-10',95031), +(103,'陆君','男','1974-6-3',95031); + +INSERT INTO Course VALUES +('3-105','计算机导论','825'), +('3-245','操作系统','804'), +('6-166','数字电路','856'), +('9-888','高等数学','831'); + +INSERT INTO Score VALUES +('103','3-245','86'), +('105','3-245','75'), +('109','3-245','68'), +('103','3-105','92'), +('105','3-105','88'), +('109','3-105','76'), +('101','3-105','64'), +('107','3-105','91'), +('108','3-105','78'), +('101','6-166','85'), +('107','6-166','79'), +('108','6-166','81'); + +INSERT INTO Teacher VALUES +('804','李诚','男','1958-12-2','副教授','计算机系'), +('856','张旭','男','1969-3-12','讲师','电子工程系'), +('825','王萍','女','1972-5-5','助教','计算机系'), +('831','刘冰','女','1977-8-14','助教','电子工程系'); + +-- 查询所有学生,都学了哪些课程,要显示学生信息和课程信息 +SELECT Student.*,Course.* FROM Student INNER JOIN Score on Student.Sno=Score.Sno LEFT JOIN Course on Score.Cno=Course.Cno; + +-- 查询没有学生的教师的所有信息①  +SELECT Teacher.* FROM Teacher LEFT JOIN Course on Teacher.Tno=Course.Tno LEFT JOIN Score on Course.Cno=Score.Cno LEFT JOIN Student on Student.Sno=Score.Sno WHERE Score.Sno is null; + +-- 查询Score表中的最高分的学生学号和课程号。 +SELECT Sno,Cno FROM Score WHERE Degree = (SELECT MAX(Degree) FROM Score); + + +-- 查询所有学生的Sname、Cno和Degree列。 +SELECT Sname,Cno,Degree FROM Score INNER JOIN Student ON Score.Sno = Student.Sno; + + +-- 查询所有学生的Sno、Cname和Degree列。 +SELECT Sno,Cname,Degree FROM Score INNER JOIN Course ON Score.Cno=Course.Cno ; + + +-- 查询所有学生的Sname、Cname和Degree列。 +SELECT Sname,Cname,Degree FROM Student,Course,Score WHERE Student.Sno=Score.Sno AND Course.Cno=Score.Cno; + + +-- 查询“95033”班学生的平均分。 +SELECT Class,avg(Degree) FROM Score INNER JOIN Student ON Score.Sno=Student.Sno WHERE Class=95033; + + +-- 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。 +SELECT * FROM Score WHERE Degree>(SELECT Degree FROM Score WHERE Sno = '109' AND Cno = '3-105' ) AND Cno = '3-105'; + +-- 查询score中选学多门课程的同学中分数为非最高分成绩的记录。 +select * from Score a where Degree <(select MAX(degree) from Score b where a.Cno=b.Cno) and Sno in(select Sno from Score group by Sno having count(*)>1); + +-- 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。 +SELECT * FROM Score WHERE Degree >(SELECT Degree FROM Score WHERE Sno='109' AND Cno='3-105'); + + +-- 查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。 +SELECT Sno,Sname,Sbirthday FROM Student WHERE Sbirthday=(SELECT Sbirthday FROM Student WHERE Sno='108'); + + +-- 查询“张旭“教师任课的学生成绩。 +SELECT Sno,Degree FROM Score WHERE Cno=(SELECT Cno FROM Course INNER JOIN Teacher ON Course.Tno= Teacher.Tno WHERE Tname='张旭' ); + + +-- 查询选修某课程的同学人数多于5人的教师姓名。 +SELECT Tname FROM Teacher WHERE Tno=(SELECT Tno FROM Course WHERE Cno=(SELECT Cno FROM Score GROUP BY Cno HAVING COUNT(Cno)>5)); + +-- 查询出“计算机系“教师所教课程的成绩表。 + select sno,Cno ,Degree from Score where Cno in +(SELECT Cno FROM Course WHERE Tno IN (SELECT Tno FROM Teacher WHERE Depart='计算机系')); + + +-- 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。 +SELECT Tname,Prof FROM Teacher WHERE Depart='计算机系'OR Depart='电子工程系'; + + +-- 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 +SELECT Cno,Sno,Degree FROM Score WHERE Cno='3-105' AND Degree>(SELECT max(Degree) FROM Score WHERE Cno= '3-245'); + + +-- 查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree. +SELECT Cno,Sno,Degree FROM Score WHERE Cno='3-105' AND Degree>(SELECT max(Degree) FROM Score WHERE Cno= '3-245'); + + +-- 查询成绩比该课程平均成绩低的同学的成绩表。 +SELECT Cno,Sno,Degree FROM Score WHERE + + +-- 查询所有任课教师的Tname和Depart. + select Sno,Cno,Degree from Score a where a.Degree<(select AVG(Degree) from Score b where a.Cno=b.Cno); + + +-- 查询所有未讲课的教师的Tname和Depart. + select Tname,Depart from Teacher where Tname not in (select distinct Tname from Teacher,Course,Score where Teacher.Tno=Course.Tno and Course.Cno=Score.Cno); + + +-- 查询“男”教师及其所上的课程。 +SELECT Tname,Depart FROM Teacher WHERE Tsex = '男'; + + +-- 查询最高分同学的Sno、Cno和Degree列。 + select Sno,Cno,Degree from Score where degree=(select MAX(Degree)from Score); + + +-- 查询和“李军”同性别的所有同学的Sname. +SELECT Sname FROM Student WHERE Ssex = (SELECT Ssex FROM Student WHERE Sname = '李军')and + Sname not in ('李军'); + + +-- 查询和“李军”同性别并同班的同学Sname. +SELECT Sname FROM Student +WHERE +Ssex= (SELECT Ssex FROM Student WHERE Sname = '李军' ) +AND +class= (SELECT class FROM Student WHERE Sname = '李军') +AND +Sname not in ('李军'); + + + +-- 查询所有选修“计算机导论”课程的“男”同学的成绩表。 +SELECT Degree FROM Score +WHERE +Sno IN (SELECT Sno FROM Student WHERE Ssex ='男') +and +Cno = (SELECT Cno FROM Course WHERE Cname='计算机导论'); +``` + diff --git "a/03 \346\236\227\345\261\225/MySQL\347\232\2044\344\270\252\350\257\255\350\250\200\347\232\204\346\211\200\346\234\211\347\254\224\350\256\260.md" "b/03 \346\236\227\345\261\225/MySQL\347\232\2044\344\270\252\350\257\255\350\250\200\347\232\204\346\211\200\346\234\211\347\254\224\350\256\260.md" index 0caef23..cdf4752 100644 --- "a/03 \346\236\227\345\261\225/MySQL\347\232\2044\344\270\252\350\257\255\350\250\200\347\232\204\346\211\200\346\234\211\347\254\224\350\256\260.md" +++ "b/03 \346\236\227\345\261\225/MySQL\347\232\2044\344\270\252\350\257\255\350\250\200\347\232\204\346\211\200\346\234\211\347\254\224\350\256\260.md" @@ -38,13 +38,8 @@ ALTER TABLE 表名 ADD 字段名 类型(长度) -- 添加字段 ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度) -- 修改字段类型 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) -- 修改字段名和字段类型 -``` - - - -# 约束 - -```mysql +------------------------------------------------------------------------- +-- 约束 六大约束常与建表配合 -- 建表时设置约束 CREATE TABLE 表名( @@ -86,15 +81,13 @@ FOREIGN KEY (子表所要求字段名)REFERENCES 父表(父表所要求字 主表(父表)和从表(子表) 主表:被依赖,被参考 从表:依赖别人的,参考别人的 -添加:alter table 表名 add constraint 约束名 foreign key(外键列) -references 主键表(主键列) +添加:alter table 表名 add constraint 约束名 foreign key(外键列) references 主键表(主键列) 删除: 第一步:删除外键 alter table 表名 drop foreign key 约束名 第二步:删除索引 alter table 表名 drop index 索引名 约束名和索引名一样 - ``` @@ -174,6 +167,42 @@ sum 求和 别名的设置 SELECT 字段[as]别名,字段[as]别名 from 表名 as可省略,别名不会作用与原来的表,只会作用于临时查询的表 + +---------------------------------------------------------------------------------- +关联查询 +-- 内连接:inner join ... on +SELECT <字段列表>FROM A表 INNER JOIN B表 ON A表.关联字段 = B表.关联字段 +结果: A∩B + +---------------------------------------------------------------------------------- +-- 左连接:A left join B on +SELECT <字段列表>FROM A表 LEFT JOIN B表 ON A表.关联字段=B表.关联字段 WHERE A表.关联字段IS NULL(设A为子表) +结果:A-A∩B + +SELECT<字段网表>FROM A赛 LEFT B表 ON A表,关联字段B表.关联字段 +结果:A+A∩B + +---------------------------------------------------------------------------------- +-- 右连接:A right join B on +SELECT <字段列表> +FROM A表 RIGHT JOIN B表 ON A表,关联字段=B表,关联字段 WHERE A表.关联字段IS NULL(设A为子表) +结果:B-B∩A + +SELECT <字段列表> +FROM A表 RIGHT JOIN B表 +ON A表,关联字段 = B表,关联字段 +结果:B+B∩A + +---------------------------------------------------------------------------------- +-- 全外连接 +MySQL中用 结果A-A∩B UNION 结果B-B∩A +其他数据库: SELECT <字段列表> +FROM A表 FULL JOIN B表 +ON A表文联字段 = B表,关联字段 +WHERE A表关联字段IS NULL +OR B表关联字段IS NULL +结果:A+B-2(B∩A) + ``` -- Gitee From 0c41a18368a21f04a8cbc6c8cc30c9dd9cf725cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 28 Feb 2023 23:35:33 +0800 Subject: [PATCH 8/9] lz --- ...23\345\222\214\345\210\266\350\241\250.md" | 24 ++ ...55\345\217\245\347\273\203\344\271\240.md" | 240 +++++++++++++++++ ...50\344\270\216\345\241\253\345\200\274.md" | 253 ++++++++++++++++++ ...14\350\277\220\347\256\227\347\254\246.md" | 83 ++++++ 4 files changed, 600 insertions(+) create mode 100644 "03 \346\236\227\345\261\225/20230215 MySQL\347\232\204\345\273\272\345\272\223\345\222\214\345\210\266\350\241\250.md" create mode 100644 "03 \346\236\227\345\261\225/20230216 DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" create mode 100644 "03 \346\236\227\345\261\225/20230220 DDL\345\222\214DML\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274.md" create mode 100644 "03 \346\236\227\345\261\225/20230222 \345\237\272\347\241\200\346\237\245\350\257\242\357\274\214\350\277\220\347\256\227\347\254\246.md" diff --git "a/03 \346\236\227\345\261\225/20230215 MySQL\347\232\204\345\273\272\345\272\223\345\222\214\345\210\266\350\241\250.md" "b/03 \346\236\227\345\261\225/20230215 MySQL\347\232\204\345\273\272\345\272\223\345\222\214\345\210\266\350\241\250.md" new file mode 100644 index 0000000..3622337 --- /dev/null +++ "b/03 \346\236\227\345\261\225/20230215 MySQL\347\232\204\345\273\272\345\272\223\345\222\214\345\210\266\350\241\250.md" @@ -0,0 +1,24 @@ +create + table/databases + charset +字符类型 创建库/表 + +SHOW DATABASES CREATE DATABASE 数据库名 USE 数据库名 SELECT DATABASE(): DROP DATABASE 数据库名 + +SHOW TABLES CREATE TABLE 表名(字段 字段类型,字段 字段类型 ); DESC 表名 SHOW CREATE TABLE 表名 ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO ... ;DROP TABLE 表名; + +```sql +创建库taobao +创建表computer +表里存放: +编号,显示宽度5位,不足的补0 +电脑品牌,定长10 +型号,可变长10 +价格:整数部分限长6,小数2位 + +create database taobao charset utf8; +use taobao; +create table computer( +id int(5)zerofull, +brand chat(10), +model varchar(10), +price float(8,2) +); +``` \ No newline at end of file diff --git "a/03 \346\236\227\345\261\225/20230216 DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" "b/03 \346\236\227\345\261\225/20230216 DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" new file mode 100644 index 0000000..f10b811 --- /dev/null +++ "b/03 \346\236\227\345\261\225/20230216 DDL\345\222\214DML\350\257\255\345\217\245\347\273\203\344\271\240.md" @@ -0,0 +1,240 @@ +笔记 + +ALTER TABLE 表名 MODIFY 主动移动字段名 date AFTER 被动字段 + +移动字段 + +ALTER TABLE 表名 CHANGE 旧字段 新字段 新数据类型 + +修改字段属性 + +ALTER TABLE 表名 add 新字段和它的数据类型 + +增加字段 + +插入数据 + +INSERT INTO 表名(指定字段) VALUES (添加的数据); + +若无指定默认为全添加 + +删除数据 + +ALTER TABLE 表名 DROP 指定字段 + +修改数据 + +UPDATE 表名 set 字段名 where 条件; + +```sql +-- 1、创建数据库test01_market +CREATE DATABASE test01_market +alter database test01_market character set utf8; +-- 2、创建表格customers +USE test01_market +-- | 字段名 | 数据类型 | +-- | --------- | ----------- | +-- | c_num int(11) | +-- | c_name varchar(50) | +-- | c_contact varchar(50) | +-- | c_city varchar(50) | +-- | c_birth date | +CREATE TABLE customers( +c_num int(11), +c_name varchar(50), +c_contact varchar(50), +c_city varchar(50), +c_birth date +); +-- **要求3:**将c_contact字段移动到c_birth字段后面 +ALTER TABLE customers MODIFY c_contact date AFTER c_birth +-- **要求4:**将c_name字段数据类型改为 varchar(70) +ALTER TABLE customers MODIFY c_name VARCHAR(70) +-- **要求5:**将c_contact字段改名为c_phone +ALTER TABLE customers CHANGE c_contact c_phone VARCHAR(50) +-- **要求6:**增加c_gender字段到c_name后面,数据类型为char(1) +ALTER TABLE customers add c_gender char(1) +ALTER TABLE customers MODIFY c_gender date after c_name +-- **要求7:**将表名改为customers_info +ALTER TABLE customers RENAME customers_info +-- **要求8:**删除字段c_city +ALTER TABLE customers_info DROP c_city + + + + +-- ## 第2题 +-- 1、创建数据库test02_library +create database test02_library +alter DATABASE test02_library character set utf8 +USE test02_library +-- 2、创建表格books +-- | 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | +-- | ------- | -------- | ------------- | -------- | ---- | +-- | b_id | 书编号 | int(11) | 否 | 是 | +-- | b_name | 书名 | varchar(50) | 否 | 否 | +-- | authors | 作者 | varchar(100) | 否 | 否 | +-- | price | 价格 | float | 否 | 否 | +-- | pubdate | 出版日期 | year | 否 | 否 | +-- | note | 说明 | varchar(100) | 是 | 否 | +-- | num | 库存 | int(11) | 否 | 否 | +DROP TABLE books +CREATE TABLE books( +b_id int(11) UNIQUE,#书编号 +b_name VARCHAR(50), #书名 +authors varchar(100), #作者 +price float,#价格 +pubdate year, #出版日期 +note varchar(100) NULL, #说明 +num int(11) #库存 +); +-- 3、向books表中插入记录 +-- 1) 指定所有字段名称插入第一条记录 +INSERT INTO books(b_id,b_name,authors,price,pubdate,note,num) VALUES (10,'流浪地球','刘慈欣',30,1997,NULL,8); +-- 2)不指定字段名称插入第二记录 +INSERT INTO books VALUES (55,'55','55',55,55,NULL,55); +-- 3)同时插入多条记录(剩下的所有记录) +INSERT into books VALUES (1,'Tal of AAA','Dickes',23,1995,'novel',11),(2,'EmmaT','Jane lura',35,1993,'joke',22),(3,'Story of Jane','Jane Tim',40,2001,'novel',0),(4,'Lovey Day','George Byron',20,2005,'novel',30),(5,'Old land','Honore Blade',30,2010,'law',0),(6,'The Battle','Upton Sara',30,1999,'medicine',40),(7,'Rose Hood','Richard haggard',28,2008,'cartoon',28); +-- | b_id | b_name | authors | price | pubdate | note | num | +-- | ---- | ------------- | --------------- | ----- | ------- | -------- | ---- | +-- | 1 | Tal of AAA | Dickes | 23 | 1995 | novel | 11 | +-- | 2 | EmmaT | Jane lura | 35 | 1993 | joke | 22 | +-- | 3 | Story of Jane | Jane Tim | 40 | 2001 | novel | 0 | +-- | 4 | Lovey Day | George Byron | 20 | 2005 | novel | 30 | +-- | 5 | Old land | Honore Blade | 30 | 2010 | law | 0 | +-- | 6 | The Battle | Upton Sara | 30 | 1999 | medicine | 40 | +-- | 7 | Rose Hood | Richard haggard | 28 | 2008 | cartoon | 28 | +-- +-- 4、将小说类型(novel)的书的价格都增加5。 +UPDATE books set price=price+5 where note='novel'; +-- 5、将名称为EmmaT的书的价格改为40。 +UPDATE books set price=40 WHERE b_name='EmmaT'; +-- 6、删除库存为0的记录 +DELETE FROM books where num=0; + + + +-- 1、创建数据库test03_bookstore +CREATE DATABASE test03_bookstore; +alter database test03_bookstore character set utf8; +USE test03_bookstore; +-- 2、创建book表 +DROP TABLE book +CREATE TABLE book ( +id int(11) primary key NOT NULL auto_increment, +title varchar(100) NOT NULL, +author varchar(100) NOT NULL, +price double(11,2) NOT NULL, +sales int(11) NOT NULL, +stock int(11) NOT NULL, +img_path varchar(100) NOT NULL +); +-- +----------+--------------+------+-----+---------+----------------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | 自动增量 +-- | title | varchar(100) | NO | | NULL | | +-- | author | varchar(100) | NO | | NULL | | +-- | price | double(11,2) | NO | | NULL | | +-- | sales | int(11) | NO | | NULL | | +-- | stock | int(11) | NO | | NULL | | +-- | img_path | varchar(100) | NO | | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +-- ``` +-- +-- 尝试添加部分模拟数据,参考示例如下: +-- +-- +----+-------------+------------+-------+-------+-------+----------------------------+ +-- | id | title | author | price | sales | stock | img_path | +-- +----+-------------+------------+-------+-------+-------+-----------------------------+ +-- | 1 | 解忧杂货店 | 东野圭吾 | 27.20 | 102 | 98 | upload/books/解忧杂货店.jpg | +-- | 2 | 边城 | 沈从文 | 23.00 | 102 | 98 | upload/books/边城.jpg | +-- +----+---------------+------------+-------+-------+-------+----------------------------+ +INSERT INTO book VALUES(1,'解忧杂货店','东野圭吾',27.20 ,102,98,'upload/books/解忧杂货店.jpg '),(2,'边城','沈从文',23.00,102,98,'upload/books/边城.jpg '); +-- 3、创建用户表users,并插入数据 +CREATE TABLE users( +id int(11) PRIMARY KEY auto_increment, +username varchar(100) UNIQUE, +password varchar(100), + email varchar(100) NULL +); +-- ```mysql+----------+--------------+------+-----+---------+---------- +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | +-- | username | varchar(100) | NO | UNI | NULL | | +-- | password | varchar(100) | NO | | NULL | | +-- | email | varchar(100) | YES | | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +-- 尝试添加部分模拟数据,参考示例如下: +INSERT INTO users VALUES( 1,'admin','112233','admin@mxdx.com'); +-- +----+----------+----------------------------------+--------------------+ +-- | id | username | password | email | +-- +----+----------+----------------------------------+--------------------+ +-- | 1 | admin | 112233 | admin@mxdx.com | +-- +----+----------+----------------------------------+--------------------+ +-- 4、创建订单表orders +DROP TABLE orders +CREATE TABLE orders( +id varchar(100) PRIMARY KEY NOT NULL, +order_time datetime NOT NULL, +total_count int(11) NOT NULL, +total_amount double(11,2) NOT NULL, +state int(11) NOT NULL, +user_id int(11) NOT NULL +); +alter table orders add index(user_id); +-- +--------------+--------------+------+-----+---------+-------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +--------------+--------------+------+-----+---------+-------+ +-- | id | varchar(100) | NO | PRI | NULL | | +-- | order_time | datetime | NO | | NULL | | +-- | total_count | int(11) | NO | | NULL | | +-- | total_amount | double(11,2) | NO | | NULL | | +-- | state | int(11) | NO | | NULL | | +-- | user_id | int(11) | NO | MUL | NULL | | +-- +--------------+--------------+------+-----+---------+-------+ +-- +-- 尝试添加部分模拟数据,参考示例如下: +INSERT INTO orders VALUES('15294258455691','2018-06-20 00:30:45',2,50.2,0,1); +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | id | order_time | total_count | total_amount | state | user_id | +-- +----------------+---------------------+-------------+--------------+-------+---------+ +-- | 15294258455691 | 2018-06-20 00:30:45 | 2 | 50.20 | 0 | 1 | +-- +----------------+---------------------+-------------+--------------+-------+---------+ + +-- +-- 5、创建订单明细表order_items +CREATE TABLE order_items( +id int(11) PRIMARY KEY NOT NULL, +count int(11) NOT NULL, +amount double(11,2) NOT NULL, +title varchar(100) NOT NULL, +author varchar(100) NOT NULL, +price double(11,2) NOT NULL, +img_path varchar(100) NOT NULL, +order_id varchar(100) NOT NULL +); +alter table order_items add index(order_id); +-- +----------+--------------+------+-----+---------+----------------+ +-- | Field | Type | Null | Key | Default | Extra | +-- +----------+--------------+------+-----+---------+----------------+ +-- | id | int(11) | NO | PRI | NULL | auto_increment | +-- | count | int(11) | NO | | NULL | | +-- | amount | double(11,2) | NO | | NULL | | +-- | title | varchar(100) | NO | | NULL | | +-- | author | varchar(100) | NO | | NULL | | +-- | price | double(11,2) | NO | | NULL | | +-- | img_path | varchar(100) | NO | | NULL | | +-- | order_id | varchar(100) | NO | MUL | NULL | | +-- +----------+--------------+------+-----+---------+----------------+ +-- 尝试添加部分模拟数据,参考示例如下: + +INSERT INTO order_items VALUES(1,1,27.20,'解忧杂货店','东野圭吾',27.20,'static/img/default.jpg','15294258455691'),(2,1,23.00,'边城','沈从文',23.00,'static/img/default.jpg','15294258455691'); +-- +----+-------+--------+---------+---------+-------+----------------+----------------+ +-- | id |count| amount| title | author | price | img_path | order_id | +-- +----+-------+--------+------------+----------+-------+----------------+----------------+ +-- | 1 | 1 | 27.20| 解忧杂货店 | 东野圭吾 | 27.20 | static/img/default.jpg|15294258455691 | +-- | 2 | 1 | 23.00| 边城 | 沈从文 | 23.00 | static/img/default.jpg|15294258455691 | +-- +----+-------+--------+------------+----------+-------+------------+----------------+ +``` \ No newline at end of file diff --git "a/03 \346\236\227\345\261\225/20230220 DDL\345\222\214DML\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274.md" "b/03 \346\236\227\345\261\225/20230220 DDL\345\222\214DML\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274.md" new file mode 100644 index 0000000..7003614 --- /dev/null +++ "b/03 \346\236\227\345\261\225/20230220 DDL\345\222\214DML\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274.md" @@ -0,0 +1,253 @@ +笔记 + +主键约束(primary key) 特点:每一个表只能有一个主键约束,主键约束的字段值是不允许为null,也不允许重复的 + +唯一键约束(unique key) + +特点:允许为null,不能重复,一个表可以有多个唯一键约束 + +非空约束 (not null) + +默认值约束 (DEFAULT '默认值') 如果某个字段,在添加数据时未指定值时,希望不要用NULL处理,而是按照一个默认值处理, 就可以使用默认值约束。基本与not null配合使用 + +外键约束 约束两个表的关系,或者是一个表的两个字段之间的关系。 + +FOREIGN KEY (子表所要求字段名)REFERENCES 父表(父表所要求字段名) + +(1)主表(父表)和从表(子表) 主表:被依赖,被参考 从表:依赖别人的,参考别人的 + +自增属性 AUTO_INCREMENT 维护某个字段的值自动增长的一个属性。 一个表最多只能有一个字段是自增的 自增的字段必须是整数类型 自增的字段必须是键约束的字段(通常是主键、唯一键)自增字段赋值为null和0的时候,会自增, 如果赋值为其他的值,按照你指定的值来。 + +```sql +-- ## 第1题 +-- 1、创建数据库test01_company +CREATE database test01_company charset utf8 +-- 2、创建表格offices +use test01_company +CREATE TABLE test01_company( +officeCode int, +city varchar(30), +address varchar(50), +country varchar(50), +postalCode varchar(25) +); +-- | 字段名 | 数据类型 | +-- | ---------- | ----------- | +-- | officeCode | int | +-- | city | varchar(30) | +-- | address | varchar(50) | +-- | country | varchar(50) | +-- | postalCode | varchar(25) | +-- +-- 3、创建表格employees +-- | 字段名 | 数据类型 | +-- | --------- | ------------- | +-- | empNum | int(11) | +-- | lastName | varchar(50) | +-- | firstName | varchar(50) | +-- | mobile | varchar(25) | +-- | code | int | +-- | jobTitle | varchar(50) | +-- | birth | date | +-- | Note | varchar(255) | +-- | Sex | varchar(5) | +CREATE TABLE employees( +empNum INT(11), +lastName VARCHAR(50), +firstName VARCHAR(50), +mobile VARCHAR(25), +code INT, +jobTitle VARCHAR(50), +birth DATE, +Note VARCHAR(255), +Sex VARCHAR(5) +); +-- **要求4:**将表employees的mobile字段修改到code字段后面。 +ALTER TABLE employees MODIFY mobile VARCHAR(25) AFTER CODE +-- **要求5:**将表employees的birth字段改名为birthday; +ALTER TABLE employees CHANGE birth birthday date; +-- **要求6:**修改sex字段,数据类型为char(1)。 +ALTER TABLE employees MODIFY sex char(1); +-- **要求7:**删除字段note; +ALTER TABLE employees DROP note; +-- **要求8:**增加字段名favoriate_activity,数据类型为varchar(100); +ALTER TABLE employees ADD favoriate_activity VARCHAR(100); +-- **要求9:**将表employees的名称修改为 employees_info +ALTER TABLE employees RENAME employees_info; +-- ## 第2题 +-- +-- 1、创建数据库test02db +create DATABASE test02db CHARSET utf8; +USE test02db +-- 2、创建表格pet +-- | 字段名 | 字段说明 | 数据类型 | +-- | ------- | -------- | ----------- | +-- | name | 宠物名称 | varchar(20) | +-- | owner | 宠物主人 | varchar(20) | +-- | species | 种类 | varchar(20) | +-- | sex | 性别 | char(1) | +-- | birth | 出生日期 | year | +-- | death | 死亡日期 | year | +CREATE TABLE pet( +name VARCHAR(20), #宠物名称 +OWNER VARCHAR(20), #宠物主人 +species VARCHAR(20), # 种类 +sex char(1), #性别 +birth YEAR, #出生日期 +death YEAR #死亡日期 +); +-- 3、添加记录 +-- | name | owner | species | sex | birth | death | +-- | ------ | ------ | ------- | ---- | ----- | ----- | +-- | Fluffy | harold | Cat | f | 2003 | 2010 | +-- | Claws | gwen | Cat | m | 2004 | | +-- | Buffy | | Dog | f | 2009 | | +-- | Fang | benny | Dog | m | 2000 | | +-- | bowser | diane | Dog | m | 2003 | 2009 | +-- | Chirpy | | Bird | f | 2008 | | +INSERT into pet VALUES('Fluffy','harold','Cat','f',2003,2010),('Claws','gwen','Cat','m',2004,NULL), + ('Buffy',NULL,'Dog','f',2009,NULL),('Fang','benny','Dog','m',2000,NULL), + ('bowser','diane','Dog','m',2003,2009),('Chirpy',NULL,'Bird','f',2008,NULL); +-- 4、 添加字段主人的生日owner_birth。 +ALTER TABLE pet ADD owner_birth DATE +-- 5、 将名称为Claws的猫的主人改为kevin +UPDATE pet SET NAME='kevin' where NAME='Claws' +-- 6、 将没有死的狗的主人改为duck +UPDATE pet SET name='duck' where species='dog' AND death IS NULL +-- 7、 查询没有主人的宠物的名字; +SELECT * FROM pet WHERE OWNER is NULL +-- 8、 查询已经死了的cat的姓名,主人,以及去世时间; +SELECT name,OWNER,death FROM pet WHERE death IS NOT NULL AND species='cat' +-- 9、 删除已经死亡的狗 +DELETE FROM pet WHERE death is not NULL; +-- 10、查询所有宠物信息 +SELECT * FROM pet + + + + +-- ## 第3题 +-- 1、创建数据库:test03_company + CREATE DATABASE test03_company CHARSET utf8 ; + USE test03_company +-- 2、在此数据库下创建如下3表,数据类型,宽度,是否为空根据实际情况自己定义。 +-- A. 部门表(department):部门编号(depid),部门名称(depname),部门简介(deinfo);其中部门编号为主键。 +CREATE TABLE department( +depid INT(3) PRIMARY KEY, +depname CHAR(3) NOT NULL, +deinfo char(6) +); +-- B. 雇员表(employee):雇员编号(empid),姓名(name),性别(sex),职称(title),出生日期(birthday),所在部门编号(depid);其中 +-- * 雇员编号为主键; +-- * 部门编号为外键,外键约束等级为(on update cascade 和on delete set null); +-- * 性别默认为男; +CREATE TABLE employee( +empid int(4) PRIMARY KEY, +name char(2), +sex char(1)NOT NULL DEFAULT('男'), +title VARCHAR(5), +birthday DATE, +depid int(3), +FOREIGN KEY(depid) REFERENCES department(depid)ON UPDATE CASCADE ON DELETE SET NULL +); +-- C. 工资表(salary):雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction)。其中雇员编号为主键。 +CREATE TABLE salary( +empid INT(4)PRIMARY KEY, +basesalary INT, +titlesalary INT, +deduction INT +); +-- 3、给工资表(salary)的雇员编号(empid)增加外键约束,外键约束等级为(on update cascade 和on delete cascade) +ALTER TABLE salary ADD FOREIGN KEY (empid) REFERENCES employee (empid) ON UPDATE CASCADE ON DELETE CASCADE; +#添加部门表数据 +-- 4、添加数据如下: +-- 部门表: +-- | 部门编号 | 部门名称 | 部门简介 | +-- | -------- | -------- | ------------ | +-- | 111 | 生产部 | Null | +-- | 222 | 销售部 | Null | +-- | 333 | 人事部 | 人力资源管理 | +-- 雇员表: +-- | 雇员编号 | 姓名 | 性别 | 职称 | 出生日期 | 所在部门编号 | +-- | -------- | ---- | ---- | ---------- | ---------- | ------------ | +-- | 1001 | 张三 | 男 | 高级工程师 | 1975-1-1 | 111 | +-- | 1002 | 李四 | 女 | 助工 | 1985-1-1 | 111 | +-- | 1003 | 王五 | 男 | 工程师 | 1978-11-11 | 222 | +-- | 1004 | 张六 | 男 | 工程师 | 1999-1-1 | 222 | +-- 工资表: +-- | 雇员编号 | 基本工资 | 职务工资 | 扣除 | +-- | -------- | -------- | -------- | ---- | +-- | 1001 | 2200 | 1100 | 200 | +-- | 1002 | 1200 | 200 | NULL | +-- | 1003 | 2900 | 700 | 200 | +-- | 1004 | 1950 | 700 | 150 | +INSERT INTO department VALUES +(111,'生产部',Null),(222,'销售部',Null),(333,'人事部','人力资源管理' ); +INSERT INTO employee VALUES +(1001,'张三','男','高级工程师','1975-1-1',111),(1002 ,'李四','女','助工','1985-1-1',111), +(1003,'王五','男','工程师','1978-11-11',222),( 1004,'张六','男','工程师','1999-1-1',222); +INSERT INTO salary VALUES +(1001,2200,1100,200),(1002,1200,200,NULL),(1003,2900,700,200),(1004,1950,700,150); + +-- ## 第4题 +-- 1、创建一个数据库:test04_school +CREATE DATABASE test04_school charset utf8; +USE test04_school +-- 2、创建如下表格 +-- 表1 Department表的定义 +-- | **字段名** | **字段描述** | **数据类型** | **主键** | **外键** | **非空** | **唯一** | +-- | ---------- | ------------ | ------------ | -------- | -------- | -------- | -------- | +-- | DepNo | 部门号 | int(10) | 是 | 否 | 是 | 是 | +-- | DepName | 部门名称 | varchar(20) | 否 | 否 | 是 | 否 | +-- | DepNote | 部门备注 | Varchar(50) | 否 | 否 | 否 | 否 | +CREATE TABLE Departmen( +DepNo int(10) PRIMARY KEY, +DepName varchar(20) NOT NULL, +DepNote Varchar(50) +); +-- 表2 Teacher表的定义 +-- | **字段名** | **字段描述** | **数据类型** | **主键** | **外键** | **非空** | **唯一** | +-- | ---------- | ------------ | ------------ | -------- | -------- | -------- | -------- | +-- | Number | 教工号 | int | 是 | 否 | 是 | 是 | +-- | Name | 姓名 | varchar(30) | 否 | 否 | 是 | 否 | +-- | Sex | 性别 | varchar(4) | 否 | 否 | 否 | 否 | +-- | Birth | 出生日期 | date | 否 | 否 | 否 | 否 | +-- | DepNo | 部门号 | int | 否 | 是 | 否 | 否 | +-- | Salary | 工资 | float | 否 | 否 | 否 | 否 | +-- | Address | 家庭住址 | varchar(100) | 否 | 否 | 否 | 否 | +CREATE TABLE Teacher( +Number INT PRIMARY KEY, +Name VARCHAR(50) NOT NULL, +Sex VARCHAR(4), +Birth DATE, +DepNo INT, +FOREIGN KEY(DepNo) REFERENCES Departmen(DepNo)ON UPDATE CASCADE ON DELETE SET NULL, +Salary FLOAT, +Address VARCHAR(100) +); +-- 3、添加记录 +-- +-- | **DepNo** | **DepName** | **DepNote** | +-- | --------- | ----------- | ------------------ | +-- | 601 | 软件技术系 | 软件技术等专业 | +-- | 602 | 网络技术系 | 多媒体技术等专业 | +-- | 603 | 艺术设计系 | 广告艺术设计等专业 | +-- | 604 | 管理工程系 | 连锁经营管理等专业 | +-- +-- | **Number** | **Name** | **Sex** | **Birth** | **DepNo** | **Salary** | **Address** | +-- | ---------- | -------- | ------- | ---------- | --------- | ---------- | ------------ | +-- | 2001 | Tom | 女 | 1970-01-10 | 602 | 4500 | 四川省绵阳市 | +-- | 2002 | Lucy | 男 | 1983-12-18 | 601 | 2500 | 北京市昌平区 | +-- | 2003 | Mike | 男 | 1990-06-01 | 604 | 1500 | 重庆市渝中区 | +-- | 2004 | James | 女 | 1980-10-20 | 602 | 3500 | 四川省成都市 | +-- | 2005 | Jack | 男 | 1975-05-30 | 603 | 1200 | 重庆市南岸区 | +INSERT INTO Departmen VALUES +(601,'软件技术系','软件技术等专业'),(602,'网络技术系','多媒体技术等专业'), +(603,'艺术设计系','广告艺术设计等专业'),(604,'管理工程系','连锁经营管理等专业'); + +INSERT INTO Teacher VALUES +(2001,'Tom','女','1970-01-10',602,4500,'四川省绵阳市'),(2002,'Lucy','男','1983-12-18',601,2500,'北京市昌平区'), +(2003,'Mike','男','1990-06-01',604,1500,'重庆市渝中区'),(2004,'James','女','1980-10-20',602,3500,'四川省成都市'), +(2005,'Jack','男','1975-05-30',603,1200,'重庆市南岸区') ; +-- 4、用SELECT语句查询Teacher表的所有记录。 +``` \ No newline at end of file diff --git "a/03 \346\236\227\345\261\225/20230222 \345\237\272\347\241\200\346\237\245\350\257\242\357\274\214\350\277\220\347\256\227\347\254\246.md" "b/03 \346\236\227\345\261\225/20230222 \345\237\272\347\241\200\346\237\245\350\257\242\357\274\214\350\277\220\347\256\227\347\254\246.md" new file mode 100644 index 0000000..a8a5e64 --- /dev/null +++ "b/03 \346\236\227\345\261\225/20230222 \345\237\272\347\241\200\346\237\245\350\257\242\357\274\214\350\277\220\347\256\227\347\254\246.md" @@ -0,0 +1,83 @@ +笔记 + +查询多个字段 SELECT 字段1,字段2,字段3 ...FROM 表名 SELECT * FROM 表名 + +设置别名 SELECT 字段1[AS 别名1],字段2[AS 别名2] ... FROM 表名 + +去除重复记录 SELECT DISTINCT 字段列表 FROM 表名 + +条件查询(where)>, >= ,< ,<= ,<>,<=>,like,between...and,in,and,or + +```sql +CREATE DATABASE caogao charset utf8; +USE caogao ; +CREATE TABLE employee( + id INT, + `name` VARCHAR(20), + sex VARCHAR(20), + tel VARCHAR(20), + addr VARCHAR(50), + salary FLOAT +); +DROP TABLE employee +#添加信息 +INSERT INTO employee(id,`name`,sex,tel,addr,salary)VALUES +(10001,'张一一','男','13456789000','广东韶关',10010.58), +(10002,'刘小红','女','13454319000','广东江门',12010.21), +(10003,'李四','男','0751-1234567','广东佛山',10040.11), +(10004,'刘小强','男','0755-5555555','广东深圳',15010.23), +(10005,'王艳','女',NULL,'广东广州',14050.16); +-- **要求1:**查询出薪资在12000~13000之间的员工信息。 +SELECT * FROM employee WHERE salary BETWEEN 12000 AND 13000; +-- **要求2:**查询出姓“刘”的员工的工号,姓名,家庭住址。 +SELECT id,`name`,addr FROM employee WHERE NAME LIKE '刘%' +-- **要求3:**将“李四”的家庭住址改为“广东韶关” +UPDATE employee SET addr='广东韶关' WHERE name='李四'; +-- **要求4:**查询出名字中带“小”的员工 +SELECT * FROM employee WHERE `name` LIKE '%小%'; +-- **要求5:**查询出薪资高于11000的男员工信息 +SELECT * FROM employee WHERE salary >11000 AND sex = '男'; +-- **要求6:**查询没有登记电话号码的员工 +SELECT name FROM employee WHERE tel IS NULL; +-- **要求7:**查询薪资高于12000或者家是广东深圳、广州的男员工 +SELECT * FROM employee WHERE salary>12000 AND sex = '男' OR (addr = '广东深圳'OR'广东广州') ; +-- **要求8:**查询每个员工的年薪,显示“姓名、年薪” +SELECT `name` AS '姓名', salary*12 AS '年薪' FROM employee + + +CREATE TABLE `countries_info`( + `name` VARCHAR(100), + `continent` VARCHAR(100), + `area` INT, + population INT, + gdp BIGINT +); + +INSERT INTO countries_info VALUES +('Afghanistan','Asia',652230,25500100,20343000000), +('Albania','Europe',28748,2831741,12960000000), +('Algeria','Africa',2381741,37100000,188681000000), +('Andorra','Europe',468,78115,3712000000), +('Angola','Africa',1246700,20609294,100990000000); + +-- **要求1:** 查询大国 的国家名称、人口和面积。 +SELECT `name`,`population`,`area` FROM `countries_info` +-- 如果一个国家满足下述两个条件之一,则认为该国是 大国 : +-- - 面积至少为 300万平方公里(即,3000000 km2) +-- - 人口至少为 2500 万(即 25000000) +SELECT`name`AS '大国',`population`,`area` FROM `countries_info` WHERE area>=3000000 OR population >=25000000; +-- **要求2:**查询属于亚洲的国家名称、所属大陆、面积、人口和 GDP 值 +SELECT * FROM `countries_info` WHERE `continent`='Asia'; +-- **要求3:**查询国土面积不足1万平方公里且人口不走10万人的国家信息 +SELECT * FROM `countries_info` WHERE `area`<10000 AND population<100000; +-- **要求4:**查询国家名字中包含“o“字母的国家信息 +SELECT `name` FROM `countries_info` WHERE `name` LIKE'%o%' +-- **要求5:**查询GDP值超过10000000000的国家信息 +SELECT * FROM `countries_info` WHERE gdp >10000000000; +-- **要求6:**查询每个国家的人均贡献GDP值(GDP/人口总数)并显示为“国家名、人口、GDP值、人均贡献GDP值” +SELECT `name` AS '国家名',population AS '人口',gdp AS 'GDP值',gdp / population AS '人均贡献GDP值' FROM `countries_info`; +-- **要求7:**查询人均贡献GDP值低于1000的国家信息。 +SELECT * FROM `countries_info` WHERE (gdp / population)<1000; +-- **要求8:**查询每个国家的人均国土面积(面积/人口总数)并显示为“国家名、面积、人口、人均国土面积值” +SELECT `name` AS '国家名',`area` AS '面积',population AS '人口',`area`/population AS '人均国土面积值'FROM `countries_info`; +``` \ No newline at end of file -- Gitee From eaae19f05e47dd5fa245ce4d08d49e8177dd4c5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E5=B1=95?= <1742965070@qq.com> Date: Tue, 7 Mar 2023 14:23:04 +0800 Subject: [PATCH 9/9] 666 --- ...45\350\257\242\347\273\203\344\271\240.md" | 203 ++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 "03 \346\236\227\345\261\225/20230307 \345\255\220\346\237\245\350\257\242\347\273\203\344\271\240.md" diff --git "a/03 \346\236\227\345\261\225/20230307 \345\255\220\346\237\245\350\257\242\347\273\203\344\271\240.md" "b/03 \346\236\227\345\261\225/20230307 \345\255\220\346\237\245\350\257\242\347\273\203\344\271\240.md" new file mode 100644 index 0000000..209ee43 --- /dev/null +++ "b/03 \346\236\227\345\261\225/20230307 \345\255\220\346\237\245\350\257\242\347\273\203\344\271\240.md" @@ -0,0 +1,203 @@ +```sql +CREATE DATABASE caogao charset utf8; +USE caogao; +CREATE TABLE stuinfo ( + stuNO CHAR ( 5 ), + stuName VARCHAR ( 5 ), + stuSex CHAR ( 1 ), + stuAge INT ( 2 ), + stuAddress CHAR ( 4 ), + stuSeat INT ( 1 ) +); +INSERT stuinfo +VALUES + ( 's2501', '张秋利', '男', 20, '美国硅谷', 1 ), + ( 's2502', '李斯文', '女', 18, '湖北武汉', 2 ), + ( 's2503', '马文才', '男', 18, '湖南长沙', 3 ), + ( 's2504', '欧阳俊雄', '女', 21, '湖北武汉', 4 ), + ( 's2505', '梅超风', '男', 20, '湖北武汉', 5 ), + ( 's2506', '陈旋风', '男', 19, '美国硅谷', 6 );-- 学生必修成绩 +CREATE TABLE stuExam ( examNO INT ( 1 ), stuNO CHAR ( 5 ), writtenExam INT ( 3 ), -- +iabExam INT ( 3 ) ); +INSERT stuExam +VALUES + ( 1, 's2501', 50, 70 ), + ( 2, 's2502', 60, 65 ), + ( 3, 's2503', 86, 70 ), + ( 4, 's2504', 40, 80 ), + ( 5, 's2505', 70, 85 ), + ( 6, 's2506', 85, 90 );-- 学生选修成绩 +CREATE TABLE stuMarks ( examNO INT ( 1 ), stuID CHAR ( 5 ), score INT ( 3 ) ); +INSERT stuMarks +VALUES + ( 1, 's2501', 88 ), + ( 2, 's2501', 92 ), + ( 3, 's2501', 53 ), + ( 4, 's2502', 60 ), + ( 5, 's2502', 99 ), + ( 6, 's2503', 82 );-- 在如图的数据表上完成以下题目 +-- 1.查询出年龄比班上平均年龄大的学生的信息 +SELECT + stuAge +FROM + stuinfo +WHERE + stuAge >( + SELECT + avg( stuAge ) + FROM + stuinfo + ); + -- 2.查询出每个学生的学号,姓名,性别和选修课程的最高分(stuMarks) +SELECT + a.stuNO, + a.stuName, + a.stuSex, + max( b.score ) +FROM + stuinfo a + LEFT JOIN stuMarks b ON a.stuNO = b.stuID +GROUP BY + stuNO; + -- 3.查询出每个学生的学号,姓名,性别和考试平均分(stuExam) +SELECT + a.stuNO, + a.stuName, + a.stuSex, + c.b 考试平均分 +FROM + stuinfo a + INNER JOIN ( SELECT stuNO,( writtenExam + iabExam )/ 2 b FROM stuExam GROUP BY examNO ) AS c ON a.stuNO = c.stuNO; + -- 4.查询性别是男并且年龄大于等于20的学生的信息(用两种方法实现:普通查询和子查询) +SELECT + * +FROM + stuinfo +WHERE + stuAge >= 20 + AND stuSex = '男' SELECT + * +FROM + ( SELECT * FROM stuinfo WHERE stuAge >= 20 ) a +WHERE + a.stuSex = '男'; + -- 5.查询出年龄比所有男生年龄都大的女生的信息 +SELECT + * +FROM + stuinfo +WHERE + stuSex = '女' + AND stuAge > ALL ( SELECT stuage FROM stuinfo WHERE stuSex = '男' ); + -- 6.查询出所有选修课程都及格的学生的信息 (stuMarks) +SELECT + * +FROM + stuinfo a + INNER JOIN stuMarks b ON a.stuNO = b.stuID +WHERE + a.stuNO != ( SELECT stuID FROM stuMarks WHERE score < 60 ); + -- 7.查询出参加考试的学生的信息(用表连接,in二种方法做)(stuMarks) +SELECT + * +FROM + stuinfo a + INNER JOIN ( SELECT DISTINCT stuid FROM stuMarks ) b ON a.stuNO = b.stuid; +SELECT + * +FROM + stuinfo +WHERE + stuNO IN ( SELECT DISTINCT stuid FROM stuMarks ); + -- 8.查询出没有参加考试的学生的信息(用表连接,in二种方法做)(stuMarks) +SELECT + * +FROM + stuinfo a + LEFT JOIN ( SELECT DISTINCT stuid FROM stuMarks ) b ON a.stuNO = b.stuid +WHERE + stuid IS NULL; +SELECT + * +FROM + stuinfo +WHERE + stuNO NOT IN ( SELECT DISTINCT stuid FROM stuMarks ); + -- 9.将有一门成绩成绩大于90分的学生的基本信息查询出来(stuMarks) +SELECT + * +FROM + stuinfo +WHERE + stuNO IN ( SELECT stuID FROM stuMarks WHERE score > 90 ); + -- 10.查询出平均成绩在80分以上的学生的基本信息(stuexam) +SELECT + * +FROM + stuinfo +WHERE + stuNO =( + SELECT + stuNO + FROM + stuexam + WHERE + ( writtenExam + iabExam )/ 2 > 80 + ) + -- 11.查询出某同学所有考试成绩比“张秋利”同学所有分数都高的学生基本信息(stuexam) +SELECT + stuNO +FROM + stuexam +WHERE + writtenExam > ( + SELECT + writtenExam + FROM + stuexam AS a + INNER JOIN ( SELECT stuNO FROM stuinfo WHERE stuName = '张秋利' ) AS b ON a.stuNO = b.stuNO + ) + AND iabExam > ( + SELECT + iabExam + FROM + stuexam AS a + INNER JOIN ( SELECT stuNO FROM stuinfo WHERE stuName = '张秋利' ) AS b ON a.stuNO = b.stuNO + ) + -- 12.查询出某同学所有考试成绩只需要比“张秋利”同学某个分数高的学生基本信息(stuMarks) +SELECT + * +FROM + stuinfo a + INNER JOIN ( + SELECT DISTINCT + stuID + FROM + stumarks + WHERE + score > ANY ( + SELECT + score + FROM + stumarks + WHERE + stuID = ( SELECT stuNO FROM stuinfo WHERE stuName = '张秋利' )) + AND stuID != ( SELECT stuNO FROM stuinfo WHERE stuName = '张秋利' )) b ON a.stuNO = b.stuID; + -- 13.查询班上比所有男生年龄都要大的女生的信息 +SELECT + * +FROM + stuinfo +WHERE + stuSex = '女' + AND stuAge > ALL ( SELECT stuAge FROM stuinfo WHERE stuSex = '男' ) + -- 14.查询出只是比某个男生年龄大的女生的信息 +SELECT + * +FROM + stuinfo +WHERE + stuSex = '女' + AND stuAge > ANY ( SELECT stuAge FROM stuinfo WHERE stuSex = '男' ) + +``` -- Gitee