一 MySQL 安装及配置
1.下载
首先上MySql的官网下载 https://dev.mysql.com/downloads/mysql/ ,本人下载的是 mysql-5.7.24-winx64.zip版。
2.解压存放目录
下载完解压到你想要存放的位置 我的是解压到D:Program FilesMySQL 。
3.配置环境变量
在环境变量path中追加一句:;D:Program FilesMySQLbin 切记前面有其他环境变量时一定加 ;
4.自己配置mysql的配置文件my.ini
在D:Program FilesMySQL 目录下新建my.ini,打开加入如下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [mysql] # 设置mysql客户端默认字符集 default - character - set =utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录 basedir=D:Program FilesMySQL # 设置mysql数据库的数据的存放目录 datadir=D:Program FilesMySQLdata # 允许最大连接数 max_connections=200 # 服务端使用的字符集默认为8比特编码的latin1字符集 character - set -server=utf8 # 创建新表时将使用的默认存储引擎 default -storage-engine=INNODB |
5.在cmd中配置
以管理员身份打开cmd命令窗口,进入D:Program FilesMySQLbin>目录下,运行mysqld --initialize --user=mysql --console ,见下图所示:
6.验证安装是否成功
完成上面两个文件的创建后,还是在D:mysql-5.7.20-winx64bin下用管理员运行cmd 输入命令 mysqld -install 如果出现Service successfully installed 说明注册成功了
7.启动和关闭mysql服务
启动服务:net start mysql
关闭服务:net stop mysql
到此mysql数据库安装和配置完毕。
二 MySQL的基础知识
1.创建、删除及显示数据库
View Code注意:一次只能删除一个数据库,不能同时删除多个库
2.创建数据库db1,并设置数据库字符编码为utf8
View Code3.创建数据库db2,设置编码utf8和校对规则utf8_general_ci (校对规则:可以理解成排序规则;默认使用utf8_general_ci )
View Code4.显示数据库创建语句
View Code5.mysql数据类型
需要重点掌握的有以下几种:
数值型: int(整型,不指定代表有符号) float(存储小数) decimal(存储小数,精度高)
字符型: char(存储字符,范围 0~255字符) varchar(存储字符,范围 0~65532 字节) text
日期型:data (存储日期类型)
字符数据类型解释说明如下图
6.创建数据表
基本语法
1 2 3 4 5 6 | create table 表名 ( 字段1 数据类型, 字段2 数据类型, 字段n 数据类型, ) character set 字符编码 collate 校对规则 engine 存储引擎方式 field:指定列名 datatype: 指定列类型 |
注意:表后面的各项设置以创建表时设置的为准,如表没有设置,以数据库为准。
创建数据表user并显示其归属哪个数据库(显示归属的数据库命令:show tables; )
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | mysql> use db; Database changed mysql> create table user (id int ,salary float (4,2),bonus decimal (4,2)); Query OK, 0 rows affected (0.05 sec) mysql> select * from user ; Empty set (0.01 sec) mysql> show tables; -------------- | Tables_in_db | -------------- | user | -------------- 1 row in set (0.00 sec) |
注:float(4,2) 表示存储范围在 -99.99~99.99 ; decimal(6,2)表示存储范围在 -9999.99~9999.99 ;即 float (n,m)表示共有 n 位数字,m表示保留 m 位小数。精度测试数据为:(10,2)
7.创建案例:雇员表 employee
View Code表employee说明如下:
8.查看表结构的详细信息
1 2 3 4 5 6 7 8 9 10 11 12 13 | mysql> desc employee; -------------- ------------------ ------ ----- --------- ------- | Field | Type | Null | Key | Default | Extra | -------------- ------------------ ------ ----- --------- ------- | id | int (10) unsigned | YES | | NULL | | | name | varchar (100) | NO | | | | | sex | char (1) | NO | | | | | brithday | date | YES | | NULL | | | job | varchar (30) | NO | | | | | salary | decimal (10,2) | NO | | 0.00 | | | introduction | text | YES | | NULL | | -------------- ------------------ ------ ----- --------- ------- 7 rows in set (0.00 sec) |
9.数据表CRUD操作
- insert语句(插入数据)
1 | insert into 表名(字段1,字段2,...字段n) values (字段 值1,字段值2,...字段值n); |
示例代码
1 2 3 4 5 6 7 8 9 10 11 | mysql> insert into employee(id, name ,sex,brithday,job,salary,introduction) -> values (001, ‘张*‘ , ‘男‘ , ‘1981-12-28‘ , ‘software engineer‘ ,12000, ‘工作态度端正,认真负责本职工作,技术能力强,是不可多得的人才!‘ ); Query OK, 1 row affected (0.00 sec) mysql> select * from employee; ------ ----------- ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | id | name | sex | brithday | job | salary | introduction | ------ ----------- ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | 1 | 张* | 男 | 1981-12-28 | software engineer | 12000.00 | 工作态度端正,认真负责本职工作,技术能力强,是不可多得的人才! | ------ ----------- ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- 1 row in set (0.00 sec) |
注:在插入数据时,sql代码工具一定要与表设置的字符编码相同,否则插入的数据会出现乱码;也可在mysql命令提示符下输入:mysql> set names utf8 或 gbk;
- update语句(更新数据)
1 | update 表名 set 字段1=新值,字段2=新值 where 条件; |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | mysql> select * from employee; ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | id | name | sex | brithday | job | salary | introduction | ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | 1 | 张* | 男 | 1981-12-28 | software engineer | 12000.00 | 工作态度端正,认真负责本职工作,技术能力强,是不可多得的人才! | | 2 | 李建林 | 男 | 1972-10-21 | teacher | 5200.00 | 工作认真,讲课生动有趣,在学校评为优秀讲师 | ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- 2 rows in set (0.00 sec) mysql> update employee set salary=6000 where id=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from employee; ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | id | name | sex | brithday | job | salary | introduction | ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | 1 | 张* | 男 | 1981-12-28 | software engineer | 12000.00 | 工作态度端正,认真负责本职工作,技术能力强,是不可多得的人才! | | 2 | 李建林 | 男 | 1972-10-21 | teacher | 6000.00 | 工作认真,讲课生动有趣,在学校评为优秀讲师 | ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- 2 rows in set (0.00 sec) mysql> update employee set salary=salary 1000 where id=2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from employee; ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | id | name | sex | brithday | job | salary | introduction | ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | 1 | 张* | 男 | 1981-12-28 | software engineer | 12000.00 | 工作态度端正,认真负责本职工作,技术能力强,是不可多得的人才! | | 2 | 李建林 | 男 | 1972-10-21 | teacher | 7000.00 | 工作认真,讲课生动有趣,在学校评为优秀讲师 | ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- 2 rows in set (0.00 sec) |
注:如果不加wherer条件,所有数据的指定字段值全部修改!
- delete语句(删除数据)
1 | delete from 表名 where 条件; |
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | mysql> select * from employee; ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | id | name | sex | brithday | job | salary | introduction | ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | 1 | 张* | 男 | 1981-12-28 | software engineer | 12000.00 | 工作态度端正,认真负责本职工作,技术能力强,是不可多得的人才! | | 2 | 李建林 | 男 | 1972-10-21 | teacher | 7000.00 | 工作认真,讲课生动有趣,在学校评为优秀讲师 | ------ ------------ ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- 2 rows in set (0.00 sec) mysql> delete from employee where id=2; Query OK, 1 row affected (0.00 sec) mysql> select * from employee; ------ ----------- ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | id | name | sex | brithday | job | salary | introduction | ------ ----------- ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- | 1 | 张* | 男 | 1981-12-28 | software engineer | 12000.00 | 工作态度端正,认真负责本职工作,技术能力强,是不可多得的人才! | ------ ----------- ----- ------------ ------------------- ---------- ----------------------------------------------------------------------------------------------- 1 row in set (0.00 sec) |
- select语句(查询数据)
1 2 3 4 5 6 | #按指定字段查询 select 字段1,字段2,... 字段n from 表名 where 条件; #对表进行所有字段的查询 select * from 表名 where 条件; |
注:在mysql中,表名和字段名不区分大小写
- order by语句(对查询结果进行排序)
1 | select 字段1,字段2,... 字段n from 表名 where 条件 order by 字段 [ asc | desc ]; |
代码示例