前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL从入门到入魔(01)

MySQL从入门到入魔(01)

作者头像
海拥
发布2021-08-23 15:07:52
2790
发布2021-08-23 15:07:52
举报
文章被收录于专栏:全栈技术全栈技术

###数据库

  • 学习数据库就是学习如何和数据库软件进行交流,SQL语言就是用于程序员和数据库软件进行交流的语言.
  • DBMS:DataBaseManagementSystem 数据库管理系统(数据库软件),包括:MySQL/Oracle/SQLServer,DB2,SQLite等
  • 常见DBMS介绍:
  1. MySQL:开源 Oracle公司产品,08年MySQL被Sun公司收购,09年Sun公司被Oracle, 原MySQL创始人离开Oracle创建新的数据库MariaDB 市场占有率第一
  2. Oracle:闭源 Oracle公司产品, 性能最高价格最贵的数据库. 市占率第二
  3. SQLServer:闭源 微软公司产品,应用在微软的整套解决方案中 市占率第三
  4. DB2:闭源 IBM公司产品,应用在IBM整套解决方案中.
  5. SQLite:轻量级数据库,只提供基础的增删改成操作.安装包几十k,主要应用在移动设备和嵌入式设备中.
  • 网站的整套解决方案包括: 开发语言 操作系统 web服务器软件 数据库软件
  • 开源和闭源
  1. 开源:开发源代码 免费, 盈利方式:通过卖服务 , 会有程序员无偿的提供升级和维护
  2. 闭源:不开放源代码 盈利方式:通过卖产品+卖服务, 会有技术大拿攻击,但是没关系闭源产品的公司会养着一群人负责维护和升级. ###SQL语言

####数据库相关SQL语句

  • 往数据库软件中保存数据,需要先建库再建表,最后再操作表里面的数据
  1. 查询所有数据库
  • 格式: show databases;
  1. 创建数据库
  • 格式: create database 数据库名; 使用默认字符集创建数据
代码语言:javascript
复制
	create database db1;
  • 指定字符集格式: create database 数据库名 character set utf8/gbk;
代码语言:javascript
复制
	create database db2 character set utf8;
	create database db3 character set gbk;
  1. 查看数据库详情
  • 格式: show create database 数据库名;
代码语言:javascript
复制
	show create database db1;
  1. 删除数据库
  • 格式: drop database 数据库名;
代码语言:javascript
复制
	drop database db4;
  1. 使用数据库
  • 对表和数据进行操作时必须先使用了数据库才可以 不然会报错
  • 格式: use 数据库名;
代码语言:javascript
复制
	use db1;

###数据库相关练习:

  1. 分别创建mydb1和mydb2 第一个字符集utf8 第二个gbk
代码语言:javascript
复制
	create database mydb1 character set utf8;
	create database mydb2 character set gbk;
  1. 查询所有数据库检查是否创建成功
代码语言:javascript
复制
	show databases;
  1. 分别查询两个数据库的字符集是否成功
代码语言:javascript
复制
    show create database mydb1;
	show create database mydb2;
  1. 先使用mydb1 再使用mydb2
代码语言:javascript
复制
    use mydb1;
	use mydb2;
  1. 删除两个数据库
代码语言:javascript
复制
	drop database mydb1;
	drop database mydb2;

###表相关的SQL

  • 操作表时一定保证已经使用了某个数据库 不然会报以下错: ERROR 1046 (3D000): No database selected
  1. 创建表
  • 格式: create table 表名(字段名 字段类型,字段名 字段类型);
代码语言:javascript
复制
	create table student(name varchar(10),age int);	
  • 指定字符集格式: create table 表名(字段名 类型,字段名 类型) charset=utf8/gbk;
代码语言:javascript
复制
create table person(name varchar(10),gender varchar(5))charset=gbk;
  1. 查询所有表
  • 格式: show tables;
  1. 查询表详情
  • 格式: show create table 表名;
代码语言:javascript
复制
	show create table person;
  1. 查看表字段
  • 格式: desc 表名;
代码语言:javascript
复制
	desc student;
  1. 删除表
  • 格式: drop table 表名:
代码语言:javascript
复制
	drop table student;
  1. 修改表名
  • 格式: rename table 原名 to 新名;
代码语言:javascript
复制
	rename table person to t_person;
  1. 添加表字段
  • 最后添加格式: alter table 表名 add 字段名 类型;
  • 最前面添加:alter table 表名 add 字段名 类型 first;
  • 在某个字段后面添加 alter table 表名 add 字段名 类型 after xxx;
代码语言:javascript
复制
	alter table t_person add salary int;
	alter table t_person add id int first;
	alter table t_person add age int after name;
  1. 删除表字段
  • 格式: alter table 表名 drop 字段名;
代码语言:javascript
复制
	alter table t_person drop salary;
  1. 修改表字段
  • 格式: alter table 表名 change 原名 新名 新类型;
代码语言:javascript
复制
	alter table t_person change age salary int;

###表相关SQL语句回顾

  1. 创建 create table t1(name varchar(10),age int)charset=utf8;
  2. 查询所有 show tables;
  3. 查询表详情 show create table t1;
  4. 查询表字段 desc t1
  5. 删除表 drop table t1;
  6. 修改表名 rename table t1 to t2;
  7. 添加表字段 alter table t1 add salary int first/ after xxx;
  8. 删除表字段 alter table t1 drop salary;
  9. 修改表字段 alter table t1 change 原名 新名 新类型; ####表相关练习题:
  • 创建数据库mydb1 字符集utf8 并使用该数据库
代码语言:javascript
复制
	create database mydb1 character set utf8;
	use mydb1;
  • 在mydb1中创建员工表emp 字段有name 表字符集也是utf8
代码语言:javascript
复制
	create table emp(name varchar(10)) charset=utf8;
  • 添加表字段age在最后
代码语言:javascript
复制
	alter table emp add age int;
  • 添加id字段在最前面
代码语言:javascript
复制
	alter table emp add id int first;
  • 添加性别gender在name后面
代码语言:javascript
复制
	alter table emp add gender varchar(5) after name;
  • 修改gender为工资sal
代码语言:javascript
复制
	alter table emp change gender sal int;
  • 删除age字段
代码语言:javascript
复制
	alter table emp drop age;
  • 修改表名为t_emp
代码语言:javascript
复制
	rename table emp to t_emp;
  • 删除t_emp表
代码语言:javascript
复制
	drop table t_emp;
  • 删除数据库
代码语言:javascript
复制
	drop database mydb1;

###数据相关SQL

  • 执行数据相关的SQL 必须保证已经使用了某个数据库,并且存在数据所对应的表格
代码语言:javascript
复制
	create database mydb2 character set utf8;
	use mydb2;
	create table person(name varchar(10),age int)charset=utf8;
  1. 插入数据
  • 全表插入格式(要求值的数量和顺序必须和表字段一致): insert into 表名 values(值1,值2,值3);
代码语言:javascript
复制
	insert into person values('Tom',18);
  • 指定字段插入格式(要求值的数量和顺序必须和指定的一致): insert into 表名(字段名1,字段名2)values(值1,值2);
代码语言:javascript
复制
	insert into person(name)values('Jerry');
  • 批量插入数据格式: 在values后面写多组值即可f insert into person values(‘Lucy’,20),(‘Lily’,21);
代码语言:javascript
复制
	insert into person(name)values('zhangsan'),('lisi');
  • 插入中文:
代码语言:javascript
复制
	insert into person values('刘德华',30);
代码语言:javascript
复制
如果执行以上代码出现错误提示,提示里面包含16进制的错误信息 执行以下SQL
代码语言:javascript
复制
set names gbk;
  1. 查询数据
  • 格式: select 字段信息 from 表名 where 条件;
  • 举例: 查询person表中所有的名字 select name from person; 查询person表中年龄大于20的名字和年龄 select name,age from person where age>20; 查询person表中所有数据的所有字段信息 select * from person;
  1. 修改数据
  • 格式: update 表名 set 字段名=xxx,字段名=xxx where 条件;
  • 举例:
代码语言:javascript
复制
	update person set age=8 where name='Tom';
	update person set age=10 where age is null;
  1. 删除数据
  • 格式: delete from 表名 where 条件;
  • 举例:
    1. 删除Tom
代码语言:javascript
复制
	delete from person where name='Tom';
代码语言:javascript
复制
2. 删除年龄小于20岁的
代码语言:javascript
复制
	delete from person where age<20;
代码语言:javascript
复制
3. 删除所有数据
代码语言:javascript
复制
	delete from person;

###增删改查回顾:

  1. 插入数据 insert into 表名 values(值1,值2);
  2. 查询数据 select 字段信息 from 表名 where 条件;
  3. 修改数据 update 表名 set 字段名=xxx where 条件;
  4. 删除数据 delete from 表名 where 条件; ###数据类型
  5. 整数类型: int(m)和bigint(m) bigint等效java中的long, m代表显示长度 需要结合zerofill关键字使用
代码语言:javascript
复制
	create table t1(name varchar(10),age int(10) zerofill);
	insert into t1 values('Tom',18);
	select * from t1;
  1. 浮点数: double(m,d) m代表总长度 d代表小数长度 58.234 m=5 d=3 ,超高精度的浮点数decimal(m,d)只有涉及超高精度运算时使用.
  2. 字符串:
  • char(m): 固定长度 m=10 存"abc" 占10,执行效率略高 最大255
  • varchar(m):可变长度 m=10 存"abc" 占3,更节省存储空间, 最大65535 超过255建议使用text
  • text(m):可变长度,最大值65535.
  1. 日期:
  • date: 只能保存年月日
  • time: 只能保存时分秒
  • datetime:保存年月日时分秒,默认值是null,最大值9999-12-31
  • timestamp:时间戳(距离1970年毫秒数),保存年月日时分秒,默认值当前系统时间,最大值2038-1-19
  • 举例:
代码语言:javascript
复制
	create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
	insert into t_date values('2020-1-18',null,null,null);
	insert into t_date values(null,'17:35:18','2020-3-17 12:30:23',null);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档