MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
在ubuntu下:
apt-get install mysql-server mysql-client libmysqlclient-dev
要记得密码,会用得着
设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 char和varchar: 2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。 3.char类型的字符串检索速度要比varchar类型的快。 varchar和text: 2.text类型不能有默认值。 3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用 登录上去了: 结果如下(默认只有红线的这四个): 如果想要切换到 sys 数据库,直接 在 mysql 下查看所有的表: 从 user 这张表里查看用户(默认只有前四个): 创建一个用户名为 创建成功如下图所示: 将 test01 这个用户的密码改为:888888 结果如下: 对 test01 授予在所有数据库的所有表具有查询权限 结果如下: 结果如下: 登录刚刚创建的用户 test01 , 输入密码,结果如下所示: 首先退出myql,利用 root 用户登录: 利用命令: 把表的名字改为:stu 删除表中的字段,这里把 sex 这个字段给删了 全部的项目都插入数据: * 号查询表中所有数据: 指定 utf8 的编码格式: 现在就可以用中文了 将 name 为 aa 这个人的电话改成 00000000000: 删除 id 为 1000 的这个人:
decimal(m,d) 参数m<65 是总个数,d<30且 d(4)字符串
1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。
1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。(5)二进制数据
(6)日期时间类型
若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。(7)数据类型的属性
1.4 mysql的基本操作
(1)登录MySQL
mysql -u root -p
(2)查看所有数据库
show databases;
(3)使用数据库
use mysql
use sys
就行:
(4)查看所有表
show tables;
(5)查看所有用户
select user from user;
(6)创建用户
create user "test01"@"localhost" identified by "123456";
test01
,localhost
表示只有本机用户才能使用, 密码是:123456
(7)修改密码
set password for "test01"@"localhost" = PASSWORD("888888");
(8)授权操作
grant select on *.* to "test01"@"localhost";
(9)退出 mysql
exit
(10)再次登录自己创建的用户
mysql -u test01 -p
登录上之后,进入 mysql 数据库,可以 尝试 create
权限,发现不能创建,因为我们刚刚只赋予了该用户 select
权限:
因此该用户啊具有 select
的权限:
(11)给test01加上create权限
然后给 test01 用户授予 creater 的权限:
然后退出 mysql ,再用 test01 这个用户登录
create database test01_database;
,创建一个database:
可以看到,此时 test01 这个用户具有了 create 的权限了。(12)创建数据库
create database test01_database;
(13)创建表
create table int_test (
tiny_int tinyint,
small_int smallint,
mudium_int mediumint,
common_int int,
big_int bigint
);
(14)显示表结构
describe int_test;
(15)插入数据
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(1,1,1,'a',1); // 插入不正确的类型数据
(16)创建学生表
create table student (
name varchar(10) not null,
age tinyint unsigned not null,
sex char(6)
);
(17)修改表
alter table student rename stu;
alter table student drop sex;
增加一个字段,这里把刚刚删除的sex又增加回来了:alter table student add sex char(6);
增加 id 这一选项,其中unsigned
表示不能为负;not null
表示不能为空;primary key
表示不能重复;auto_increment
表示id是递增的;first
表示把 id 放在最前面alter table student add id int unsigned not null primary key auto_increment first;
给student
这个表添加生日 birth
这个选项,date
表示日期类型,after name
表示放在name的后面alter table student add birth date after name;
给student添加 tel 这个选项,其中 default '-'
表示默认 - 填充:alter table student add tel char(11) default '-';
(18)插入数据
insert into student (id, name, birth, age, sex, tel) values (1000, "jack", "1998-4-24", 25, "man", "123456789");
只插入一部分数据,其中 id 由于设置了递增,所以会自动在前一个数据上加一insert into student (name, birth, age, sex, tel) value("tom", "1990-9-9", 30, "man", "111111111");
也可以同时插入多条数据:insert into student values(1002, "rose", "1997-1-15", 22, "female", "22222222222"), (1003, "frank", "2000-7-14", 15, "male", "33333333333");
由于 tel 设置了 default ‘-’ ,所以插入时不写这个,他会自动采用默认值:insert into student (id, name, birth, age, sex) values(1004, "aa", "1996-10-21", 24, "male");
这里一开始是不支持中文的(可以看下面(20)修改字符集进行解决):insert into student values(1005, "张三", "1992-11-11", 30, "male", "44444444444");
(19)查询数据
select * from student;
只查名字:select name from student;
只查询 id > 1002 的人的名字:select name from student where id > 1002;
只查询 id 在1001 至 1004 之间的人的名字:select name from student where id between 1001 and 1004;
(20)修改字符集(字符编码格式)
alter table student convert to character set utf8;
(21)修改数据
update student set tel = "00000000000" where name = "aa";
(22)删除记录
delete from student where id = 1000;
(23)删除表
drop table sutdent;
(24)删除数据库
drop database test01_database;
上一篇:Java面试题-微服务