数据库未整理的笔记(1)

一、搭建mysql数据库服务器 192.168.4.50
1装包
1.1 删除系统自带mariadb mysql数据库软件
rpm -q mariadb-server mariadb
]#rpm   -qa  |  grep   -i  mariadb
]#systemctl  stop  mariadb
]#rpm   -e  --nodeps   mariadb-server   mariadb
]#rm  -rf  /etc/my.cnf
]#rm  -rf  /var/lib/mysql
1.2 安装mysql软件
]# tar  -xf  mysql-5.7.17-1..tar
]#  ls  *.rpm
]#  rm  -rf   mysql-community-server-minimal-5.7.17-
yum list | grep -i perl-json
]#  yum   -y   install    perl-JSON   
]#  rpm  -Uvh    mysql-community-*.rpm
]#  rpm  -qa   | grep  -i   mysql检查

修改配置文件(不需要修改配置文件 按默认配置运行即可)
ls  /etc/my.cnf
启动服务
systemctl   start  mysqld
]# systemctl   enable  mysqld
查看服务进程和端口号
[root@mysql51 mysql]# ps   -C   mysqld
  PID TTY          TIME CMD
 3252 ?        00:00:00 mysqld
[root@mysql51 mysql]# netstat  -utnlp  | grep  mysqld
tcp6       0      0 :::3306                 :::*                         
        
systemctl status mysqld 查看


二、数据库服务的基本使用
2.1 使用初始密码在本机连接数据库服务
]# grep password /var/log/mysqld.log
]# mysql   -hlocalhost   -uroot   -p'hqToPwaqf5,g!><'

2.2 重置本机连接密码
mysql>set global validate_password_policy=0;  只检查密

码的长度
mysql>set global validate_password_length=6; 密码长度

不能小于6个字符

mysql>alter user root@"localhost" identified by"123456"
mysql>quit

]# mysql   -hlocalhost   -uroot   -p123456
mysql>  show   databases;

让密码策略永久生效
]#vim  /etc/my.cnf
[mysqld]
validate_password_policy=0
validate_password_length=6
:wq
]#systemctl   restart  mysqld

2.3 把数据存储在数据库服务器上的过程?
连接数据库服务器(命令行   API    图形工具)
选择库 (存放数据的文件夹)
选择表 (就是文件)
插入记录  (文件中的行)
字段  列
结构化查询语言
2.4 sql命令使用规则

2.5 sql命令分类DDL数据定义语言DML数据操作语言\c终止
连接数据库服务 建库 建表 插入记录
2.6 管理数据库的sql命令
查看  show  databases;
创建  create  database  库名;
切换  use  库名;  
删除  drop   database  库名;   
显示当前所在的库      select  database();

2.7 管理表的 sql命令
查看  mysql> show  tables;
创建  mysql> create  table  gamedb.stuinfo(
    -> name  char(10),
    -> addr  char(20)
    -> );

删除     drop  table    库名.表名   ;  

查看表记录  select   *  from   库名.表名   ;  
查看表结构  desc    库名.表名     ;

2.8  管理记录的sql命令
查看   select   *  from   库名.表名   ;
插入   insert    into   库名.表名  values(字段值列表);
insert into  gamedb.stuinfo values ("tom","beijing");
insert into  gamedb.stuinfo values ("bob","beijing");

修改  update  库名.表名  set   字段名=值 where  条件;
update  gamedb.stuinfo  set  addr="shanghai" where

name="tom";

删除
delete  from   库名.表名;
delete  from  gamedb.stuinfo;
++++++++++++++++++++++++++++++++
三、mysql数据类型
数值  tinyint 有符号-128~127   无符号0~255 (1字节)
字符  宽度
枚举  
 时间birthday date;
up_time time;
y_star year;
party datetime;

show create table studb.stuinfo;
create table t2(name char(10)) DEFAULT CHARSET=utf8
alter table xueshengbiao DEFAULT CHARSET=utf8 default charset=utf8
3.1  数值类型   (成绩  年龄   工资  )
每种类型的存储数据的范围都是固定
整数类型 (只能存储整数)


浮点型 有效位, 小数位


字符    变长 大文本类型text blob
路径 char 255 固定长度   varchar65532
create  database  studb;
use   studb;
create  table   t1(level  smallint,age  tinyint);
insert into  t1  values(1024,19),(9,21);

insert into  t1  values(21.45,9.87);
select   * from  t1;

create  table   t2(
level   int     unsigned,
age   tinyint   unsigned
);

desc   t2;
insert into  t2  values(-201,  -1);
insert into  t2  values(201,  0);
select  * from t2;

create  table   t3(
pay   float(5,2)  
);
xxx.xx
999.99
      0.00
-999.99

insert  into  t3  values(124);
insert  into  t3  values(1.24);
insert  into  t3  values(-999.99);
insert  into  t3  values(1000);
select  *  from  t3;


create  table   t4(
pay   double(7,2)  
);
xxxxx.xx
99999.99
-99999.99


create  table   t5(
name    char(5),
addrhome   char(30),
email   varchar(25)
);

insert   into  t5  values

("bob","beijing","[email protected]");

select  * from  t5;

----------------------
create  table  t16(
name   char(15),
age      tinyint   unsigned
pay      float(7,2),
email   varchar(30),
birthday    date,
up_time     time,
start_year  year,
party          datetime
);

desc   t6;

insert into  t6  values

("lanyiqun",18,26800,"[email protected]",20181001,083000,

1990,20180501220000);

select   *  from  t6;

mysql> select  now();
mysql> select  year(  now() );
mysql> select  year( 20191120 );
mysql> select  month(  now() );
mysql> select  day(  now() );
mysql> select  date(  now() );
mysql> select  time(  now() );

insert  into  t16  values( "lucy", 21 , 18800,

"[email protected]" , date( now() ), time(now()) ,  year

(20111218) , now()  );

insert  into  t6(name,start_year)  values("tom",69);

+++++++++++++++++++++
create  table  t7  (
meetting   datetime,
party          timestamp
);
desc  t7;
insert into  t7  values( now() , now() );
insert into  t7(party)  values(20161123184518);
insert into  t7(meetting )   values(20201123153000);
select  * from t7;
+++++++++++++++++++
create  table  t8(
name  char(15),
sex      enum("boy","girl","no"),
likes    set("woman","game","money","flim","eat")
);

desc   t8;

insert into t8  values

("guoxuehao","boy","game,flim,eat");

insert into t8  values("xierongyue",  3  ,"money,eat");

select   * from  t8;



create   database  db2;
use   db2;
create  table   t2(
name   char(3),
level    int(3)  zerofill
);
insert into  db2.t1  values  ("bob",1);
insert into  db2.t1  values  ("bob",99);
insert into  db2.t1  values  ("bob",218);
insert into  db2.t1  values  ("bob",7218);
name     level
bob         001
bob         099
bob         218
bob       7218

+++++++++++++++++++++++++++++++
create  table   t5(
classroom   char(7)  default   "nsd1801",
name   char(5)  not   null  ,
age    tinyint(2)  unsigned  zerofill  default   18,
sex     enum("boy","girl")  not  null  default  "boy"
);
desc  t5;
insert into  t5(name)values("lucy");
insert into  t5    values("nsd1802","alice",31,"girl");
select   *  from   t5;
++++++++++++++++++++++++++++++++++++
二、修改表结构

alter  table   studb.t1   add   name   char(15)  first ;
alter  table   studb.t1   add   addrhome   varchar(50)  default  

"beijing";
alter  table   studb.t1   add   sex   enum("boy","girl") not null  

default "boy"  after   name;

desc  studb.t1;
select  * from  studb1;


mysql> alter  table   studb.t1   drop sex  ,   drop name;

mysql> alter table  t1  modify  addrhome char(10) default

"beijing";

mysql> alter table   t1  modify level smallint(6) not null;

mysql> alter table t1 modify age tinyint(4) first;

mysql> alter table  t1  change addrhome  home char(10) default

"beijing";

mysql> alter table  t1   rename    dogperson;

+++++++++++++++++++
约束条件 限制字符赋值
四部分 NULL  NO
     Key  健值  主 键    外键    唯一 索引  全文索引
     Default  Null 默认值 系统为空
     Extra

3.1.1普通索引的使用(index)
使用规则?

查看索引
desc  表名;
show   index  from   表名;

desc   studb.t2;
show  index  from studb.t2;

创建索引:
***在已有表创建索引
create   index   索引名  on   表名(字段名);

create  index    aaa     on    studb.t2(age);
desc   studb.t2

mysql> show   index  from  studb.t2\G;
Key_name: aaa           #索引名
Column_name: age    #字段名
Index_type: BTREE (二叉树)    Hash     #索引类型
drop index  bbb on d2

***建表时创建索引
create  table  表名(
字段列表,
index(字段名),
index(字段名),
);

create  table   studb.t21(
classroom   char(7)    default   "nsd1801",
name          char(5)  not   null  ,
age             tinyint(2)  unsigned  zerofill  default   18,
sex              enum("boy","girl")  not  null  default  "boy",
index(name),
index(age),
index(classroom)
);

desc  studb.t21;
show  index  from  studb.t21\G;

删除索引   drop   index   索引名  on   表名;
mysql> drop  index  aaa on  t2;
mysql>  desc   t2;
mysql>  show  index  from  t2;


++++++++++++++++++++++++++++++++++
在已有表创建 主键
mysql>   alter table  t21  add  stu_id  char(9) first ;

mysql>   alter table  t21  add  primary key(stu_id);
mysql>  desc   t21;

insert into  t21  values(null,"nsd1801","lxd",18,"boy");  报错
insert into  t21  values("nsd180101","nsd1801","lxd",18,"boy"); 可


insert into  t21  values("nsd180101","nsd1801","gxh",18,"boy"); 报


insert into  t21  values("nsd180118","nsd1858","gxh",18,"boy");  可



select  *  from  t21;

alter  table   表   drop    primary  key;
desc  t21;
insert into  t21  values("nsd180101","nsd1801","gxh",18,"boy"); 可

以了

建表时创建主键
create  table  表名(
字段列表,
primary  key(字段名)
);


create  table  表名(
字段  类型(宽度)    primary  key,
......
);

create  table   studb.t22(
person_id  char(18),
name  char(10),
age  tinyint(2)  unsigned,
pde
);

desc studb.t22;
insert into    studb.t22  values(null,"bob",21); 错误
insert into    studb.t22  values("xxxxxx","bob",21); 可以了
insert into    studb.t22  values("xxxxxx","lucy",19); 错误
insert into    studb.t22  values("Fxxxxx","lucy",19); 可以了

create  table   studb.t24(
person_id  char(18)   primary   key,
name  char(10),
age  tinyint(2)  unsigned
);

desc   studb.t24;

创建复合主键:多个字段一起做主键,插入记录时,只要做复合主键字段的值

不同时重复,就可以插入记录。
mysql> create  table studb.t23(
    -> clientip   char(15),
    -> port smallint(2),
    -> status  enum("allow","deny"),
    -> primary  key(clientip,port)
    -> );
mysql> desc   studb.t23

insert into  studb.t23  values("1.1.1.1",22,"allow");可以
insert into  studb.t23  values("1.1.1.1",22,"deny");报错
insert into  studb.t23  values("2.1.1.1",22,"deny");可以

pri              pri                                    
clientip     port        status
1.1.1.1      22           allow
1.1.1.1      23           allow
2.1.1.1      23           deny

主键primary  key  通常和auto_increment连用。
create  table   studb.t27(
stu_id  int(2)  zerofill    primary   key  auto_increment,
name  char(10),
age  tinyint(2)  unsigned,
sex   enum("boy","girl")
);

insert into  studb.t27(name,age,sex)values("bob",19,"girl");
insert into  studb.t27(name,age,sex)values("bob",19,"girl");
select  * from t27;

向已有表中添加记录编号字段id  并使其字段的值自动增长方式赋值
mysql> alter table dogperson add  id int(2) primary key
    -> auto_increment first;

select  * from  dogperson;
select  * from  dogperson  where  id=3;

alter  table  studb.t22  add primary key(name);
+++++++++++++++++++++++++++++
外键的使用在知识点文档里。


猜你喜欢

转载自blog.csdn.net/weixin_40447206/article/details/81051431