当前位置: 首页 > news >正文

Mysql速成笔记1(DDL)

# 1.DDL之数据库创建
/*1.1 数据库创建创建数据库CREATE DATABASE 数据库名;判断再创建数据库CREATE DATABASE IF NOT EXITS 数据库名;创建数据库指定字符集CREATE DATABASE IF NOT EXITS CHARACTER SET 字符集;创建数据库指定排序方式CREATE DATABASE IF NOT EXITS COLLETE 排序方式;创建数据库指定字符集和排序方式CREATE DATABASE IF NOT EXITS CHARACTER SET 字符集 COLLETE 排序方式;查询数据库的字符集和排序方式# mysql8:默认 utf8mb4 utf8mb4_0900_ai_cishow variables like 'character_set_database' 在数据库中想写字符是单引号双引号都行但是推荐是单引号show variables like 'collations_set_database'练习:创建ddl_dl库,指定字符集为utf8,且排序方式用大小写敏感的utf8mb4_0900_as_cs模式*/CREATE DATABASE IF NOT EXISTS ddl_dl CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs #utf8等同于utf8mb3 这俩不配套/* 1.2 数据库查看查看所有库show databases;查看当前使用库 select database();查看库下所有表show tables from 数据库名;查看创建库的信息和语句show create database 数据库名;选中和切换数据库名use 数据库名;*/SHOW DATABASESSELECT DATABASE();USE ddl_dlSHOW TABLES FROM mysql;SHOW CREATE DATABASE ddl_dl;/*1.3 数据库修改修改数据库字符集ALTER DATABASE 数据库名 CHARACTER SET 字符集;修改数据库排序方式ALTER DATABASE 数据库名 COLLATE 排序方式;修改数据库字符集和排序方式ALTER DATABASE 数据库名 CHARACTER SET 字符集 COLLATE 排序方式;注意:1. 数据库修改只能修改字符集和排序方式,不能修改数据库名2. 如果你想改名字,被反数据,删除旧库,创建新库,恢复数据即可!1.4 数据库删除直接删除数据库DROP DATABASE 数据库名;判断删除数据库DROP DATABASE IF EXISTS 数据库名;注意:删除是一个危险命令,确认明确,再操作!!
*//* 1.5数据库管理练习场景1:假设你正在为一个多语言的博客平台设计数据库。你需要创建一个名为 bog platlorm 的数据库,支持存储多语言的文章和评论。由于博客平台可能包含来自不同语言的用户,你决定使用 utf8mb4字符集,排序方式选择默认值,以支持广泛的Unicode 字符场景2:查看数据库字符集和排序规则场景3:假设在后续的发展中,你决定将排序方式修改为 utf8mb4 0900 as cs,以实现大小写敏感的比较。场景4:查看数据库字符集和排序规则场景5:项目惨遭放弃,需要删除项目库,并且跑路*/CREATE DATABASE IF NOT EXISTS blog_platform CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs;SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_set_database';ALTER DATABASE blog_platform COLLATE utf8mb4_0900_as_cs;SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_set_database';DROP DATABASE IF EXISTS blog_platform;#2.DDL之数据表操作
/*2.1 建表谱法建表谱法总结create table [if not exist]表名(#列的信息列名 类型[列的约束][列的注释],列名 类型[列的约束][列的注释],列名 类型[列的约束][列的注释])[描述] [注释]
建表事项
1.表名 列名 列类型必须填写的
2.推荐使用if not exists
3.注释不是必须得,但是是很有必要的!
4.列之间使用,隔开,最后一列没有*//* 
2.2 建表实战
建表语法总结场录1:假设你正在设计一个简单的在线图书管理系统。需要创建一个名为book libs的数据库,你决定使用 utf8mb4 字符集,排序方式选用大小写敏感的utf8mb4 0900_as_cs。场录2:创建一个图书表books,判断不存在再创建,并且手动设置books表字符集为utf8mb4,添加表注释内容国时图书表books中应该以下列:图书名称book name列,类型为varchar(20),加注释。图书价格bookprice列,类型为double(4,1),添加注释图书数量booknum列,类型为int,添加注释。按以上要求完成图书表的创建! 
*/
CREATE DATABASE IF NOT EXISTS book_libs CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs;
USE book_libs;
CREATE TABLE IF NOT EXISTS books(book_name varchar(20) comment '图书名称',book_price double(4,1) comment '图书价格',book_num int comment '图书数量'
)CHARSET = utf8mb4 comment '图书表';#在mysql中可以用双引号也可以用单引号,推荐使用单引号SHOW TABLES FROM book_libs;book_libs;

/*
2.3 建表类型[整数]
整数类型(类型,占有空间,范围)标准sql:
int /integer 4字节 无符号0-2^32-1 有符号 -2^31-2^31-1 
smallint     2字节 无符号0-2^16-1 有符号 -2^15-2^15-1
mysql方言:
tinyint      1字节 无符号0-2^8-1 有符号 -2^7-2^7-1
mediumint    3字节 无符号0-2^24-1 有符号 -2^23-2^23-1
bigint       8字节 无符号0-2^64-1 有符号 -2^63-2^63-1
有符号:列名 整数类型 ->有符号!有负号 有负值和正值列名 整数类型 unsigned ->无符号|无负号 没有负值,都是正值,将负值部分,绝对值后,加入正值部分!这个无符号只能跟着数值类型 并且紧贴着数值类型写,他俩是一个组合,要谢就一起写。
注意:选合适范围,范围合适先选占有空间最小的!创建一个dd1d1库中,创建一个t1表,包含:年和学号(范围不确定,但是没有负值)*/CREATE TABLE IF NOT EXISTS t1(t1_age TINYINT unsigned COMMENT '年龄,无符号,范围是 0 -255',t1_id BIGINT unsigned COMMENT '学号,最大的,且没有负号'
);/* 
2.4 建表类型[浮点/定值]
浮点类型(类型,M,D) 基于二进制存储float(m,d) 4宁节 m 24 d 8double(m,d) 8宁节 m 53 d 30 这俩加unsigned 不会把负值迁移到正值(与int相对)
定值类型(类型,M,D) 基于十进制存储decimal(m,d) 动态占有(不同Mysql版本的计算公式有差异) m 65 d 30使用对比:精度要求不高,例如:身高,体重 float / double精度要求特别高,钱工资,价格 decimal*//* 2.6建表类型[字符串]
字符串类型char 周定长度类型一旦声明固定占有对应的空间最大255 char类型永远不为空 [性能较好,因为不需要去做运算]varchar 可变长度类型 一旦声明,可以插入小于的长度,自动进行伸缩 M ,理论上说M的大小没有限制,但是其占有的空间不能超过一行的最大限制65535字节 varchar有可能为空[性能一般,因为内部需要去做伸缩运算]text 大文本类型,声明不要指定长度,有固定的大小限制,text[65535],不占有一行的最大限制空间 [性能较差,因为读写会带来大量的IO时间消耗]大文本,建议存储到文本文件,使用varchar记录文本文件地址,不是用TEXT,直接存大文本,因为TEXT性能较差,占用空间较大,读取消耗的时间太多
细节理解1.char声明的时候可以不写m char = char(1)2.char声明了最大长度限制,输入的文本小于长度限制,会在右侧补全空格 char(5)->'abc'->'abc  '3.char类型在读取的时候,会自动去掉右侧的空格'abc '->'abc'4.varchar声明的时候,必须添加m限制varchar(m)5.mysg14.0以下版术 varchar(20)->20 字节限制mb3->66.mysq15.0以上版本varehar(20)->20字符限制7.varchar类型中识别空格,插入空格读取也是有空格
演示varchar最大限制前提: mysql中一行数据最大的占有空间是65535字节,除了TEXT和BLOBs类型的列一行->name1列->name1列占有的最大空间65535字节varchar类型默认会使用1字节标识是否为nu11->65535-1=65534字节字符集utf8mb4 1个字符=4个字节 65534/4=16383.xxx
解决方案:1.缩小字符大小限制 m变小[不合理]2.可以修改字符集[不合理]3.可以将字符串类型变成TEXT,不占有一行的限制*/USE ddl_dl;CREATE TABLE IF NOT EXISTS t1(name1 VARCHAR(16000) COMMENT '姓名,固定长度10字节',name2 VARCHAR(384) COMMENT '年龄,可变长度3字节' 
)charset=utf8mb4 COMMENT '即使这样也会报错,因为每行最多只能有16383个字符';CREATE TABLE IF NOT EXISTS t2(name1 VARCHAR(16000) COMMENT '姓名,固定长度10字节',name2 TEXT COMMENT '年龄,可变长度3字节' 
)charset=utf8mb4;
/* 
2.7 建表类型[时间类型]
时间类型year 1 yyyy | yy '09' 09time 3 HH:MM:SS '10:10:10'date 3 YY-MM-DD '2000-10-10'◇atetime 8 YY-MM-DD HH:MM:SStimestamp 4 YY-MM-DD HH:MM:SS
注意情况1.year类型有两位或者四位的表达形式,两位00-69 =2000-2069 70-99=1970- 1999两位需要转换记忆不推荐2.时间类型就是一个特殊格式的字符串,插入数据的时候'' , 时间类型需要自动赋值,需要手动添加相关的设置!
扩展自动填写时间:1.插入默认添加时间datetime |timestamp default current timestamp ;2.修改默认更改时间(插入的默认时间)datetime | timestamp default current timestamp on update current timestamp;
演示:创建t2表,注册日期 字段插入自动添加时间,更新数据不变(插入数据的时候,自动维护时间,后续修改数据,时间不变!)更新日期 字段插入自动添加时间,更新数据时间改变(插入数据需要自动维护时间,修改数据也需要维护时间!)*/CREATE TABLE t2(
NAME VARCHAR(20) COMMENT '姓名',
register_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '插入自动维护时间',
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新自动维护时间'
)/* 
2.8创建表实战
场景2:
创建一个学生表(student)米存储借书的学员信息,其中应包含学生姓名、年龄、身高、生日以及注册时间和更新时间等属性student->字符集->默认
姓名->stu_name varchar(10)
性别->stu_sex char(1) COMMENT '男M,女F'
年龄-> stu_age tinyint unsigned COMMENT '0-255'
身高-> stu_height double(4,1) COMMENT '4位整数,1位小数'
生日-> stu_birthday date COMMENT '2000-10-10'
注册-> stu_regtime timestamp default current timestamp COMMENT '插入自动维护时间'
更新-> stu_uptime timestamp default current timestamp on update current timestamp COMMENT '更新自动维护时间'*/
CREATE DATABASE IF NOT EXISTS books_libs CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs #utf8等同于utf8mb3 这俩不配套CREATE TABLE IF NOT EXISTS student(stu_name VARCHAR(10) COMMENT '姓名',stu_sex CHAR(1) COMMENT '男M,女F',stu_age TINYINT UNSIGNED COMMENT '年龄0-255',stu_height DOUBLE(4,1) COMMENT '身高 4位整数,1位小数',stu_birthday DATE COMMENT '生日 2000-10-10',stu_regtime TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '注册日期 插入的时候自动维护',stu_uptime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新日期 插入和更新的时候自动维护时间')charset=utf8mb4 COMMENT '学生表';/* 
2.8 修改和删除表
修改表中列添加列alter table 表名 add 列名 类型 [first |after 原列名]修改列名alter table 表名 change 原列名 新列名 新类型[first |after 原列名]修改列类型修改列类型alter table 表名 modify 列名 新类型 [first |after 原列名]删除列alter table 表名 drop 列名:修改表名alter table 表名 rename[to]新的表名;删除表drop table [if exists]表名:清空表数据truncate table 表名:  #删除表中数据+ 删除表的关联记录 
*/

http://www.dtcms.com/a/436311.html

相关文章:

  • ps做 网站标准尺寸是多少网站域名使用怎么做待摊分录
  • 如何做好网站建设工作学校网站建设阶段性目标
  • 北京网站建设yi wl什么行业需要做网站
  • 恒网做的网站wordpress邮件设置密码
  • 网站备案阿里云流程长沙网站seo排名
  • 从技术表演到价值落地——从云栖大会透视中国AI商业化落地密码
  • 一键生成原创视频番禺网站排名优化公司
  • 音乐网站怎么做外链怎么查询商标是否已被注册
  • 株洲网站的建设宿迁房产网新楼盘
  • 盐城经济技术开发区建设局网站cocos游戏开发
  • 深圳网站制作哪家专业企业品牌策划推广方案
  • 中国做的比较好的网站设计公司有哪些动漫制作专业认识
  • 某学校网站建设方案论文工信部备案
  • 网站建设公司云南简单的网页制作软件
  • 福建网站备案个人网页制作成品html
  • 商城网站开发培训学校之前做的网站推广怎么删除
  • 无锡企业网站制作策划深圳公司网页设计推广报价
  • 嵌入式软件知识点汇总(day6):常见通信方式(上)
  • 衡阳网站设计ss0734做个人网站怎么赚钱
  • rk3566泰山派uart串口基础使用(应用层)
  • 直播网站功能怎么做东莞专业做网站
  • 判断网站学生做微商怎么加入
  • 商业网站后缀名徐州网站建设 网站推广
  • 免费打广告网站中国建信网官方网站
  • 网站建设中的问题wordpress影视主题下载
  • 中小企业建站可以怎么做90自己做网站
  • 一个空间怎么放两个网站企业网站模板建立流程
  • 第六章 与学习相关的技巧
  • 电商设计网站有哪些内容佛山新网站建设效果
  • 网站改版 总结小程序源代码免费模板