MySQL 从入门到入魔 (01)
数据库
学习数据库就是学习如何和数据库软件进行交流,SQL 语言就是用于程序员和数据库软件进行交流的语言.
DBMS:DataBaseManagementSystem 数据库管理系统(数据库软件),包括:MySQL/Oracle/SQLServer,DB2,SQLite 等
常见 DBMS 介绍:
MySQL:开源 Oracle 公司产品,08 年 MySQL 被 Sun 公司收购,09 年 Sun 公司被 Oracle, 原 MySQL 创始人离开 Oracle 创建新的数据库 MariaDB 市场占有率第一
Oracle:闭源 Oracle 公司产品, 性能最高价格最贵的数据库. 市占率第二
SQLServer:闭源 微软公司产品,应用在微软的整套解决方案中 市占率第三
DB2:闭源 IBM 公司产品,应用在 IBM 整套解决方案中.
SQLite:轻量级数据库,只提供基础的增删改成操作.安装包几十 k,主要应用在移动设备和嵌入式设备中.
网站的整套解决方案包括: 开发语言 操作系统 web 服务器软件 数据库软件
开源和闭源
开源:开发源代码 免费, 盈利方式:通过卖服务 , 会有程序员无偿的提供升级和维护
闭源:不开放源代码 盈利方式:通过卖产品+卖服务, 会有技术大拿攻击,但是没关系闭源产品的公司会养着一群人负责维护和升级.
SQL 语言
Structured Query Language:结构化查询语言, 用于程序员和数据库软件(DBMS)进行交流
如何连接数据库软件: 检查 mysql 服务开启 window 键+r 输入 services.msc
开始菜单中找到 Mysql/MariaDB 文件夹 里面的 Mysql Client 打开后直接输入密码
如果是 linux 或 mac 系统 先打开终端 在终端中输入 mysql -u 用户名 -p 回车 回车后输入密码 回车
断开连接: 关闭窗口 或执行 exit;
数据库相关 SQL 语句
往数据库软件中保存数据,需要先建库再建表,最后再操作表里面的数据
查询所有数据库
格式:
show databases;
创建数据库
格式: create database 数据库名; 使用默认字符集创建数据
指定字符集格式: create database 数据库名 character set utf8/gbk;
查看数据库详情
格式: show create database 数据库名;
删除数据库
格式: drop database 数据库名;
使用数据库
对表和数据进行操作时必须先使用了数据库才可以 不然会报错
格式: use 数据库名;
数据库相关练习:
分别创建 mydb1 和 mydb2 第一个字符集 utf8 第二个 gbk
查询所有数据库检查是否创建成功
分别查询两个数据库的字符集是否成功
先使用 mydb1 再使用 mydb2
删除两个数据库
表相关的 SQL
操作表时一定保证已经使用了某个数据库 不然会报以下错:ERROR 1046 (3D000): No database selected
创建表
格式: create table 表名(字段名 字段类型,字段名 字段类型);
指定字符集格式: create table 表名(字段名 类型,字段名 类型) charset=utf8/gbk;
查询所有表
格式: show tables;
查询表详情
格式: show create table 表名;
查看表字段
格式: desc 表名;
删除表
格式: drop table 表名:
修改表名
格式: rename table 原名 to 新名;
添加表字段
最后添加格式: alter table 表名 add 字段名 类型;
最前面添加:alter table 表名 add 字段名 类型 first;
在某个字段后面添加 alter table 表名 add 字段名 类型 after xxx;
删除表字段
格式: alter table 表名 drop 字段名;
修改表字段
格式: alter table 表名 change 原名 新名 新类型;
表相关 SQL 语句回顾
创建
create table t1(name varchar(10),age int)charset=utf8;
查询所有
show tables;
查询表详情
show create table t1;
查询表字段
desc t1
删除表
drop table t1;
修改表名
rename table t1 to t2;
添加表字段
alter table t1 add salary int first/ after xxx;
删除表字段
alter table t1 drop salary;
修改表字段
alter table t1 change
原名 新名 新类型;
表相关练习题:
创建数据库 mydb1 字符集 utf8 并使用该数据库
在 mydb1 中创建员工表 emp 字段有 name 表字符集也是 utf8
添加表字段 age 在最后
添加 id 字段在最前面
添加性别 gender 在 name 后面
修改 gender 为工资 sal
删除 age 字段
修改表名为 t_emp
删除 t_emp 表
删除数据库
###数据相关 SQL
执行数据相关的 SQL 必须保证已经使用了某个数据库,并且存在数据所对应的表格
插入数据
全表插入格式(要求值的数量和顺序必须和表字段一致): insert into 表名 values(值 1,值 2,值 3);
指定字段插入格式(要求值的数量和顺序必须和指定的一致): insert into 表名(字段名 1,字段名 2)values(值 1,值 2);
批量插入数据格式: 在 values 后面写多组值即可 finsert into person values('Lucy',20),('Lily',21);
插入中文:
查询数据
格式: select 字段信息 from 表名 where 条件;
举例:查询 person 表中所有的名字
select name from person;
查询 person 表中年龄大于 20 的名字和年龄
select name,age from person where age>20;
查询 person 表中所有数据的所有字段信息select * from person;
修改数据
格式: update 表名 set 字段名=xxx,字段名=xxx where 条件;
举例:
删除数据
格式: delete from 表名 where 条件;
举例:
删除 Tom
增删改查回顾:
插入数据 insert into 表名 values(值 1,值 2);
查询数据 select 字段信息 from 表名 where 条件;
修改数据 update 表名 set 字段名=xxx where 条件;
删除数据 delete from 表名 where 条件;
数据类型
整数类型: int(m)和 bigint(m) bigint 等效 java 中的 long, m 代表显示长度 需要结合 zerofill 关键字使用
浮点数: double(m,d) m 代表总长度 d 代表小数长度 58.234 m=5 d=3 ,超高精度的浮点数 decimal(m,d)只有涉及超高精度运算时使用.
字符串:
char(m): 固定长度 m=10 存"abc" 占 10,执行效率略高 最大 255
varchar(m):可变长度 m=10 存"abc" 占 3,更节省存储空间, 最大 65535 超过 255 建议使用 text
text(m):可变长度,最大值 65535.
日期:
date: 只能保存年月日
time: 只能保存时分秒
datetime:保存年月日时分秒,默认值是 null,最大值 9999-12-31
timestamp:时间戳(距离 1970 年毫秒数),保存年月日时分秒,默认值当前系统时间,最大值 2038-1-19
举例:
版权声明: 本文为 InfoQ 作者【海拥(haiyong.site)】的原创文章。
原文链接:【http://xie.infoq.cn/article/a7f8c899896ac7ed9b3636122】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论