一、MySQL简介(适合管理数据)
MySQL是一个关系型数据库管理系统,MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
二、MySQL的安装
mysql-server MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。
mysql-client MySQL 客户端程序,用于连接并操作Mysql服务器。
mysql-devel 库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该包。
mysql-shared 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。
mysql-bench MySQL数据库服务器的基准和性能测试工具
三、MySQL管理和使用
-- 登录MySQL
mysql -u root -p
--查看所有子数据库 mysql数据库里有很多子数据库 子数据库存放不同项目的数据
show databases;
--使用某个子数据库
use mysql
--查看子数据库的所有表
show tables;
--查看表中数据
select user from user; --从user这张表里查user变量下的数据
--创建用户
create user "test"@"localhost" identified by "123456"; --只有本机上面的test用户才能登录 @限制登录的主机
--修改密码
ALTER USER "test"@"localhost" IDENTIFIED BY "test"; --root root
--授权操作
grant select on *.* to "test"@"localhost"; --select查询权限 create创建权限
--创建子数据库
create database mydatabase; --mydatabase是子数据库名字
--在子数据库下创建表(表存放数据)
create table int_test(
tiny_int tinyint,
small_int smallint,
medium_int mediumint,
common_int int,
big_int bigint
); --表名 --变量名 类型
--显示表结构
describe int_test;
--插入数据
insert into int_test values(1,1,1,1,1);
--insert into int_test values(200,1,1,1,1); --超出范围
--insert into int_test values(200,1,1,'a',1); --类型不会自动转换
--创建学生表 变量名 变量类型 变量属性
create table student(
name varchar(10) not NULL,
age tinyint unsigned not NULL,
sex char(6)
);
--修改表的变量
--修改表名字
alter table student rename stu;
--删除表的一个变量 drop丢掉
alter table student drop sex;
--增加表的变量 add默认放在表尾
alter table student add sex char(6);
--在表头增加新变量 主键 不能重复 id自动增长 id放在前面
alter table student add id int unsigned not NULL primary key auto_increment first;
-- 在表的变量后插入新变量 在名字后面插入日期
alter table student add birth date after name;
-- 默认用-填充
alter table student add tel char(11) default '-';
--修改表的编码类型 能插入中文版
alter table student convert to character set utf8;
--表插入数据
--简略版(默认用户填写全部数据)
insert into int_test values(1,1,1,1,1);
--完整版
insert into student (id,name,birth,age,sex,tel) values(1000,"jack","1999-8-9",21,"male","11111111111");
--插入部分数据
insert into student(name,birth,age,sex,tel) values("tom","1990-9-9",30,"female","22222222222");
--插入多条数据
insert into student values(1003,"rose","1998-9-9",22,"male","33333333333"),(1004,"lily","1997-9-9",23,"male","55555555555");
-- 电话采用默认值
insert into student (name,birth,age,sex) values("ggg","1990-9-9",30,"female");
--插入中文
insert into student values(1006,"张三","1999-9-9",21,"male","55555555555");
--表修改数据 设置电话为 修改名字为ggg的电话
update student set tel = "00000000000" where name = "ggg";
--表删除数据
delete from student where id = 1000;
--删除表
drop table student;
--删除数据库
drop database mydatabase;
--查询表数据
--*所有数据
select * from student;
--根据条件查找数据
select name from student;
select id from student where id > 1002;
select id from student where id between 1001 and 1004;
四、MySQL 数据类型
1、整型
2、浮点型
设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。
3、定点数
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位
4、字符串
char和varchar:
1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。
3.char类型的字符串检索速度要比varchar类型的快。
varchar和text:
1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
2.text类型不能有默认值。
3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用
5、二进制数据
1.BLOB和text存储方式不同,TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。
2.BLOB存储的数据只能整体读出。
3.TEXT可以指定字符集,BLOB不用指定字符集。
6、日期时间类型
若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。
7、数据类型的属性