mysql数据库安装及基本操作

数据库的安装

        首先下载安装包 [网址](https://dev.mysql.com/downloads/file/?id=476233) 进入页面后可以不登录。后点击底部”No thanks, just start my download.”即可开始下载。

打开刚刚下载好的安装包,开始安装MySQL。 
这里写图片描述 
选择 I accept 然后点击next进入下一步。

这里写图片描述 
这里选择Developer Default,然后点击next进入下一步。

这里写图片描述 
这一步是检查安装条件,直接点击next进入下一步就可以了。

这里写图片描述 
这里直接点击execute执行就可以了,执行完后点击next进入下一步。

这里写图片描述 
继续点击next进入下一步。

这里写图片描述 
选择第一个然后点击next进入下一步。

这里写图片描述 
这里直接点击next进入下一步就可以了。

这里写图片描述 
设置root密码然后点击next进入下一步。

这里写图片描述 
点击next进入下一步。

这里写图片描述 
继续点击next。

这里写图片描述 
点击execute执行。

这里写图片描述 
点击next。

这里写图片描述 
点击finish。

这里写图片描述 
一路点击next,并check你的root密码,MySQL就成功在你的电脑上安装完成了。

1、安装完mysql后就需要配置环境变量 (win 10)
选择“我的电脑”,单击右键,选择“属性->高级->环境变量中的系统变量,对 MYSQL_HOME、Path 这 2 个系统变量分别设置如下相应的值(设置原则:如果存在相应的变量,直接对该变量进行编辑,注意只添加不删除;如果该变量不存在,则新建后再编辑。)
这里由于没有于是就新建一个环境变量 MYSQL_HOME
MYSQL_HOME=D:\App\Mysql ( 目录选择自己的安装目录)
(此处需注意,如果是为某个已存在的变量新增变量内容,在输入变量内容前必须先输入英文输入法状态下的分号)
 

 
2、新建完环境变量后,在环境变量里面找到Path,点击编辑,在弹出的框里面点击新建,新建一个环境变量
    Path=%MYSQL_HOME%\bin (在Path路径下添加 %MYSQL_HOME%\bin)


 
3、输入%MYSQL_HOME%\bin, 之后点击确定,记住一定是3个确定
 
 
如果点击编辑Path,打开是这样的

    需要在变量值最后面添加    ;%MYSQL_HOME%\bin     ( MYSQL_HOME%\bin前面带有英文状态下的分号)
编辑完成后确定就配置完成了
 

配置完成后我们可以在cmd 中输入

    mysql -u root -p

回车后输入密码
————————————————
版权声明:本文为CSDN博主「永远相信神话」的原创文章,遵循CC 4.0 BY-SA版权协议,转载
原文链接:https://blog.csdn.net/li93675/article/details/80700152

在Windows的环境下

安装包内已经自带了一个初始化好的环境,安装后展开在mysql根目录的data子目录。所以并不需要手工进行初始化。

在LINUX的环境下:

安装完mysql数据库以后,会发现会多出一个mysqld的服务,这个就是咱们的数据库服务,我们通过输入 service mysqld start 命令就可以启动我们的mysql服务。

注意:如果我们是第一次启动mysql服务,mysql服务器首先会进行初始化的配置,如:

复制代码

service mysqld start
 
初始化 MySQL 数据库: WARNING: The host 'xiaoluo' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
OK
Filling help tables...
OK
 
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
 
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
 
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h xiaoluo password 'new-password'
 
Alternatively you can run:
/usr/bin/mysql_secure_installation
 
which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.
 
See the manual for more instructions.
 
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
 
You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl
 
Please report any problems with the /usr/bin/mysqlbug script!
 
                                                           [确定]
正在启动 mysqld:                                            [确定]
 

复制代码

 这时我们会看到第一次启动mysql服务器以后会提示非常多的信息,目的就是对mysql数据库进行初始化操作,当我们再次重新启动mysql服务时,就不会提示这么多信息了,如:

service mysqld restart
停止 mysqld:                                             [确定]
正在启动 mysqld:                                          [确定]

我们在使用mysql数据库时,都得首先启动mysqld服务,我们可以 通过  chkconfig --list | grep mysqld 命令来查看mysql服务是不是开机自动启动,如:

chkconfig --list | grep mysqld
mysqld             0:关闭    1:关闭    2:关闭    3:关闭    4:关闭    5:关闭    6:关闭

我们发现mysqld服务并没有开机自动启动,我们当然可以通过 chkconfig mysqld on 命令来将其设置成开机启动,这样就不用每次都去手动启动了

chkconfig mysqld on
 chkconfig --list | grep mysql
mysqld             0:关闭    1:关闭    2:启用    3:启用    4:启用    5:启用    6:关闭

 mysql数据库安装完以后只会有一个root管理员账号,但是此时的root账号还并没有为其设置密码,在第一次启动mysql服务时,会进行数据库的一些初始化工作,在输出的一大串信息中,我们看到有这样一行信息 :

/usr/bin/mysqladmin -u root password 'new-password'  // 为root账号设置密码

所以我们可以通过 该命令来给我们的root账号设置密码(注意:这个root账号是mysql的root账号,非Linux的root账号)

mysqladmin -u root password 'root'  // 通过该命令给root账号设置密码为 root

此时我们就可以通过 mysql -u root -p 命令来登录我们的mysql数据库了

1. 使用 SET PASSWORD 命令

步骤 1):输入命令mysql -u root -p指定 root 用户登录 MySQL,输入后按回车键输入密码。如果没有配置环境变量,请在 MySQL 的 bin 目录下登录操作。

步骤 2):使用 SET PASSWORD 修改密码命令格式为 set password for username @localhost = password(newpwd);
,其中 username 为要修改密码的用户名,newpwd 为要修改的新密码。如图所示。
 


步骤 3):输入quit;命令退出 MySQL 重新登录,输入新密码“root”登录就可以了;

2. 使用mysqladmin修改密码

使用 mysqladmin 命令修改 MySQL 的 root 用户密码格式为 mysqladmin -u用户名 -p旧密码 password 新密码

注意:下图修改密码的命令中 -uroot 和 -proot 是整体,不要写成 -u root -p root,-u 和 root 间可以加空格,但是会有警告出现,所以就不要加空格了。
 

3. UPDATE直接编辑user表

步骤 1):输入命令mysql -u root -p指定 root 用户登录 MySQL,输入后按回车键输入密码。如果没有配置环境变量,请在 MySQL 的 bin 目录下登录操作。

步骤 2):输入use mysql;命令连接权限数据库。

步骤 3):输入命令update mysql.user set authentication_string=password('新密码') where user='用户名' and Host ='localhost';设置新密码。

步骤 4):输入 flush privileges; 命令刷新权限。

步骤 5):输入quit;命令退出 MySQL 重新登录,此时密码已经修改为刚才输入的新密码了。
 

数据库常用字段

一般用的最多的是int、tinyint、decimal、float、double、varchar、text、timestamp这几个类型,那么这些类型怎么用呢?

为方便参考,这里放张规格图:

int
int(M),其中M表示整数类型的最大显示宽度,当int字段类型设置为无符号且填充零(UNSIGNED ZEROFILL)时,当数值位数未达到设置的显示宽度时,会在数值前面补充零直到满足设定的显示宽度,我们一般用navicat查询的时候,如果有类似情况该软件会自动隐藏前面显示的0。
简单来说,int类型能存储的最大最小值是固定的,不需要指定M,所以以后设置字段的时候直接int()就可以了。

tinyint
type之类的int值可以用tinyint存储,tinyint占用字节少,可存储最大值为255。

decimal、float、double
这三种类型都可以通过以下参数(M,D)指定, 其中M是总位数,D是小数点后的位数。
可参考:https://code.rohitink.com/2013/06/12/mysql-integer-float-decimal-data-types-differences/
没有特殊需求的话,用DECIMAL即可。

varchar
char(10)表示存储的是10个字符,无论你插入的是多少,都是10个,如果少于10个,则用空格填满。
而varchar(10),小于10个的话,则插入多少个字符就存多少个。
char最多能存放255个字符,varchar最多能存放65532个字符。
个人习惯用varchar

text
和varchar不同的是不能指定长度,最大长度为65535个字元(2^16-1),如果还不够用,可以用MEDIUMTEXT,最大长度 16777215 个字元(2^24-1)。

timestamp
就用timestamp。
————————————————

原文链接:https://blog.csdn.net/u012628581/article/details/86702621
版权声明:本文为CSDN博主「Marchccc」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

数据库与表的创建

新建数据库:

         create database mydatabase【数据库名称】;

创建表:

        先指定数据库

                use mydatabase;

        再创建

        CREATE TABLE table_name (column_name column_type);             

        以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl:

        CREATE TABLE IF NOT EXISTS `runoob_tbl`(
           `runoob_id` INT UNSIGNED AUTO_INCREMENT,
          `runoob_title` VARCHAR(100) NOT NULL,
          `runoob_author` VARCHAR(40) NOT NULL,
           `submission_date` DATE,
           PRIMARY KEY ( `runoob_id` )
        )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
  • ENGINE 设置存储引擎,CHARSET 设置编码。

增删查改的SQL格式

  • 增     

语法:INSERT INTO 表名(字段名1,字段名2,…)

         VALUES(值1,值2,…);

举例:INSERT INTO student(id,name,grade)

     VALUES(1,'zhangshan',98);

删除指定的部分数据,需要使用WHERE子句来指定删除记录的条件。

举例:删除student表中的id值为7的记录

命令:DELETE  FROM student WHERE id=7;

DELETE 语句中没有使用WHERE语句,则会将表中所有记录都删除。

语法:DELETE FROM 表名

更新数据指对表中现存的数据进行修改。

语法:UPDATE 表名

      SET 字段名1=值1,[ ,字段名2=值2,…]

      [ WHERE 条件表达式 ]

在UPDATE 语句中若不使用WHERE 子句,则会将表中所有记录的指定字段都进行更新。

 举例:更新student表中全部记录,将grade字段都更新为80

命令:UPDATE student

    SET grade=80;

查询所有字段

语法:SELECT 字段名1,字段名2,…

   FROM 表名

语法:SELECT * FROM 表名,也就是查询指定数据表中的所有数据。(在SELECT语句中使用(‘ * ’)通配符代替所有字段

查询指定的部分字段

语法:SELECT 字段名1,字段名2,… FROM 表名;

带关系运算符的查询

 语法:SELECT 字段名1,字段名2,…

    FROM 表名

      WHERE 条件表达式

在WHERE子句中可以使用如下关系运算符:

IN 、BETWEEN 、LIKE 用法

IN

IN关键字用于判断某个字段的值是否在指定集合中,若在,则该字段所在的记录将会被查询出来.

语法:SELECT * | 字段名1,字段名2,…

   FROM 表名

   WHERE 字段名 [ NOT ]  IN (元素1,元素2,…)

举例:查询student2表中id值为1,2,3的记录

命令:SELECT * FROM student2 WHERE  id IN (1,2,3);

BETWEEN

BETWEEN AND 用于判断某个字段的值是否在指定范围之内,若在,则该字段所在的记录会被查询出来,反之不会。

语法:SELECT * | { 字段名1,字段名2,… }

   FROM  表名

      WHERE 字段名 [ NOT ] BETWEEN  值1  AND  值2;

举例:查询student2表中id值在2~5之间的人的id和name

命令:SELECT id,name FROM students WHERE id BETWEEN 2 AND 5;

LIKE

语法:SELECT * | 字段名1,字段名2,…

   FROM 表名

   WHERE 字段名 [ NOT ] LIKE ‘匹配字符串’;

(1)百分号(%)通配符

匹配任意长度的字符串,包括空字符串。例如,字符串“ c% ”匹配以字符 c 开始,任意长度的字符串,如“ ct  ”,“ cut ”,“ current ”等;字符串“ c%g ”表示以字符 c 开始,以 g 结尾的字符串;字符串“ %y% ”表示包含字符“ y ”的字符串,无论“ y ”在字符串的什么位置。

举例1:查询student2表中name字段以字符“ s ”开头的人的id,name

命令:SELECT id,name FROM student2  WHERE name LIKE "S%"; 

(2)下划线(_)通配符

 下划线通配符只匹配单个字符,若要匹配多个字符,需要使用多个下划线通配符。例如,字符串“ cu_ ”匹配以字符串“ cu ”开始,长度为3的字符,如“ cut ”,“ cup ”;字符串“ c__l”匹配在“ c ”和“ l ”之间包含两个字符的字符串,如“ cool ”。需要注意的是,连续的“_”之间不能有空格,例如“M_ _QL”只能匹配“My SQL”,不能匹配“MySQL”。

举例:查询在student2表中name字段值以“ wu ”开始,以“ ong ”结束,并且中间只有一个字符的记录。

命令:SELECT * FROM student2 WHERE name LIKE 'wu_ong';

关联查询 INNER JOIN 、 LEFT JOIN 、RIGHT JOIN 、FULL JOIN 用法

在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,总结一下mysql中的多表关联查询

**内连接查询(inner join)**

查询两个表共有的数据,交集

SELECT * FROM tb1 INNER JOIN tb2 ON 条件

左表查询(左关联查询)(left join)
 

查询两个表共有的数据,和左表所有的数据,左表有右表没有的部分用null代替

SELECT * FROM tb1 LEFT JOIN tb2 ON 条件

右表查询(右关联查询)(right join)


查询两个表共有的数据,和右表表所有的数据,右表有左表没有的部分用null代替
在这里插入图片描述

SELECT * FROM tb1 RIGHT JOIN tb2 ON 条件

全连接(full join)

Oracle数据库支持full join,mysql是不支持full join的,但仍然可以同过左外连接+ union+右外连接实现

数据库常用函数

一、数学函数

 数学函数主要用于处理数字,包括整型、浮点数等。

ABS(x)
返回x的绝对值  不区分大小写

SELECT ABS(-1) -- 返回1

CEIL(x),CEILING(x)
返回大于或等于x的最小整数  

SELECT CEIL(1.5) -- 返回2

FLOOR(x)
返回小于或等于x的最大整数  

SELECT FLOOR(1.5) -- 返回1

RAND()
返回0->1的随机数  

SELECT RAND() --0.93099315644334

RAND(x)
返回0->1的随机数,x值相同时返回的随机数相同  

SELECT RAND(2) --1.5865798029924

PI()
返回圆周率(3.141593)  

SELECT PI() --3.141593

TRUNCATE(x,y)
返回数值x保留到小数点后y位的值(与ROUND最大的区别是不会进行四舍五入)  

SELECT TRUNCATE(1.23456,3) -- 1.234

ROUND(x,y)
保留x小数点后y位的值,但截断时要进行四舍五入  

SELECT ROUND(1.23456,3) -- 1.235

POW(x,y).POWER(x,y)
返回x的y次方  

SELECT POW(2,3) -- 8

SQRT(x)
返回x的平方根  

SELECT SQRT(25) -- 5

EXP(x)
返回e的x次方  

SELECT EXP(3) -- 20.085536923188

MOD(x,y)
返回x除以y以后的余数  

SELECT MOD(5,2) -- 1

二、字符串函数
  

字符串函数是MySQL中最常用的一类函数,字符串函数主要用于处理表中的字符串。

函数 说明

CHAR_LENGTH(s)
返回字符串s的字符数

SELECT CHAR_LENGTH('你好123') -- 5

CONCAT(s1,s2,...)
将字符串s1,s2等多个字符串合并为一个字符串

SELECT CONCAT('12','34') -- 1234

CONCAT_WS(x,s1,s2,...)
同CONCAT(s1,s2,...)函数,但是每个字符串直接要加上x

SELECT CONCAT_WS('@','12','34') -- 12@34

INSERT(s1,x,len,s2)
将字符串s2替换s1的x位置开始长度为len的字符串 x从1开始

SELECT INSERT('12345',1,3,'abc') -- abc45

UPPER(s),UCAASE(S)
将字符串s的所有字母变成大写字母

SELECT UPPER('abc') -- ABC

LOWER(s),LCASE(s)
将字符串s的所有字母变成小写字母

SELECT LOWER('ABC') -- abc

LEFT(s,n)
返回字符串s的前n个字符

SELECT LEFT('abcde',2) -- ab

RIGHT(s,n)
返回字符串s的后n个字符

SELECT RIGHT('abcde',2) -- de

LTRIM(s) 去掉字符串s开始处的空格
RTRIM(s) 去掉字符串s结尾处的空格
TRIM(s) 去掉字符串s开始和结尾处的空格
SELECT TRIM('@' FROM '@@abc@@') -- abc

REPEAT(s,n)
将字符串s重复n次

SELECT REPEAT('ab',3) -- ababab

SPACE(n) 返回n个空格

REPLACE(s,s1,s2)
将字符串s2替代字符串s中的字符串s1

SELECT REPLACE('abca','a','x') --xbcx

STRCMP(s1,s2) 比较字符串s1和s2

SUBSTRING(s,n,len) 获取从字符串s中的第n个位置开始长度为len的字符串

LOCATE(s1,s),POSITION(s1 IN s)
从字符串s中获取s1的开始位置

SELECT LOCATE('b', 'abc') -- 2

REVERSE(s)
将字符串s的顺序反过来

SELECT REVERSE('abc') -- cba

FIELD(s,s1,s2...)
返回第一个与字符串s匹配的字符串位置

SELECT FIELD('c','a','b','c') -- 3

 

三、日期时间函数
         

 MySQL的日期和时间函数主要用于处理日期时间。

函数 说明

CURDATE(),CURRENT_DATE()
返回当前日期

SELECT CURDATE()
->2014-12-17

CURTIME(),CURRENT_TIME
返回当前时间

SELECT CURTIME()
->15:59:02


NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),

SYSDATE(),LOCALTIMESTAMP()

返回当前日期和时间

SELECT NOW()
->2014-12-17 15:59:02

YEAR(d),
MONTH(d)
DAY(d)
返回日期d中的月份值,1->12

SELECT MONTH('2011-11-11 11:11:11')
->11

MONTHNAME(d)
返回日期当中的月份名称,如Janyary

SELECT MONTHNAME('2011-11-11 11:11:11')
->November

DAYNAME(d)
返回日期d是星期几,如Monday,Tuesday

SELECT DAYNAME('2011-11-11 11:11:11')
->Friday

DAYOFWEEK(d)
日期d今天是星期几,1星期日,2星期一

SELECT DAYOFWEEK('2011-11-11 11:11:11')
->6

WEEKDAY(d)
日期d今天是星期几,

0表示星期一,1表示星期二

WEEK(d),WEEKOFYEAR(d)
计算日期d是本年的第几个星期,范围是0->53

SELECT WEEK('2011-11-11 11:11:11')
->45

DAYOFYEAR(d)
计算日期d是本年的第几天

SELECT DAYOFYEAR('2011-11-11 11:11:11')
->315

DAYOFMONTH(d)
计算日期d是本月的第几天

SELECT DAYOFMONTH('2011-11-11 11:11:11')
->11

QUARTER(d)
返回日期d是第几季节,返回1->4

SELECT QUARTER('2011-11-11 11:11:11')
->4

HOUR(t)
返回t中的小时值

SELECT HOUR('1:2:3')
->1

MINUTE(t)
返回t中的分钟值

SELECT MINUTE('1:2:3')
->2

SECOND(t)
返回t中的秒钟值

SELECT SECOND('1:2:3')
->3


四、系统信息函数
  

系统信息函数用来查询MySQL数据库的系统信息。

函数 作用
VERSION()
返回数据库的版本号

SELECT VERSION()
->5.0.67-community-nt

CONNECTION_ID() 返回服务器的连接数
DATABASE()、SCHEMA 返回当前数据库名
USER()、SYSTEM_USER()
返回当前用户

五、加密函数
  加密函数是MySQL用来对数据进行加密的函数。

  1、PASSWORD(str)

  该函数可以对字符串str进行加密,一般情况下,PASSWORD(str)用于给用户的密码加密。

SELECT PASSWORD('123')
->*23AE809DDACAF96AF0FD78ED04B6A265E05AA257
  2、MD5

  MD5(str)函数可以对字符串str进行散列,可以用于一些普通的不需要解密的数据加密。

SELECT md5('123')
->202cb962ac59075b964b07152d234b70

  3、ENCODE(str,pswd_str)与DECODE(crypt_str,pswd_str)

  ENCODE函数可以使用加密密码pswd_str来加密字符串str,加密结果是二进制数,需要使用BLOB类型的字段保存。该函数与DECODE是一对,需要同样的密码才能够解密。

SELECT ENCODE('123','xxoo')
->;vx
SELECT DECODE(';vx','xxoo')
->123


insert into login values('lch','alvin',encode('123','xxoo'),'50')


select Name,decode(Password,'xxoo') from login where username='lch'

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值