
视频链接:https://www.bilibili.com/video/BV12b411K7Zu?t=7&p=304
Date Define Language ,用于对数据库和表的管理和操作
主要内容:
一、库的管理
二、表的管理
三、数据类型
一、库的管理
#一、如何创建库CREATE DATABASE studb;#提高容错性,在java中用下面语句写CREATE DATABASE IF NOT EXISTS studb;#二、如何删除库DROP DATABASE studb;DROP DATABASE IF NOT EXISTS studb;
二、表的管理
1.创建表
语法:CREATE TABLE 表名(字段名 字段类型 【字段约束】,字段名 字段类型 【字段约束】,字段名 字段类型 【字段约束】,字段名 字段类型 【字段约束】,字段名 字段类型 【字段约束】);#(无约束)案例:创建一个学生信息表CREATE TABLE IF NOT EXISTS stuinfo(stuid INT ,stuname VARCHAR(20),gender CHAR,email VARCHAR(20),borndate DATETIME);DESC stuinfo;
2.常见的六大约束
说明:用于限制表中字段的数据的,从而进一步保证数据表的数据是一致的准确的NOT NULL 非空 :限制字段为必填项DEFAULT 默认 :用于限制该字段没有显式插入值,则直接显式默认值PRIMARY KEY 主键 :用于限制该字段的值不能重复,并默认不能为空,一个表只能有一个主键UNIQUE 唯一 :用于限制该字段的值不能重复,一个表可以有n个CHECK 检查 : 用于限制该字段的值必须满足指定条件,mysql不支持CHECK命令,但是也不报错CHECK(age BETWEEN 1 AND 100)FOREIGN KEY 外键 :用于限制两个表的关系,要求外键列的值必须来自于主表的关联列要求:1.主表关联列和从表的关联列的类型必须一致,意思一样2.主表的关联列要求必须是主键#(有约束)案例:CREATE TABLE IF NOT EXISTS stu_info(stuid INT PRIMARY KEY , # 添加主键约束stuname VARCHAR(20) UNIQUE NOT NULL, # 添加唯一约束+非空约束,可以叠加gender CHAR(1) DEFAULT '男', # 添加默认约束email VARCHAR(20) NOT NULL,borndate DATETIME,age INT CHECK(age BETWEEN 0 AND 100) , # 添加检查约束,mysql不支持majorid INT,CONSTRAINT fk_stu_info_major FOREIGN KEY (majorid) REFERENCES major(id) # 外键);#案例:不同方式添加主键CREATE TABLE IF NOT EXISTS stu_info(stuid INT ,stuname VARCHAR(20) UNIQUE NOT NULL, # 添加唯一约束+非空约束,可以叠加gender CHAR(1) DEFAULT '男', # 添加默认约束email VARCHAR(20) NOT NULL,borndate DATETIME,age INT CHECK(age BETWEEN 0 AND 100) , # 添加检查约束,mysql不支持majorid INT,primary key(stuid), # 添加主键constraint uq unique (stuname) , #添加唯一键CONSTRAINT fk_stu_info_major FOREIGN KEY (majorid) REFERENCES major(id) # 外键);
外键的设置:
主表:

选择:

3.修改表
语法:ALTER TABLE 表名 ADD | MODIFY | CHANGE | DROP COLUMN 字段名 字段类型 【字段约束】#1.修改表名ALTER TABLE stuinfo RENAME TO students;#2.添加字段ALTER TABLE students ADD COLUMN borntime TIMESTAMP NOT NULL;ALTER TABLE students DROP COLUMN borntime ;DESC students;#3.修改字段名ALTER TABLE students CHANGE COLUMN borndate birthday DATETIME NULL;#4.修改字段类型ALTER TABLE students MODIFY COLUMN birthday TIMESTAMP ;DESC students;#5.删除字段ALTER TABLE students DROP COLUMN birthday ;
4.删除表
DROP TABLE IF EXISTS students;
5.复制表
#复制表结构CREATE TABLE newTable LIKE stu_info;#复制表的结构加数据CREATE TABLE newTable2 SELECT * FROM girls.`beauty`;#案例:复制employees表中的last_name,department_id,salary字段到新表empCREATE TABLE empSELECT last_name,department_id,salaryFROM myemployees.`employees`WHERE 1=2;
三、常用的数据类型
int(10):整型,括号内显示的是宽度是10,也可以不写括号
tinyint:
smallint:
bigint:
double/float:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
decimal:浮点型,精度更高,在表示钱方面使用该类型,因为不会出现精度缺失问题;
char:固定长度字符串类型;char(4) 范围是0-255
varchar:可变长度字符串类型;
text:字符串类型;表示存储较长文本
| 意思 | 格式 | n的解释 | 特点 | 效率 | |
|---|---|---|---|---|---|
| Char | 固定长度字符 | Char(n) | 最大的字符个数,可选默认:1 | 不管实际存储,开辟的空间都是n个字符 | 高 |
| Varchar | 可变长度字符 | Varchar(n) | 最大的字符个数,必选 | 根据实际存储决定开辟的空间 | 低 |
blob:字节类型;//jpg mp3 avi 存储图片型
date:日期类型,格式为:yyyy-MM-dd;
time:时间类型,格式为:hh:mm:ss
timestamp/datetime:时间戳类型;日期+时间 yyyyMMdd hhmmss
| 保存范围 | 所占字节 | |
|---|---|---|
| Datetime | 1900-1-1~xxxx年 | 8 |
| Timestamp | 1970-1-1~2038-12-31 | 4 |
补充:之前的小测试
# 测试题#1.使用分页查询实现,查询员工信息表中的部门为50号的工资最低的5名员工的信息SELECT * FROM employeesWHERE department_id = 50ORDER BY salaryLIMIT 5;#2.使用子查询实现城市为'Seattle'的,且工资>10000的员工姓名#步骤1:查询城市toroto的部门编号,需要使用内连接SELECT department_idFROM departments dJOIN locations l ON d.`location_id`=l.`location_id`WHERE city = 'Seattle';#步骤2:查询部门号在1中的员工姓名SELECT last_nameFROM employeesWHERE salary > 10000ANDdepartment_id IN (SELECT department_idFROM departments dJOIN locations l ON d.`location_id`=l.`location_id`WHERE city = 'Seattle');#3.创建表qqinfo,里面包含qqid,添加主键约束(昵称nickname),添加唯一约束、邮箱email(非空)、性别genderCREATE TABLE IF NOT EXISTS qqinfo (nickname VARCHAR(20) PRIMARY KEY,qqid INT,email VARCHAR(20) UNIQUE NOT NULL,gender CHAR(2));#4.删除表qqinfoDROP TABLE IF EXISTS qqinfo;#5.试写出sql查询语句的定义顺序和执行顺序SELECT DISTINCT 查询列表FROM 表名 别名JOIN 连接表ON 连接条件WHERE 筛选条件GROUP BY 分组列表HAVING 分组后筛选ORDER BY 排序LIMIT 条目数;执行顺序:1.from2.join3.on4.where5.group BY6.having7.select8.order BY9.limit
=======================
先写这么多,仅供参考,欢迎指点。
如果你有希望实现的内容,或者在过程中遇到了某些困难,欢迎交流探讨!
关注公众号,回复“尚硅谷MySQL”关键字,获取课程配套软件、课件、资料
/如有纰漏 请联系我 十分感谢/

长按图片,点击关注
文章转载自三分稚气,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




