在学习MySQL基础操做时,发现了如下的博文,感受简单明了,上手很快,因此转载过来以备查阅。html
感谢原做者wid。mysql
1、MySQL的相关概念介绍linux
2、Windows下MySQL的配置sql
配置步骤数据库
MySQL服务的启动、中止与卸载ubuntu
3、MySQL脚本的基本组成服务器
4、MySQL中的数据类型编辑器
5、使用MySQL数据库函数
登陆到MySQL工具
建立一个数据库
选择所要操做的数据库
建立数据库表
6、操做MySQL数据库
向表中插入数据
查询表中的数据
更新表中的数据
删除表中的数据
7、建立后的修改
添加列
修改列
删除列
重命名表
删除整张表
删除整个数据库
8、附录
修改 root 用户密码
可视化管理工具 MySQL Workbench
MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"能够理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成, 如图所示的一个表格:
表头(header): 每一列的名称;
列(row): 具备相同数据类型的数据的集合;
行(col): 每一行用来描述某我的/物的具体信息;
值(value): 行的具体信息, 每一个值必须与该列的数据类型相同;
键(key): 表中用来识别某个特定的人\物的方法, 键的值在当前列中具备惟一性。
以 MySQL 5.1 免安装版为例, 下载 mysql-noinstall-5.1.69-win32.zip ( 官方下载页: http://dev.mysql.com/downloads/mysql/5.1.html#downloads )
1. 将下载的 mysql-noinstall-5.1.69-win32.zip 解压至须要安装的位置, 如: C:\Program Files;
2. 在安装文件夹下找到 my-small.ini 配置文件, 将其重命名为 my.ini , 打开进行编辑, 在 [client] 与 [mysqld] 下均添加一行: default-character-set = gbk
3. 打开 Windows 环境变量设置, 新建变量名 MYSQL_HOME , 变量值为 MySQL 安装目录路径, 这里为 C:\Program Files\mysql-5.1.69-win32
4. 在 环境变量 的 Path 变量中添加 ;%MYSQL_HOME%\bin;
5. 安装 MySQL 服务, 打开Windows命令提示符, 执行命令: mysqld --install MySQL --defaults-file="my.ini" 提示"Service successfully installed."表示成功;
在 Windows 命令提示符下运行:
启动: net start MySQL
中止: net stop MySQL
卸载: sc delete MySQL
与常规的脚本语言相似, MySQL 也具备一套对字符、单词以及特殊符号的使用规定, MySQL 经过执行 SQL 脚原本完成对数据库的操做, 该脚本由一条或多条MySQL语句(SQL语句 + 扩展语句)组成, 保存时脚本文件后缀名通常为 .sql。在控制台下, MySQL 客户端也能够对语句进行单句的执行而不用保存为.sql文件。
标识符用来命名一些对象, 如数据库、表、列、变量等, 以便在脚本中的其余地方引用。MySQL标识符命名规则稍微有点繁琐, 这里咱们使用万能命名规则: 标识符由字母、数字或下划线(_)组成, 且第一个字符必须是字母或下划线。
对于标识符是否区分大小写取决于当前的操做系统, Windows下是不敏感的, 但对于大多数 linux\unix 系统来讲, 这些标识符大小写是敏感的。
MySQL的关键字众多, 这里不一一列出, 在学习中学习。 这些关键字有本身特定的含义, 尽可能避免做为标识符。
MySQL语句是组成MySQL脚本的基本单位, 每条语句能完成特定的操做, 他是由 SQL 标准语句 + MySQL 扩展语句组成。
MySQL函数用来实现数据库操做的一些高级功能, 这些函数大体分为如下几类: 字符串函数、数学函数、日期时间函数、搜索函数、加密函数、信息函数。
MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:
数字类型
整数: tinyint、smallint、mediumint、int、bigint
浮点数: float、double、real、decimal
日期和时间: date、time、datetime、timestamp、year
字符串类型
字符串: char、varchar
文本: tinytext、text、mediumtext、longtext
二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob
这里不能详细对这些类型进行介绍了, 篇幅可能会很长, 详细介绍参见: 《MySQL数据类型》 : http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
当 MySQL 服务已经运行时, 咱们能够经过MySQL自带的客户端工具登陆到MySQL数据库中, 首先打开命令提示符, 输入如下格式的命名:
mysql -h 主机名 -u 用户名 -p
-h : 该命令用于指定客户端所要登陆的MySQL主机名, 登陆当前机器该参数能够省略;
-u : 所要登陆的用户名;
-p : 告诉服务器将会使用一个密码来登陆, 若是所要登陆的用户名密码为空, 能够忽略此选项。
以登陆刚刚安装在本机的MySQL数据库为例, 在命令行下输入 mysql -u root -p 按回车确认, 若是安装正确且MySQL正在运行, 会获得如下响应:
Enter password:
若密码存在, 输入密码登陆, 不存在则直接按回车登陆, 按照本文中的安装方法, 默认 root 帐号是无密码的。登陆成功后你将会看到 Welecome to the MySQL monitor... 的提示语。
而后命令提示符会一直以 mysql> 加一个闪烁的光标等待命令的输入, 输入 exit 或 quit 退出登陆。
使用 create database 语句可完成对数据库的建立, 建立命令的格式以下:
create database 数据库名 [其余选项];
例如咱们须要建立一个名为 samp_db 的数据库, 在命令行下执行如下命令:
create database samp_db character set gbk;
为了便于在命令提示符下显示中文, 在建立时经过 character set gbk 将数据库字符编码指定为 gbk。建立成功时会获得 Query OK, 1 row affected(0.02 sec) 的响应。
注意: MySQL语句以分号(;)做为语句的结束, 若在语句结尾不添加分号时, 命令提示符会以 -> 提示你继续输入(有个别特例, 但加分号是必定不会错的);
提示: 可使用 show databases; 命令查看已经建立了哪些数据库。
要对一个数据库进行操做, 必须先选择该数据库, 不然会提示错误:
ERROR 1046(3D000): No database selected
两种方式对数据库进行使用的选择:
一: 在登陆数据库时指定, 命令: mysql -D 所选择的数据库名 -h 主机名 -u 用户名 -p
例如登陆时选择刚刚建立的数据库: mysql -D samp_db -u root -p
二: 在登陆后使用 use 语句指定, 命令: use 数据库名;
use 语句能够不加分号, 执行 use samp_db 来选择刚刚建立的数据库, 选择成功后会提示: Database changed
使用 create table 语句可完成对表的建立, create table 的常见形式:
create table 表名称(列声明);
以建立 students 表为例, 表中将存放 学号(id)、姓名(name)、性别(sex)、年龄(age)、联系电话(tel) 这些内容:
create table students ( id int unsigned not null auto_increment primary key, name char(8) not null, sex char(4) not null, age tinyint unsigned not null, tel char(13) null default "-" );
对于一些较长的语句在命令提示符下可能容易输错, 所以咱们能够经过任何文本编辑器将语句输入好后保存为 createtable.sql 的文件中, 经过命令提示符下的文件重定向执行执行该脚本。
打开命令提示符, 输入: mysql -D samp_db -u root -p < createtable.sql
(提示: 1.若是链接远程主机请加上 -h 指令; 2. createtable.sql 文件若不在当前工做目录下需指定文件的完整路径。)
语句解说:
create table tablename(columns) 为建立数据库表的命令, 列的名称以及该列的数据类型将在括号内完成;
括号内声明了5列内容, id、name、sex、age、tel为每列的名称, 后面跟的是数据类型描述, 列与列的描述之间用逗号(,)隔开;
以 "id int unsigned not null auto_increment primary key" 行进行介绍:
"id" 为列的名称;
"int" 指定该列的类型为 int(取值范围为 -8388608到8388607), 在后面咱们又用 "unsigned" 加以修饰, 表示该类型为无符号型, 此时该列的取值范围为 0到16777215;
"not null" 说明该列的值不能为空, 必需要填, 若是不指定该属性, 默承认为空;
"auto_increment" 需在整数列中使用, 其做用是在插入数据时若该列为 NULL, MySQL将自动产生一个比现存值更大的惟一标识符值。在每张表中仅能有一个这样的值且所在列必须为索引列。
"primary key" 表示该列是表的主键, 本列的值必须惟一, MySQL将自动索引该列。
下面的 char(8) 表示存储的字符长度为8, tinyint的取值范围为 -127到128, default 属性指定当该列值为空时的默认值。
更多的数据类型请参阅 《MySQL数据类型》 : http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html
提示: 1. 使用 show tables; 命令可查看已建立了表的名称; 2. 使用 describe 表名; 命令可查看已建立的表的详细信息。
insert 语句能够用来将一行或多行数据插到数据库表中, 使用的通常形式以下:
insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
其中 [] 内的内容是可选的, 例如, 要给 samp_db 数据库中的 students 表插入一条记录, 执行语句:
insert into students values(NULL, "王刚", "男", 20, "13811371377");
按回车键确认后若提示 Query Ok, 1 row affected (0.05 sec) 表示数据插入成功。 若插入失败请检查是否已选择须要操做的数据库。
有时咱们只须要插入部分数据, 或者不按照列的顺序进行插入, 可使用这样的形式进行插入:
insert into students (name, sex, age) values("孙丽华", "女", 21);
select 语句经常使用来根据必定的查询规则到数据库中获取数据, 其基本的用法为:
select 列名称 from 表名称 [查询条件];
例如要查询 students 表中全部学生的名字和年龄, 输入语句 select name, age from students; 执行结果以下:
mysql> select name, age from students; +--------+-----+ | name | age | +--------+-----+ | 王刚 | 20 | | 孙丽华 | 21 | | 王永恒 | 23 | | 郑俊杰 | 19 | | 陈芳 | 22 | | 张伟朋 | 21 | +--------+-----+ 6 rows in set (0.00 sec) mysql>
也可使用通配符 * 查询表中全部的内容, 语句: select * from students;
where 关键词用于指定查询条件, 用法形式为: select 列名称 from 表名称 where 条件;
以查询全部性别为女的信息为例, 输入查询语句: select * from students where sex="女";
where 子句不只仅支持 "where 列名 = 值" 这种名等于值的查询形式, 对通常的比较运算的运算符都是支持的, 例如 =、>、<、>=、<、!= 以及一些扩展运算符 is [not] null、in、like 等等。 还能够对查询条件使用 or 和 and 进行组合查询, 之后还会学到更加高级的条件查询方式, 这里再也不多作介绍。
示例:
查询年龄在21岁以上的全部人信息: select * from students where age > 21;
查询名字中带有 "王" 字的全部人信息: select * from students where name like "%王%";
查询id小于5且年龄大于20的全部人信息: select * from students where id<5 and age>20;
update 语句可用来修改表中的数据, 基本的使用形式为:
update 表名称 set 列名称=新值 where 更新条件;
使用示例:
将id为5的手机号改成默认的"-": update students set tel=default where id=5;
将全部人的年龄增长1: update students set age=age+1;
将手机号为 13288097888 的姓名改成 "张伟鹏", 年龄改成 19: update students set name="张伟鹏", age=19 where tel="13288097888";
delete 语句用于删除表中的数据, 基本用法为:
delete from 表名称 where 删除条件;
使用示例:
删除id为2的行: delete from students where id=2;
删除全部年龄小于21岁的数据: delete from students where age<20;
删除表中的全部数据: delete from students;
alter table 语句用于建立后对表的修改, 基础用法以下:
基本形式: alter table 表名 add 列名 列数据类型 [after 插入位置];
示例:
在表的最后追加列 address: alter table students add address char(60);
在名为 age 的列后插入列 birthday: alter table students add birthday date after age;
基本形式: alter table 表名 change 列名称 列新名称 新数据类型;
示例:
将表 tel 列更名为 telphone: alter table students change tel telphone char(13) default "-";
将 name 列的数据类型改成 char(16): alter table students change name name char(16) not null;
基本形式: alter table 表名 drop 列名称;
示例:
删除 birthday 列: alter table students drop birthday;
基本形式: alter table 表名 rename 新表名;
示例:
重命名 students 表为 workmates: alter table students rename workmates;
基本形式: drop table 表名;
示例: 删除 workmates 表: drop table workmates;
基本形式: drop database 数据库名;
示例: 删除 samp_db 数据库: drop database samp_db;
按照本文的安装方式, root 用户默认是没有密码的, 重设 root 密码的方式也较多, 这里仅介绍一种较经常使用的方式。
使用 mysqladmin 方式:
打开命令提示符界面, 执行命令: mysqladmin -u root -p password 新密码
执行后提示输入旧密码完成密码修改, 当旧密码为空时直接按回车键确认便可。
尽管咱们能够在命令提示符下经过一行行的输入或者经过重定向文件来执行mysql 语句, 但该方式效率较低, 因为没有执行前的语法自动检查, 输入失误形成的一些错误的可能性会大大增长, 这时不妨试试一些可视化的MySQL数据库管理工具, MySQL Workbench 就是 MySQL 官方 为 MySQL 提供的一款可视化管理工具, 你能够在里面经过可视化的方式直接管理数据库中的内容, 而且 MySQL Workbench 的 SQL 脚本编辑器支持语法高亮以及输入时的语法检查, 固然, 它的功能强大, 毫不仅限于这两点。
MySQL Workbench官方介绍: http://www.mysql.com/products/workbench/
MySQL Workbench 下载页: http://dev.mysql.com/downloads/tools/workbench/
个人ubuntu自带了mysql,root登陆的密码是ubuntu用户的登录密码。