From c4db86989c51ca0903daa75d4ec6b571e135a56f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=98=E6=96=87=E8=AF=9A?= <3287861587@qq.com> Date: Mon, 20 Feb 2023 23:55:37 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0230220 DDL\345\222\214DML\350\257\255.md" | 378 ++++++++++++++++++ 1 file changed, 378 insertions(+) create mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230220 DDL\345\222\214DML\350\257\255.md" diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230220 DDL\345\222\214DML\350\257\255.md" "b/08 \345\256\230\346\226\207\350\257\232/20230220 DDL\345\222\214DML\350\257\255.md" new file mode 100644 index 0000000..1f1ff66 --- /dev/null +++ "b/08 \345\256\230\346\226\207\350\257\232/20230220 DDL\345\222\214DML\350\257\255.md" @@ -0,0 +1,378 @@ +# 笔记 + +if not exists 如果不存在 +例:如果没有该名称的数据库则创建名为该名称的数据库,否则跳过 +if existe 如果存在 +例:如果该数据库存在则删除该数据库否则跳过 +修改数据库的编码 +alter database 数据库名 character set 新的数据库名; +添加一个表字段 +alter table 表名称 add 字段名 数据类型; +删除一个字段 +alter table 表名称 change 旧字段名 新字段名 数据类型; +修改一个字段的数据类型 +alter table 表名称 modify 字段名称 新数据类型; + +update 表名称 set 字段名=值 ......无条件执行 + +update 表名称 set 字段名=值.......where 条件 + +删除整个表数据 + +delete from 表名称 delete form 表名称 where 条件 + +修改 + +删除字段 + +alter table 表名称 drop column 字段名 + +增加字段 + +alter table 表名称 add column 字段名 数据类型 after 条件 + +## 第1题 + +1、创建数据库test01_market + +~~~ MYSQL +CREATE DATABASE text01_market; +~~~ + +2、创建表格customers + +~~~ mysql + CREATE TABLE customers( +c_num INT(11), +c_name VARCHAR(50), +c_contact varchar(50), +c_city varchar(50), +c_birth DATE +); +~~~ + + + +| 字段名 | 数据类型 | +| --------- | ----------- | +| c_num | int(11) | +| c_name | varchar(50) | +| c_contact | varchar(50) | +| c_city | varchar(50) | +| c_birth | date | + +**要求3:**将c_contact字段移动到c_birth字段后面 + +~~~ mysql +ALTER TABLE customers MODIFY c_contact VARCHAR(50) AFTER c_birth; +~~~ + +**要求4:**将c_name字段数据类型改为 varchar(70) + +~~~ mysql + ALTER TABLE customers MODIFY c_name VARCHAR(70); +~~~ + +**要求5:**将c_contact字段改名为c_phone + +~~~ mysql +ALTER TABLE customers CHANGE c_contact c_phone VARCHAR(50); +~~~ + +**要求6:**增加c_gender字段到c_name后面,数据类型为char(1) + +~~~ mysql +ALTER TABLE customers ADD c_gender CHAR(1) AFTER c_name; +~~~ + +**要求7:**将表名改为customers_info + +~~~ mysql +ALTER TABLE customers RENAME customers_info; +~~~ + +**要求8:**删除字段c_city + +```mysql +ALTER TABLE customers_info DROP c_city;x  +``` + +## 第2题 + +1、创建数据库test02_library + +~~~ mysql +CREATE DATABASE text02_library; +~~~ + +2、创建表格books + +~~~ mysql +CREATE TABLE books( +b_id int(11), +b_name VARCHAR(50), +`authors` VARCHAR(100), +price FLOAT, +pubdate year, +note VARCHAR(100), +num INT(11) +); +~~~ + + + +| 字段名 | 字段说明 | 数据类型 | 允许为空 | 唯一 | +| ------- | -------- | ------------- | -------- | ---- | +| b_id | 书编号 | int(11) | 否 | 是 | +| b_name | 书名 | varchar(50) | 否 | 否 | +| authors | 作者 | varchar(100) | 否 | 否 | +| price | 价格 | float | 否 | 否 | +| pubdate | 出版日期 | year | 否 | 否 | +| note | 说明 | varchar(100) | 是 | 否 | +| num | 库存 | int(11) | 否 | 否 | + +3、向books表中插入记录 + +1) 指定所有字段名称插入第一条记录 + +~~~ mysql +INSERT INTO books(b_id,b_name,`authors`,price,pubdate,note,num) VALUES (1,'Tal of AAA','Dickes',23,1995,'novel',11); + +~~~ + + + +2)不指定字段名称插入第二记录 + +~~~ mysql +INSERT INTO books VALUES(2,'EmmaT','Jane lura',35,1993,'joke',22); +~~~ + + + +3)同时插入多条记录(剩下的所有记录) + +~~~ mysql +INSERT INTO books(b_id,b_name,`authors`,price,pubdate,note,num) VALUES (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。 + +~~~ mysql +UPDATE books SET price =price+5 WHERE note='novel'; +~~~ + +5、将名称为EmmaT的书的价格改为40。 + +~~~ mysql +UPDATE books SET price=40 WHERE b_name='EmmaT'; +~~~ + +6、删除库存为0的记录 + +```mysql +DELETE FROM books WHERE num=0; +``` + + + +## 第3题 + +1、创建数据库test03_bookstore + +~~~ mysql +CREATE DATABASE text03_bookstore; +~~~ + + + +2、创建book表 + +```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 | | ++----------+--------------+------+-----+---------+----------------+ +``` + +~~~ mysql +CREATE TABLE book( +id INT(11), +title VARCHAR(100), +author VARCHAR(100), +price DOUBLE(11,2), +sales INT(11), +syock int(11), +img_path VARCHAR(100) +); +~~~ + + + +尝试添加部分模拟数据,参考示例如下: + +```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 | ++----+---------------+------------+-------+-------+-------+----------------------------+ +``` + +~~~ mysql +INSERT INTO book VALUES (1,'解忧杂货店','解忧杂货店',27.20,102,98,'static/img/default.jpg'),(2,'边城','沈从文',23.00,102,98,'static/img/default.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 | | ++----------+--------------+------+-----+---------+----------------+ +``` + +~~~ mysql +CREATE TABLE users( +id INT(11), +username VARCHAR(100), +`password` VARCHAR(100), +email VARCHAR(100) +); +~~~ + + + +尝试添加部分模拟数据,参考示例如下: + +```mysql ++----+----------+----------------------------------+--------------------+ +| id | username | password | email | ++----+----------+----------------------------------+--------------------+ +| 1 | admin | 112233 | admin@mxdx.com | ++----+----------+----------------------------------+--------------------+ +``` + +~~~ mysql +INSERT INTO users(id,username,`password`,email) 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 | | ++--------------+--------------+------+-----+---------+-------+ +``` + +~~~ mysql +CREATE TABLE orders( +id varchar(100), +order_time datetime, +total_count int(11), +total_amount double(11,2), +state int(11), +user_id int(11) +); +~~~ + +尝试添加部分模拟数据,参考示例如下: + +```mysql ++----------------+---------------------+-------------+--------------+-------+---------+ +| id | order_time | total_count | total_amount | state | user_id | ++----------------+---------------------+-------------+--------------+-------+---------+ +| 15294258455691 | 2018-06-20 00:30:45 | 2 | 50.20 | 0 | 1 | ++----------------+---------------------+-------------+--------------+-------+---------+ +``` + +~~~ mysql +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 | | ++----------+--------------+------+-----+---------+----------------+ +``` + +~~~ mysql +CREATE TABLE order_items( +id int(11), +`count` int(11), +amount DOUBLE(11,2), +title varchar(100), +author varchar(100), +price double(11,2), +img_path varchar(100), +order_id varchar(100) +); +~~~ + + + +尝试添加部分模拟数据,参考示例如下: + +```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 | ++----+-------+--------+------------+----------+-------+------------+----------------+ +``` + +参考答案: + +```mysql +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'); +``` + -- Gitee From cfe39332f5bfd0c0e55c96e6815bcb489139a86b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=98=E6=96=87=E8=AF=9A?= <3287861587@qq.com> Date: Wed, 22 Feb 2023 17:34:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...73\345\236\213\347\254\224\350\256\260.md" | 243 +++++++++ ...53\345\200\274\344\275\234\344\270\232.md" | 460 ++++++++++++++++++ 2 files changed, 703 insertions(+) create mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230219 \346\225\260\346\215\256\347\261\273\345\236\213\347\254\224\350\256\260.md" create mode 100644 "08 \345\256\230\346\226\207\350\257\232/20230222 DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274\344\275\234\344\270\232.md" diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230219 \346\225\260\346\215\256\347\261\273\345\236\213\347\254\224\350\256\260.md" "b/08 \345\256\230\346\226\207\350\257\232/20230219 \346\225\260\346\215\256\347\261\273\345\236\213\347\254\224\350\256\260.md" new file mode 100644 index 0000000..5e2134e --- /dev/null +++ "b/08 \345\256\230\346\226\207\350\257\232/20230219 \346\225\260\346\215\256\347\261\273\345\236\213\347\254\224\350\256\260.md" @@ -0,0 +1,243 @@ +# MySQL语法 + +1.不分大小写 + +2.一般以;结尾 + +3.库名,表名,字段名(列名),支持英文字母,_,数字 + +4.名称中不要用空格 + +5.名称中,不用sql语句的关键字 + +6.‘ “ `(反引号|飘号),用来标记名称 + +7.--注释,#注释内容,/* */多行注释,(ctel+/) + +8.数值直接写,不用符号包裹,字符串和时间数型用单引号包裹 + +### 数据类型 + +1.约束类型 + +2.规范数据空间的占用(内存) + +## 类型 + +#### 数值型 小数+整数 + +1.整形 int(M)这里的M不是限制长度,单独使用毫无意义,配合zerofill使用(补0) + +2.浮点 float(M,N) double(M,N) M表示限制整数+小数只能存放M长度,N限制小数的长度。如果小数的部分超过了N,会自动截断,并四舍五入。 + +3.定点 decimal(M,N) 默认(10,0),其他同上 + +#### 字符型 + +1.固定长度的 char 默认是1,最大是255 + +2.可变长度的 varchar(M) 这里的M不可缺省 + +#### 时间类型 + +1.data 年月日 + +2.time 时分秒 + +3.year 年 + +4.datatime + +5.timestamp 时间戳 + +#### enum枚举类型 + +类似单选框中的选项,只能选一个。 enum(1,2,3,4,5) + +#### set集合类型 + +类似多选框,可以选0个或是多个,但也只能选里面有的。set(1,2,3,4,5) + +### #一些数据库的属性 + +1.unsigned 无符号的,表示正数不能负数 + +2.null 允许为空。not null 不允许为空。 + +3.default 默认值 + +4.auto_increment 自增 + +## # DDL + +创建数据库 + +```MYSQL +create database 数据库名 charset 字符集; +``` + +查看所有数据库 + +```mysql +show databases; +``` + +查看数据库的定义语句 + +```mysql +show create database +``` + +修改数据库编码 + +```mysql +#修改数据库字符集和校对规则 +ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称 COLLATE 字符集对应校对规则; +``` + +删除数据库 + +```mysql +drop database 数据库名; +``` + +使用数据库 + +```mysql +use 数据库名; +``` + +查看数据库中的所有表格 + +```mysql +use 数据库名; +show tables; +或 +show tables from 数据库名; +``` + +查看指定字段 + +~~~ mysql +select 字段名 [字段名,字段名] from 表格名; +select 字段名 [字段名,字段名] from 表格名 where 条件; +~~~ + + + +创建表格 + +```mysql +create table 数据表名称( + 字段名1 数据类型, + 字段名2 数据类型 + ... +); +``` + +查看表的定义信息 + +```mysql +show create table 表名称; +``` + +查看表结构 + +```mysql +desc 表名称; +``` + +修改表名称 + +```mysql +alter table 旧表名 rename [to] 新表名; +rename table 旧表名称 to 新表名称; +``` + +删除表格 + +```mysql +drop table 表名称; +``` + +删除字段 + +```mysql +alter table 表名称 drop [column] 字段名称; +``` + +增加字段 + +```mysql +alter table 表名称 add [column] 字段名称 数据类型; +alter table 表名称 add [column] 字段名称 数据类型 first; +alter table 表名称 add [column] 字段名称 数据类型 after 另一个字段; +``` + +修改字段的数据类型 + +```mysql +alter table 表名称 modify [column] 字段名称 新的数据类型; +``` + +修改字段名称 + +```mysql +alter table 表名称 change [column] 旧字段名称 新的字段名称 新的数据类型; +``` + +修改字段位置 + +```mysql +alter table 表名称 modify [column] 字段名称 数据类型 first; +alter table 表名称 modify [column] 字段名称 数据类型 after 另一个字段; +``` + +# DML + +添加一条记录到表中 + +```mysql +insert into 表名称 values(值列表);#值列表中的值的顺序、类型、个数必须与表结构一一对应 + +insert into 表名称 (字段列表) values(值列表); +``` + +添加多条记录到表中 + +```mysql +insert into 表名称 values(值列表1),(值列表2),(值列表3); #值列表中的值的顺序、类型、个数必须与表结构一一对应 + +insert into 表名称 (字段列表) values(值列表1),(值列表2),(值列表3); +``` + +修改所有行 + +```mysql +update 表名称 set 字段名1 = 值, 字段名2 = 值; #给所有行修改 +``` + +修改部分行 + +```mysql +update 表名称 set 字段名1 = 值, 字段名2 = 值 where 条件; #给满足条件的行修改 +``` + +删除部分行的数据 + +```mysql +delete from 表名称 where 条件; +``` + +删除整张表的数据,表结构留下 + +```mysql +delete from 表名称; +``` + +截断表,清空表中的数据,只留有表结构 + +```mysql +truncate 表名称; +``` + diff --git "a/08 \345\256\230\346\226\207\350\257\232/20230222 DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274\344\275\234\344\270\232.md" "b/08 \345\256\230\346\226\207\350\257\232/20230222 DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274\344\275\234\344\270\232.md" new file mode 100644 index 0000000..a488268 --- /dev/null +++ "b/08 \345\256\230\346\226\207\350\257\232/20230222 DDL\345\222\214DML_\345\273\272\350\241\250\344\270\216\345\241\253\345\200\274\344\275\234\344\270\232.md" @@ -0,0 +1,460 @@ +# 笔记 + +#### 1.非空约束 + + not null (表示这个字段必须填写) + +#### 2.默认约束 + +default (当你不给值时,系统自动以默认值增充) #非空+默认值约束 + +#### 3.主键约束 + +primary key (非空,唯一 就是值不能重复,同一个表中只能有一个主键) + +#### 4.唯一约束 + +unique key (值不能重复,可以为空,一个表中可以有多个字段可设唯一) + +#### 5.自增约束 + +auto_increment #前提是主键 + +(不给值,给0或者给null值,会自动在原来最大数基础上+1,给了值,就以给的值为准。) + +#### 6.外键约束 + +foreign key (约束两个表的关系,或者是一个表的两个字段之间的关系) + +格式: foreign key (从表的字段) references 主表(被依赖字段); + + 1.主表(父表)和从表(子表) # 主表:被依赖,被参考。 从表:依赖别人的,参考别人的。 + + 2.外键的建立和指定要在从表中定义 + + ##### 要求 + +A.主表必须先存在。 + +B.主表被依赖字段必须有索引,所以通常是主键列或唯一键列才能作为被依赖字段。 + +C.删除表时,要么先删除从表,在删除主表。要么先解除外键约束,才能删除。 + +D.从表的依赖字段的数据,必须在主表被依赖字段中选择,添加与修改都是这样。 + +E.主表被依赖字段的数据不能轻易的删除和修改,要看是否被引用。 + +#外键的约束等级为 on update/delete cascade/(set null) + + + +## 第1题 + +1、创建数据库test01_company + +~~~ mysql +CREATE DATABASE text01_company; +~~~ + + + +2、创建表格offices + +| 字段名 | 数据类型 | +| ---------- | ----------- | +| officeCode | int | +| city | varchar(30) | +| address | varchar(50) | +| country | varchar(50) | +| postalCode | varchar(25 | + +~~~ mysql +CREATE TABLE offices( +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) | + +~~~ mysql +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字段后面。 + +~~~ mysql +ALTER TABLE employees MODIFY mobile VARCHAR(25) AFTER `code` ; +~~~ + +**要求5:**将表employees的birth字段改名为birthday; + +~~~ mysql +ALTER TABLE employees CHANGE mobile birthday date; +~~~ + + + +**要求6:**修改sex字段,数据类型为char(1)。 + +~~~ mysql +ALTER TABLE employees MODIFY sex char(1); +~~~ + + + +**要求7:**删除字段note; + +~~~ mysql +ALTER TABLE employees DROP note; +~~~ + + + +**要求8:**增加字段名favoriate_activity,数据类型为varchar(100); + +~~~ mysql +ALTER TABLE employees add favoriate_activity VARCHAR(100); +~~~ + + + + + +**要求9:**将表employees的名称修改为 employees_info + +```mysql +ALTER TABLE employees RENAME employees_info; +``` + + + +## 第2题 + +1、创建数据库test02db + +~~~ mysql +CREATE database text02db; +~~~ + + + +2、创建表格pet + +| 字段名 | 字段说明 | 数据类型 | +| ------- | -------- | ----------- | +| name | 宠物名称 | varchar(20) | +| owner | 宠物主人 | varchar(20) | +| species | 种类 | varchar(20) | +| sex | 性别 | char(1) | +| birth | 出生日期 | year | +| death | 死亡日期 | year | + +~~~ mysql +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 | | + +~~~ mysql +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。 + +~~~ mysql +ALTER TABLE pet add owner_birth date; +~~~ + + + +5、 将名称为Claws的猫的主人改为kevin + +~~~ mysql +UPDATE pet SET `owner`='kevin' WHERE `name`='Claws'; +~~~ + + + +6、 将没有死的狗的主人改为duck + +~~~ mysql +update pet set `owner`='duck' WHERE `death`IS NULL; +~~~ + + + +7、 查询没有主人的宠物的名字; + +~~~ mysql +SELECT `name` FROM pet where `owner` IS null; +~~~ + + + +8、 查询已经死了的cat的姓名,主人,以及去世时间; + +~~~ mysql +select `name`,`owner`,death from pet WHERE species='Cat'; +~~~ + + + +9、 删除已经死亡的狗 + +~~~ mysql +delete from pet where species='Dog' and death='2009'; +~~~ + + + +10、查询所有宠物信息 + +```mysql +select * from pet; +``` + +## 第3题 + +1、创建数据库:test03_company + +```sql +create database test03_company charset utf8; +``` + +2、在此数据库下创建如下3表,数据类型,宽度,是否为空根据实际情况自己定义。 + +A. 部门表(department):部门编号(depid),部门名称(depname),部门简介(deinfo);其中部门编号为主键。 + +```mysql +use test03_company ; +create table department( + depid int primary key auto_increment, + depname char(10) not null unique key, + deinfo varchar(200) +); +``` + +B. 雇员表(employee):雇员编号(empid),姓名(name),性别(sex),职称(title),出生日期(birthday),所在部门编号(depid);其中 + +* ​ 雇员编号为主键; +* ​ 部门编号为外键,外键约束等级为(on update cascade 和on delete set null); +* ​ 性别默认为男; + +```mysql +alter table Teacher convert to character set utf8; +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 foreign key references department(depid) +); +``` + +C. 工资表(salary):雇员编号(empid),基本工资(basesalary),职务工资(titlesalary),扣除(deduction)。其中雇员编号为主键。 + +3、给工资表(salary)的雇员编号(empid)增加外键约束,外键约束等级为(on update cascade 和on delete cascade) + +~~~ mysql +create table salary( +empid int primary key, +basesalary double, +titlesalary double, +deduction double, +foreign key(empid) references employee(empid) + +); +~~~ + + + +4、添加数据如下: + +部门表: + +| 部门编号 | 部门名称 | 部门简介 | +| -------- | -------- | ------------ | +| 111 | 生产部 | Null | +| 222 | 销售部 | Null | +| 333 | 人事部 | 人力资源管理 | + +~~~ mysql +INSERT INTO department(depid,depname,deinfo) VALUES (111,'生产部',NULL),(222,'销售部',NULL),(333,'人事部','人力资源管理'); +~~~ + + + + 雇员表: + +| 雇员编号 | 姓名 | 性别 | 职称 | 出生日期 | 所在部门编号 | +| -------- | ---- | ---- | ---------- | ---------- | ------------ | +| 1001 | 张三 | 男 | 高级工程师 | 1975-1-1 | 111 | +| 1002 | 李四 | 女 | 助工 | 1985-1-1 | 1114 | +| 1003 | 王五 | 男 | 工程师 | 1978-11-11 | 222 | +| 1004 | 张六 | 男 | 工程师 | 1999-1-1 | 222 | + +~~~ mysql +INSERT into employee(empid,`name`,sex,title,birthday,depid) VALUES(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 | + +~~~ mysql +INSERT INTO salary(empid,basesalary,titlesalary,deduction) VALUES(1001,2200,1100,200),(1002,1200,200,NULL),(1003,2990,700,200),(1004,1950,700,150); +~~~ + + + +## 第4题 + +1、创建一个数据库:test04_school + +~~~ mysql +CREATE DATABASE text04_scgool; +~~~ + + + +2、创建如下表格 + +表1 Department表的定义 + +| **字段名** | **字段描述** | **数据类型** | **主键** | **外键** | **非空** | **唯一** | +| ---------- | ------------ | ------------ | -------- | -------- | -------- | -------- | +| DepNo | 部门号 | int(10) | 是 | 否 | 是 | 是 | +| DepName | 部门名称 | varchar(20) | 否 | 否 | 是 | 否 | +| DepNote | 部门备注 | Varchar(50) | 否 | 否 | 否 | 否 | + +~~~ mysql +CREATE TABLE Department( +DepNo int(10) PRIMARY KEY NOT NULL UNIQUE, +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) | 否 | 否 | 否 | 否 | + +~~~ mysql + create table Teacher( +Number int primary key not null unique, +`Name` varchar(30) not null, +Sex VARCHAR(4), Birth date, +DepNo int, +Salary float, +Address VARCHAR(100), +foreign key(DepNo) references Department(DepNo) +); +~~~ + + + +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 | 重庆市南岸区 | + +~~~ mysql +insert into Department VALUES (601,'软件技术系','软件技术等专业'),(602,'网络技术系','多媒体技术等专业'),(603,'艺术设计系','广告艺术设计等专业'),(604,'管理工程系','连锁经营管理等专业'); +~~~ + + + +~~~ mysql +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表的所有记录。 + +```mysql +select * FROM Teacher; +``` + + + + + -- Gitee