ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Learn02:MySQL的定义与操作语言

Learn02:MySQL的定义与操作语言 1.SQL语句的基本介绍SQL全称是结构化查询语言(Structured Query Language)。SQL语句的主要作用就是对数据库中的数据进行相应的管理操作增、删、改、查。数据库的增、删、改、查数据表的增、删、改、查表记录的增、删、改、查......1.1.SQL语句分类主要学习的有三大类: DDL DML DQL DCL本部分暂不细说SQL分类数据定义语言DDL(Data Definition Language)用来定义数据库对象数据库表等。关键字createalterdrop等作用 对数据库中的 库 和 表 进行定义创建数据库、删除数据库、查看数据库、创建表、删除表、修改表、查询表数据操作语言DML(Data Manipulation Language)用来对库表中表的记录进行增、删、改操作。关键字insertdeleteupdate等作用 对数据库中表数据进行操作添加数据、删除数据、修改数据数据查询语言DQL(Data Query Language)用来查询数据库中表的记录。关键字selectfromwhere等作用 对数据库中表数据进行查询操作数据控制语言DCL(Data Control Language)用来定义数据库的访问权限和安全级别及创建用户。DBA工程师作用 对数据库这个软件进行管理的语言。 比如 设置用户名、设置密码、设置不同用户可以访问那些库或者那些表1.2.SQL通用语法普通话分号结尾: SQL语句可以单行或多行书写以英文分号结尾不区分大小写:MySQL数据库的SQL语句不区分大小写关键字建议使用大写例如SELECT * FROM user。注释:多行 /* 注释内容 */ 单行 -- 或者 # 的方式完成注释DataGrip快速注释/取消注释的快捷键ctrl /多行注释选中内容 快捷键ctrl shif t /空格:可使用空格和缩进来增强语句的可读性DataGrip软件sql格式化快捷键 ctrl alt l缩进:控制代码的缩进保持可读性向后缩进 : tab键向前缩进: shift tab键编写代码时也可通过tab键快速跳过括号1.3.数据库操作DDL: 数据库定义语句作用: 对数据库中 库 和 表 进行定义操作 (创建库\删除库\查询库\创建表\删除表\修改表\查询表)1.3.1创建数据库datagrip界面创建每日文件夹创建sql文件# 直接创建数据库如果存在则报错 create database 数据库名; CREATE DATABASE 数据库名; ​ # 如果数据库不存在则创建 # if not exists 可选 判断是否存在 create database if not exists 数据库名; CREATE DATABASE IF NOT EXISTS 数据库名; ​ # 创建数据库并指定utf8或者gbk码表编码方式 # charsetutf8 字符集编码, charsetgbk create database 数据库名称 charsetutf8; CREATE DATABASE 数据库名称 CHARSETutf8 ​ #查看数据库的(详细信息)即码表格式show create database 数据库名; show create database day01_db;快速执行sql语句: ctrl enter注意:数据库 仅能执行一次,如果库存在, 直接报错 Cant create database learn02_db; database exists需求:-- 需求1: 请创建一个 learn02_db 数据库-- 需求2: 请创建一个 learn02_db_test1 数据库 要求该数据库不存在的时候创建它-- 需求3: 请创建一个 learn02_db_test2 数据库 要求该数据库采用utf8编码格式-- 需求1: 请创建一个 learn02_db 数据库 create database learn02_db; # 仅能执行一次, 如果库存在, 直接报错 Cant create database learn02_db;-- 需求2: 请创建一个 learn02_db_test1 数据库 要求该数据库不存在的时候创建它; create database if not exists learn02_db_test1; # 如果库存在, 不执行 , 如果不存在 才会创建这个数据库 不会报错-- 需求3: 请创建一个 learn02_db_test2 数据库 要求该数据库采用utf8编码格式 create database if not exists learn02_db_test2 charset utf8;1.3.2查看所有数据库# 小写 show databases;# 大写 SHOW DATABASES;切换大小写方法一选中字段切换大小写快捷键ctrlshiftu如图所示步骤按照图片设置关键字大写之后快捷键ctrlaltL格式化可以让关键字变成大写1.3.3使用数据库# 使用指定数据库 use 数据库名称; USE 数据库名称;# 展示选中的数据库 select database(); SELECT DATABASE();注意: 如果想操作数据库, 必须要先使用数据库1.3.4删除数据库# 删除指定的数据库 drop database 数据库名; DROP DATABASE 数据库名;!!! 注意 在实际工作中不要删除数据库!!! 注意 在实际工作中不要删除数据库!!! 注意 在实际工作中不要删除数据库2.DDL-数据定义语言2.1.数据类型编程的核心就是在处理数据数据类型是用于约束每一列应该存储什么类型的数据分类类型名称说明整数类型tinyint很小的整数(1字节) 场景: 状态码、布尔值int普通大小的整数(4字节) 场景: 用户ID、订单数、点击数小数类型float单精度浮点数, 有误差 6~7 位double (误差更小≠ 精确 )双精度浮点数, 有误差 15~16 位decimalm,d精确存储字符串形式存储数字d: 多少位小数m: 位数总长度(含整数和小数decimal(10, 2) 整数8位小数2位日期类型date只关心日期不关心具体时间场景: 生日、入职日期、节日time只关心时间不关心具体日期场景: 上班时间、退房时间timestamp日期 和 时间 都要场景: 订单创建时间、用户登录时间字符串char(m)定长字符串, 固定个数场景: 身份证、手机号varchar(m)可变长度, 最多不要超过长度场景: 用户名、标题、地址text大文本数据场景: 存几千、几万字的文章重点掌握数据类型:整数类型: int小数类型: decimal(m,d)日期类型: timestamp字符串类型: varchar(长度)2.2.创建数据表# 先使用数据库 use 数据库名称; ​ create table 表名 ( 字段名1 数据类型 [约束], 字段名2 数据类型 [约束] );需求1:# 在learn02_db的库中创建分类表 category# 字段说明 分类 id 分类名称 cname# 第一步 创建 learn02_db库 create database learn02_db; ​ # 第二步: 使用库 use learn02_db; ​ # 第三步: 创建表 create table category( id varchar(10) primary key , cname varchar(20) ) ; # 数据案例 id1 cnamePhone这里id varchar() 后面的primary是主键也就是依次按照1234递增不可重复后面会详细说需求2:#在learn02_db的库中创建商品表 product#字段说明 编号: pid 商品名称: pname 商品价格: price 商品分类: category_idcreate table learn02_db.product( pid int , pname varchar(50), price decimal(10,1), category_id varchar(10) ); #数据案例pid1 pname苹果手机 price3999.9 category_idc01创建数据表直接写product即可有时候你没有选择数据库use 数据库名;他可能会给前面出现一个数据库.数据表learn02_db.product,如果选择了数据库就不会出现这种情况。后文中 表的字段 如果没有选择表 也会出现 数据表.字段名的情况。2.3.查看表# 查看数据库中已有的表 show tables; ​ # 查看指定数据表的结构 即查看各字段的数据类型/约束 desc 表名;2.4.删除表drop table 表名; -- 删除 category, 如果表存在的情况下: drop table learn02_db.category; ​ -- 删除 product, 并且重新创建该表 drop table learn02_db.product; ​ create table learn02_db.product( pid int , pname varchar(50), price decimal(10,1), category_id varchar(10) );2.5.修改表结构格式场景 - 需求变更2.5.1添加列注意约束按需求选择添加, 可以没有约束, 类型必须要填写, 并且只能填写一个类型表字段名称不能重复, 否则会出现 Duplicate column 错误如果列名和关键字相同, 需要在列名两边加反引号 # 添加列 alter table 表名 add 新列名 类型(长度) [约束]; ​ # 举例 alter table learn02_db.category add desc varchar(20); # 这里的desc是关键字如果要用作列名需要加用来转义2.5.2修改列# 修改列 alter table 表名 change 旧列名 新列名 类型(长度) [约束]; alter table 表名 modify 列名 新类型(长度) [约束]; # 为分类表的分类描述字段更换为 description varchar(30) alter table day03_db.category change desc description varchar(30); # 更换为des decimal(5,2) alter table category change description des decimal(5,2); alter table category modify des decimal(5,3);change与modify 区别- change更强大修改类型的同时还能修改列名- modify不能修改列名。2.5.3删除列# 删除列 alter table 表名 drop 列名; # 需求删除分类表中description这列 alter table category drop description; alter table learn02_db.category drop description;2.5.4修改表名# 修改表名 rename table 旧表名 to 新表名; ​ # 需求将learn02_db数据库中的person表名改名成students; rename table personn to students; rename table learn02_db.person to students;3.DML - 数据操作语言作用: 对数据库的表中的记录进行相关的操作(插入数据、更新数据、删除数据)3.1.插入数据insert# 不指定字段, 一次性插入一行 insert into 表 values(值1, 值2, 值3..); ​ # 不指定字段, 一次性添加多个值 insert into 表 values(值1, 值2), (值4, 值5); ​ # 指定字段, 一次性插入一行 insert into 表 (字段1, 字段2) values(值1, 值2); ​ # 指定字段, 一次性添加多个值 insert into 表 (字段1, 字段2) values(值1, 值2),(值3, 值4);注意1. 值与字段必须对应个数相同类型相同2. 值的数据大小必须在字段的长度范围内3. 除了数值类型外其它的字段类型的值必须使用引号引起建议单引号4. 如果要插入空值可以不写字段或者插入 null5. 表后的字段可以省略,一旦省略后, values后面需要填写该表的全部字段的值,必须按照表字段的顺序3.2更新数据update# 更新所有行 update 表名 set 字段名1值1,字段名2值2,...; ​ # 更新符合条件的行 update 表名 set 字段名值,字段名值,... where 条件;注意1. 列名的类型与修改的值要一致2. 修改值得时候不能超过最大长度3. 除了数值类型外其它的字段类型的值必须使用引号引起4. 如果需要对表中某列或者某几列的数据全部进行更新, 不需要使用 where条件5. 如果对表中某条或者某几条数据进行指定列的值修改操作, 需要使用 where 条件6. set 后面 主要用于设置对那个字段进行修改, 以及对应要修改为具体的值是多少案例练习#需求1在category表中增加一个新列active 表示是否激活, 用 0表示未激活和 1表示已激活将该列的值 全部设置为1# 需求2 id 1先在product表中插入数据再更新 insert into product values(1, 某米, 1800,手机);更新 找到商品表product 中 id为1的数据 将其商品名称 更改为华为Mate 70 ,价格为 5999-- 更新数据操作: # 需求1 # 在category表中增加一个新列 表示是否激活 active 值为 0 和 1 # 将该列的值 全部设置为1 ​ # 第一步: 修改表结构 增加列 alter table learn02_db.category add active int; ​ # 第二步: active 列的值 全部修改为 1 update learn02_db.category set active 1; ​ ​ # 需求2 id 1 # 更改 商品表 中 id为1的数据 将其商品名称 更改为 华为Mate 70 价格为 5999 update learn02_db.product set pname 华为Mate 70,price 5999 where pid 1;3.3删除表记录delete# 删除满足条件的数据 delete from 表名 where 条件; ​ # 删除表中所有的数据 delete from 表名; truncate table 表名; # 区别truncate 会清空主键后面会讲案例练习#需求1 删除商品表product中价格大于 5000元的商品 (price 5000)#需求2 清空表操作(商品表product)# 需求1 删除商品表中价格大于 5000元的商品 (price 5000) delete from learn02_db.product where price 5000; ​ # 需求2 清空表操作(商品表) delete from learn02_db.product; truncate table product;上面的所有的案例练习可以先自己动手练习一下再看我写的这样可以加深印象。
返回列表