diff --git "a/10 \347\253\240\347\254\221\345\256\271/20230220 SQL\350\257\255\345\217\245 \346\225\260\346\215\256\347\261\273\345\236\213.md" "b/10 \347\253\240\347\254\221\345\256\271/20230220 SQL\350\257\255\345\217\245 \346\225\260\346\215\256\347\261\273\345\236\213.md" deleted file mode 100644 index f93e8bb900d3357525accb94bc262d99f5704a8f..0000000000000000000000000000000000000000 --- "a/10 \347\253\240\347\254\221\345\256\271/20230220 SQL\350\257\255\345\217\245 \346\225\260\346\215\256\347\261\273\345\236\213.md" +++ /dev/null @@ -1,307 +0,0 @@ -# 1、笔记 - -1. ```sql - SQL语句 - DDL(数据定义语言): create(创建) alter(修改) drop(删除) show(展示) - DML(数据操作语言): insert(增加) delete(删除) update(修改) - DQL(数据查询语言): select(查询) - DCL(数据控制语言): grant(授权) commit(确认) rollback(回滚) - ``` - - - -2. ```sql - 增加表字段: - alter table 表名称 add 字段名 数据类型; - 删除表字段: - alter table 表名称 drop 字段名; - 修改字段名称: - alter table 表名称 change 旧字段名 新字段名 数据类型; - 修改数据类型: - alter table 表名称 modify 字段名 新数据类型; - 修改字段顺序: - alter table 表名称 modify 字段名1 数据类型 after 字段名2;(字段1移动到字段2后面) - alter table 表名称 modify 字段名 数据类型 first;(将字段移动到第一位) - 修改表名称 - alter table 旧标明 rename to 新表名; - 删除列的定义 - alter table 表名 drop 字段名; - ``` - -3. ```sql - 修改表数据(无条件) - update 表名 set 字段名 = 新值; - 修改表数据(指定条件) - update 表名 set 字段名 = 新值 where 条件(如 name = 'XXX'); - update 表名 set 字段名 = 新值 where 条件字段名 in (如 where name in('XXX','XXX')) - ``` - -4. ```sql - 删除表数据(无条件) - delete from 表名; - 删除表数据(指定条件 行) - delete from 表名 where 条件(如 id = ); - ``` - -5. ```sql - 数据类型 - 整形:int (int(M):无意义) - int(M) zerofill:不足M位用0补足, - 浮点型:float:小数、单浮点型 - float(M,N):M表示整个数字的长度,N表示小数部分的长度 - 双浮点型: double - double(M,N):与float相同 - 精准型:decimal - 定长字符串:char - 可变字符串:varchar(M) - ``` - - - -# 2、作业 - -```sql --- ## 第1题 -drop database test01_market; --- 1、创建数据库test01_market -create database test01_market charset 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, -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 varchar(50) 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 char(1) after c_name; --- **要求7:**将表名改为customers_info -alter table customers rename to customers_info; --- **要求8:**删除字段c_city -alter table customers_info drop c_city; - - - --- ## 第2题 --- drop database test02_library; --- 1、创建数据库test02_library -create database test02_library charset utf8; --- 2、创建表格books -use test02_library; --- | 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | --- | ------- | -------- | ------------- | -------- | ---- | --- | b_id | 书编号 | int(11) | 否 | 是 | --- | b_name | 书名 | varchar(50) | 否 | 否 | --- | authors | 作者 | varchar(100) | 否 | 否 | --- | price | 价格 | float | 否 | 否 | --- | pubdate | 出版日期 | year | 否 | 否 | --- | note | 说明 | varchar(100) | 是 | 否 | --- | num | 库存 | int(11) | 否 | 否 | -create table books( -b_id int not null comment '书编号', -b_name varchar(50) not null comment '书名', -`authors` varchar(100) not null comment '作者', -price float not null comment '价格', -pubdate year not null comment '出版日期', -note varchar(100) comment '说明', -num int not null comment '库存' -); --- 3、向books表中插入记录 - --- 1) 指定所有字段名称插入第一条记录 --- --- 2)不指定字段名称插入第二记录 - --- 3)同时插入多条记录(剩下的所有记录) --- --- | 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 | -insert into books(b_id,b_name,`authors`,price,pubdate,note,num) values ( -1,'Tal of AAA','Dickes',23,'1995','novel',11 -); -insert into books values( -2,'EmmaT','Jane lura',35,'1993','joke',22 -); -insert into books values(3,'Story of Jane','Jant 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'; -select * from books; - - --- ## 第3题 --- drop database test03_bookstore; --- 1、创建数据库test03_bookstore -create database test03_bookstore charset utf8; --- 2、创建book表 -use test03_bookstore; --- ```mysql --- +----------+--------------+------+-----+---------+----------------+ --- | 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 | | --- +----------+--------------+------+-----+---------+----------------+ --- ``` --- drop table book; -create table book( -id int not null auto_increment, -title varchar(100) not null, -author varchar(100), -price double(11,2) not null, -sales int not null, -stock int not null, -img_path varchar(100) not null, -primary key(`id`) -); --- 尝试添加部分模拟数据,参考示例如下: --- --- ```mysql --- +----+-------------+------------+-------+-------+-------+----------------------------+ --- | 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,并插入数据 --- --- ```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 | | --- +----------+--------------+------+-----+---------+----------------+ --- ``` --- drop table users; -create table users( -id int not null auto_increment, -username varchar(100) not null, -`password` varchar(100) not null, -email varchar(100), -primary key(`id`), -unique key(`username`) -); --- 尝试添加部分模拟数据,参考示例如下: --- --- ```mysql --- +----+----------+----------------------------------+--------------------+ --- | id | username | password | email | --- +----+----------+----------------------------------+--------------------+ --- | 1 | admin | 112233 | admin@mxdx.com | --- +----+----------+----------------------------------+--------------------+ --- ``` -insert into users values(1,'admin','112233','admin@mxdx.com'); --- 4、创建订单表orders --- --- ```mysql --- +--------------+--------------+------+-----+---------+-------+ --- | 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 | | --- +--------------+--------------+------+-----+---------+-------+ --- ``` -create table orders( -id varchar(100) not null, -order_time datetime not null, -total_count int not null, -total_amount double(11,2) not null, -state int not null, -user_id int not null, -primary key(`id`) -); --- 尝试添加部分模拟数据,参考示例如下: --- --- ```mysql --- +----------------+---------------------+-------------+--------------+-------+---------+ --- | id | order_time | total_count | total_amount | state | user_id | --- +----------------+---------------------+-------------+--------------+-------+---------+ --- | 15294258455691 | 2018-06-20 00:30:45 | 2 | 50.20 | 0 | 1 | --- +----------------+---------------------+-------------+--------------+-------+---------+ --- ``` -insert into orders values('15294258455691','2018-06-20 00:30:45',2,50.20,0,1); --- 5、创建订单明细表order_items --- --- ```mysql --- +----------+--------------+------+-----+---------+----------------+ --- | 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 | | --- +----------+--------------+------+-----+---------+----------------+ --- ``` -create table order_items( -id int not null auto_increment, -count int 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, -primary key(`id`) -); --- 尝试添加部分模拟数据,参考示例如下: --- --- ```mysql --- +----+-------+--------+---------+---------+-------+----------------+----------------+ --- | 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 | --- +----+-------+--------+------------+----------+-------+------------+----------------+ -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'); -select * from order_items; -``` - diff --git "a/10 \347\253\240\347\254\221\345\256\271/20230221 \347\272\246\346\235\237.md" "b/10 \347\253\240\347\254\221\345\256\271/20230221 \347\272\246\346\235\237.md" deleted file mode 100644 index e34db4a6933efe65bc5107c53e60c2fd9829c424..0000000000000000000000000000000000000000 --- "a/10 \347\253\240\347\254\221\345\256\271/20230221 \347\272\246\346\235\237.md" +++ /dev/null @@ -1,266 +0,0 @@ -# 1、笔记 - -1. ```sql - 唯一键约束 - unique key;(不重复,但可为空,可以有多个列设置) - 主键约束 - primary key;(不重复,不为空,不能多列) - 复合主键 - primary key(XXX,XXX); - 默认建约束 - not null default 默认值 - 自增属性 - auto_increment primary key(后面必须加主键) - 外键约束 - foreign key (从表的字段) references 主表(被依赖的字段); - foreign key (从表的字段) references 主表(被依赖的字段) on update cascade on delete set null(从表数据随主表数据变换) - alter table 表单 add constraint 外键名称 foreign key (外键字段)references on update cascade on delete cascade; - ``` - - - -# 2、作业 - -```sql -#1、创建数据库test01_company -create database test01_company; -alter database test01_company charset utf8; -use test01_company; -#2、创建表格offices -#| 字段名 | 数据类型 | -#| ---------- | ----------- | -#| officeCode | int | -#| city | varchar(30) | -#| address | varchar(50) | -#| country | varchar(50) | -#| postalCode | varchar(25) | -create table offices( -officeCode int, -city varchar(50), -address varchar(50), -country varchar(50), -postalCode varchar(25) -); -desc offices; -select*from offices; - -#3、创建表格employees -#| 字段名 | 数据类型 | -#| --------- | ------------- | -#| empNum | int(11) | -#| lastName | varchar(50) | -#| firstName | varchar(50) | -#| mobile | varchar(25) | -#| code | int | -#| jobTitle | varchar(50) | -#| birth | date | -#| Note | varchar(255) |l -#| Sex | varchar(5) | -create table employees( -empNum int(11), -lastNum varchar(50), -firstName varchar(50), -mobile varchar(25), -`code` int, -jobTitle varchar(50), -birth date, -Note varchar(255), -Sex varchar(5) -); -desc employees; -select*from employees; -#要求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_in -alter table employees rename employees_info; - -#1、创建数据库test02db -create database test02db; -alter 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'), -('Chitpy',null,'Bird','f','2008',null); -desc pet; -select*from pet; -#4、 添加字段主人的生日owner_birth。 -alter table pet add owner_birth year; -#5、 将名称为Claws的猫的主人改为kevin -update pet set name='kevin' where name='Claws'; -#6、 将没有死的狗的主人改为duck -update pet set `owner`='duck' where species='Dog'and death is null; -#7、 查询没有主人的宠物的名字; -select name from pet where owner is null; -#8、 查询已经死了的cat的姓名,主人,以及去世时间; -select*from pet where death is not null; -#9、 删除已经死亡的狗 -delete from pet where death='2009'; -#10、查询所有宠物信息 -select*from pet; - -#1、创建数据库:test03_company -create database test03_company; -alter database test03_company charset utf8; -use test03_company; -#2、在此数据库下创建如下3表,数据类型,宽度,是否为空根据实际情况自己定义。 -#A.部门表(department):部门编号(depid),部门名称(depname),部门简介(deinfo);其中部门编号为主键。 -create table department( - depid int primary key auto_increment, - depname char(10) not null unique key, - deinfo varchar(200) -); -#| 部门编号 | 部门名称 | 部门简介 | -#| -------- | -------- | ------------ | -#| 111 | 生产部 | Null | -#| 222 | 销售部 | Null | -#| 333 | 人事部 | 人力资源管理 | -insert into department values(111,'生产部',null),(222,'销售部',null),(333,'人事部','人力资源部'); -#B. 雇员表(employee):雇员编号(empid),姓名(name),性别(sex),职称(title),出生日期(birthday),所在部门编号(depid);其中 -#*​雇员编号为主键; -#*部门编号为外键,外键约束等级为(on update cascade 和on delete set null); -#*性别默认为男; -create table employee( -empid int primary key auto_increment, -name varchar(10) not null, -sex enum('男','女') not null default '男', -title varchar(10), -birthday date, -depid int -); - #雇员表: -#| 雇员编号 | 姓名 | 性别 | 职称 | 出生日期 | 所在部门编号 | -#| -------- | ---- | ---- | ---------- | ---------- | ------------ | -#| 1001 | 张三 | 男 | 高级工程师 | 1975-1-1 | 111 | -#| 1002 | 李四 | 女 | 助工 | 1985-1-1 | 111 | -#| 1003 | 王五 | 男 | 工程师 | 1978-11-11 | 222 | -#| 1004 | 张六 | 男 | 工程师 | 1999-1-1 | 222 | -insert into employee values -(1001,'张三','男','高级工程师','1975-1-1',111), -(1002,'李四','女','助工','1985-1-1',111), -(1003,'王五','男','工程师','1978-11-11',222), -(1004,'张六','男','工程师','1999-1-1',222); -alter table employee add constraint kf_employee_depid foreign key (depid) references department(depid) on update cascade on delete cascade; -#C工资表(salary):雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction)。其中雇员编号为主键。 -#3、给工资表(salary)的雇员编号(empid)增加外键约束,外键约束等级为(on update cascade 和on delete cascade) -#| empid |basesalary|titlesarlary| deduction | -#| -------- | -------- | -------- | ---- | -#| 1001 | 2200 | 1100 | 200 | -#| 1002 | 1200 | 200 | NULL | -#| 1003 | 2900 | 700 | 200 | -#| 1004 | 1950 | 700 | 150 | -create table salary( -empid int primary key auto_increment, -basesalary int, -titlesalary int, -deduction int -); -insert into salary values -(1001,2200,1100,200), -(1002,1200,200,null), -(1003,2900,700,200), -(1004,1950,700,150); -desc salary; -select*from salary; -alter table employee add constraint kf_salary_empid foreign key(empid) references salary(empid) on update cascade on delete cascade; - -#1、创建一个数据库:test04_school -create database test04_school; -alter database test04_school charset utf8; -use test04_school; -#2、创建如下表格 -#表1 Department表的定义 -#| **字段名** | **字段描述** | **数据类型** | **主键** | **外键** | **非空** | **唯一** | -#| ---------- | ------------ | ------------ | -------- | -------- | -------- | -------- | -#| DepNo | 部门号 | int(10) | 是 | 否 | 是 | 是 | -#| DepName | 部门名称 | varchar(20) | 否 | 否 | 是 | 否 | -#| DepNote | 部门备注 | Varchar(50) | 否 | 否 | 否 | 否 | -create table Deparment( -DepNo int(10) primary key not null, -DepName varchar(20) not null, -DepNote varchar(20) -); -#3、添加记录 -#| **DepNo** | **DepName** | **DepNote** | -#| --------- | ----------- | ------------------ | -#| 601 | 软件技术系 | 软件技术等专业 | -#| 602 | 网络技术系 | 多媒体技术等专业 | -#| 603 | 艺术设计系 | 广告艺术设计等专业 | -#| 604 | 管理工程系 | 连锁经营管理等专业 | -insert into Deparment values(601,'软件技术系','软件技术等专业'), -(602,'网络技术系','多媒体技术等专业'), -(603,'艺术设计系','广告艺术设计等专业'), -(604,'管理工程系','连锁经营管理等专业'); -#表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(30) not null, -Sex varchar(4), -Birth date, -DepNo int, -Salary float, -Address varchar(100) -); -#| **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 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表的所有记录。 -alter table Teacher add constraint ky_teacher_depno foreign key (DepNo) references Deparment(DepNo) on update cascade on delete cascade; -select*from Teacher; -``` -