什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。
主流的数据库有:sqlserver,mysql,Oracle、SQLite、Access、MS SQL Server等,本文主要讲述的是mysql
数据库管理是干什么用的?
- a. 将数据保存到文件或内存
- b. 接收特定的命令,然后对文件进行相应的操作
PS:如果有了以上管理系统,无须自己再去创建文件和文件夹,而是直接传递 命令 给上述软件,让其来进行文件操作 ,他们统称为数据库管理系统(DBMS,Database Management System)
安装及启动登陆mysql操作
1、安装步骤:
- a. 安装MySQL服务端
- b. 安装MySQL客户端
- c. 【客户端】连接【服务端】
d. 【客户端】发送语句给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)
2、windows版本安装及启动:
1)下载mysql服务端:http:/
/
dev.mysql.com
/
downloads
/
mysql
/
2)解压zip
3)到对应目录执行cmd命令(最好以管理员运行cmd) cd mysql-
5.7
.
18
-
winx64\
bin
4)初始化数据库 mysqld -
-
initialize
-
insecure
5)启动数据库net start mysql(自己设定的msyql名称),关闭服务器net stop mysql
6)连接测试:mysql -
u root
-
p
7)输入密码:出现mysql命令行
3、linux(ubuntu)安装
1)安装mysql服务端:sudo apt-get install mysql-server
2)安装mysql客户端: sudo apt-get install mysql-client
3)安装 libmysqlclient(这个在使用开发工具连接数据库使用会用到):
sudo apt-get install libmysqlclient-dev
4)启动mysql服务端(如果安装时有图形输入用户名密码,这里需要用自己的用户名密码登录,没有可以执行这个):mysql -u root -p (mysql)
5)进入mysql命令修改密码:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456(你自己的密码)";
2)退出,重新用自己的密码登录
Mysql 常见指令以及用户权限问题
1 all privileges 除grant外的所有权限 2 select 仅查权限 3 select,insert 查和插入权限 4 ... 5 usage 无访问权限 6 alter 使用alter table 7 alter routine 使用alter procedure和drop procedure 8 create 使用create table 9 create routine 使用create procedure 10 create temporary tables 使用create temporary tables 11 create user 使用create user、drop user、rename user和revoke all privileges 12 create view 使用create view 13 delete 使用delete 14 drop 使用drop table 15 execute 使用call和存储过程 16 file 使用select into outfile 和 load data infile 17 grant option 使用grant 和 revoke 18 index 使用index 19 insert 使用insert 20 lock tables 使用lock table 21 process 使用show full processlist 22 select 使用select 23 show databases 使用show databases 24 show view 使用show view 25 update 使用update 26 reload 使用flush 27 shutdown 使用mysqladmin shutdown(关闭MySQL) 28 super 使用change master、kill、logs、purge、master和set global。还允许mysqladmin调试登陆 29 replication client 服务器位置的访问 30 replication slave 由复制从属使用
对于用户和IP的权限
1 用户名@IP地址 用户只能在改IP下才能访问
2 用户名@192.168.1.% 用户只能在改IP段下才能访问(通配符%表示任意)
3 用户名@% 用户可以再任意IP下访问(默认IP地址为%)
1)查看权限:show grants for '用户'@'IP地址'
2)授权:grant 权限 on 数据库.表 to '用户'@'IP地址'
3)取消授权:revoke 权限 on 数据库.表 from '用户'@'IP地址'
4)实例:
1 grant all privileges on db1.tb1 TO '用户名'@'IP' 2 grant select on db1.* TO '用户名'@'IP' 3 grant select,insert on *.* TO '用户名'@'IP' 4 revoke select on db1.tb1 from '用户名'@'IP'
Mysql数据类型
MySQL 的数据类型有大概可以分为 5 种,分别是整数类型、浮点数类型和定点数类型、日期和时间类型、字符串类型、二进制类型等。其中整数类型和浮点数类型可以统称为数值数据类型。
1. 整数类型
整数类型包括 tinyint、smallint、mediumint、int、bigint,不同类型的整数存储所需的字节数不相同,
根据占用字节数可以求出每一种数据类型的取值范围。
例如,TINYINT 需要 1 个字节(8bit)来存储,
字节:二进制的算法,每8个位(bit)组成一个字节(Byte),在内存地址表现为00000000~11111111之间的位置,也就是说1字节的数据是8位进1,用0,1表示就是10000000=2^7,同理1千KB就是10000000000=2的10次方,1024=2^10,所以1KB=1024Byte。
那么 TINYINT 无符号数的最 大值为 28-1,即 255;TINYINT 有符号数的最大值为 27-1,即 127。其他类型的整数的取值范围计算方法相同,如下表所示。
2.浮点数类型和定点数类型
浮点类型有两种,分别是单精度浮点数(FLOAT)和双精度浮点数(DOUBLE);定点类型只有一种,就是 DECIMAL。
浮点类型和定点类型都可以用(M, D)
来表示,其中M
称为精度,表示总共的位数;D
称为标度,表示小数的位数。
浮点数类型的取值范围为 M(1~255)和 D(1~30,且不能大于 M-2),分别表示显示宽度和小数位数。M 和 D 在 FLOAT 和DOUBLE 中是可选的,FLOAT 和 DOUBLE 类型将被保存为硬件所支持的最大精度。DECIMAL 的默认 D 值为 0、M 值为 10。
float 和 double 在不指定精度时,默认会按照实际的精度(由计算机硬件和操作系统决定),decimal 如果不指定精度,默认为(10,0)。
浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的范围;缺点是会引起精度问题。
3.字符串类型
字符串类型有 char、varchar、tinytext、text、mediumtext、longtext、enum、set 等。
Varchar和Char区别,Varchar是变长,char是定长,一般使用Varchar,解决大部分问题
4.日期和时间类型
表示日期的数据类型:year、time、date、datetime、timestamp。当只记录年信息的时候,可以只使用year 类型
5.二进制类型
MySQL 中的二进制字符串有 bit、bitary、varbinary、tinyblob、blob、mediumblob 和longblob。
下表中列出了 MySQL 中的二进制数据类型,括号中的M
表示可以为其指定长度。
6.MySQL转义字符的使用
在 MySQL 或执行mysql语句时,除了常见的字符之外,我们还会遇到一些特殊的字符,如换行符、回车符等。这些符号无法用字符来表示,因此需要使用某些特殊的字符来表示特殊的含义,这些字符就是转义字符。
转义字符一般以反斜杠符号\
开头,用来说明后面的字符不是字符本身的含义,而是表示其它的含义。且转义字符区分大小写,例如:'\b' 解释为退格,但 '\B' 解释为 'B'。
例如:
mysql> SELECT 'dog', '"dog"','""dog""','dog''cat', '\'dog'; +-------------+---------------+-----------------+--------------+--------------+ | dog | "dog" | ""dog"" | dog'cat | 'C语言中文网 | +-------------+---------------+-----------------+--------------+--------------+mysql> SELECT "dog", "'dog'", "''dog''", "dog""cat", "\"dog"; +--------------+---------------+-----------------+--------------+--------------+ | dog | 'dog' | ''dog'' | dog"cat | "dog | +--------------+---------------+-----------------+--------------+--------------+