数据库构建与基本管理

三大主流平台: windows linux unix (尤尼斯)
数据库软件 : Oracle DB2 SQL server (微软) —【非开源】 MySQL ------关系性数据库软件 (先设计结果,然后在存储数据)
Redis MongoDB memcached (Nosql 非关系性)
如何选择数据库 :1.是否开源(商业)
2.是否跨平台7

SQL server (微软) ------》 只能 windows 不开源
Oracle DB2 ---------------》 跨三大平台 ,不开源
MySQL Redis MongoDB memcached —》 跨三大平台 ,开源
开源 : 免费下载源代码,可以自己开发更改。如果代码不能满足,可以付费请人改(开源不等于免费)
rpm -Uvh (U升级安装 i,全新安装)
/etc/my.cnf (服务主配置文件)
/var/lib/mysql (数据库目录)
ps -C mysqld (单独查进程)
ps aux | grep -i mysqld (查看mysqld所属者) --------如果源码包安装要创建用户,所属组
ss -nutlp | grep :3306 (查mysqld )
mysql-community-client-5.7.17-1.el7.x86_64 (管理命令包)
ls /var/log/mysqld.log (首次登入密码在里面 ,报错日志)
grep password /var/log/mysqld.log (查初始化密码)
mysql -hlocalhost -uroot -p’lItWpaiet5_R’ (登入本地,为root的数据库)『-h服务器 -u用户 -p密码 +数据库名』
alter user root@“localhost” identified by “123qqq…A”; (初次登入要改密码。至少八位)
show variables like “%password%”; 查看密码
在数据库中改(临时设置)
validate_password_policy=0;(改为0策越)只验证长度
validate_password_length=6;(改为密码为6位)

vim /etc/my。cnf (退出来 永久设置)
[mysqld]
validate_password_policy=0;(改为0)
validate_password_length=6;(改为密码为6位) 默认值是8个字符
systemctl restart mysqld

数据库存储流程
客服端把数据存储到服务器上的步骤
连接数据库服务器
建库 //类似与系统文件夹
建表 //类似于系统文件
插入记录 //类是于文件里的行
断开连接
mysql 命令:
DDL 数据定义语言 (create-创建 alter-修改 drop-删除)
DML 数据操作语言 (insert-插入 update-修改表 delete-删除表)
DCL 数据控制语言 (grant revoke)
DTL 数据事物语言 (commit rollback savepoint)
库管理命令:
show databases; 查看库 show databases \c; (放弃当前命令)
select database()显示当前所在的库
use mysql; 切换到mysql库
create database 库名; 创建新库 ----------------在数据库执行会自动创建mysq用户与组(权限是mysql)-----------在命令行mkdir /var/lib/mysql/+库 (在数据库会有库,能切换到库,但不能创建,权限为root )(chmod o+w或者加入mysql组/用户)
show tables; 显示已有的表
drop database 库名; 删除库
注:库命名规则 (可以使用数字/字母/下划线,但不能纯数字。。区分大小写,具有唯一性。不可以使用指令关键字,特殊字符)

create database studb (创建库)
use studb 进入库
create table studb。student(name char,age int,homeaddress char); (创建表 内容name age home)
char(描述信息一个字符)—char(3)表示可以三个字符
int (数字描述信息很大数)----数值型
desc student (查看表结构)
insert into studb.student values(“a”,“19”.“b”),(“b”,“22”,“f”);
select * from studb.student; (查看)
update student set age=20; (修改表所有age)
update student set age=28 where name=“a”; (修改a 的 age)
delete from student where name=“d“; (删除name=d 的那一行)
delete from t2 where 年龄=255 and 级别=555;
delete from student; (删除表student所有)
drop table student; (删除表)
drop database stud; (删除库)
create table studb.student(name char(2),age int,home char(2));
insert into studb.student values (“aa”,“19”,“bb”),(“tt”,“20”,“ff”)(“cc”,“60”,“uu”);
show create table t1; (查看支持什么)
create database 学生库;
create database 学生库;
create database 学生库;
create table 学生库.学生表(学号 char(9),姓名 char(3),性别 char)DEFAULT CHARSET=utf8;

常见的信息种类
数值型(int):体重 身高 成绩 工资
字符型(char):姓名 工作单位 通信地址
枚举型(enum): 兴趣爱好 性别
日期时间型(datetime/timestamp):出生日期,注册时间

数值类型

浮点
create table t2(年龄 tinyint unsigned,级别 smallint)DEFAULT CHARSET=utf8;
unsigned(不取负)
create table db1.t3(数值 float(5,2))DEFAULT CHARSET=utf8;
float(5,2)表示数值最大:999.99 最小:-999.99 范围取值
int (最大支持10位数)
bigint (最大支持19位数)
手机号码用 char
字符类型

char(5)定长:表示可以取五位,不足五位(默认在后空格补齐)—最大255字符
varchar(5)变长:表示最大取五位,不够五位取实际值,根据实际大小分配空间(节省空间)
大文本类型:text/blob :字符数大于65535存储时使用
create table db1.t4(class char(7),name char(3),email varchar(30));
insert into db1.t4 values(“nsd1809”,“ji”,"ji.@163.com"),(“nsd1808”,“tom”,"qq.@qq.com");

日期时间类型
datetime : 占用八个字节,范围:1000-01-01 00:00:00.000000----9999-12-31 23:59:59.999999
timestamp: 占用四个字节 ,范围:1970-01-01 00:00:00.000000–2038-01-19 03:14:07.999999
date (四字节) yyyymmdd(年月日) 0001-01-01–9999-12-31
time (三字节) hhmmss (时分秒)
year (一字节)yyyy (年) 1901–2155
当未给timestamp字段赋值时,自动以当前系统时间赋值,而datetime字段默认赋值为NULL
year年份处理
默认用四位 (当只有两位 01-69视为2001–2069;70-99视为1970–1999)
create table db1.t7(meeting datetime,
-> party timestamp);
insert into db1.t7(meeting) values(20191230122500);
insert into db1.t7(party) values(20161225162000);
±--------------------±--------------------+
| meeting | party |
±--------------------±--------------------+
| 2018-12-10 12:30:00 | 2017-11-27 20:30:00 |
| 2019-12-30 12:25:00 | 2018-12-07 10:42:06 |
| NULL | 2016-12-25 16:20:00 |
±--------------------±--------------------+

create table db1.t5(姓名 char(3),开始 year,时间 time,生日 date,聚会时间 datetime)DEFAULT CHARSET=utf8;
insert into db1.t5 values(“张三”,1990,083025,20181228,20151224203212);
±-------±-------±---------±-----------±--------------------+
| 姓名 | 开始 | 时间 | 生日 | 聚会时间 |
±-------±-------±---------±-----------±--------------------+
| 张三 | 1990 | 08:30:25 | 2018-12-28 | 2015-12-24 20:32:12 |
±-------±-------±---------±-----------±--------------------+
insert into db1.t5 values(“张三”,1990,08,20181228,20151224203210);
±-------±-------±---------±-----------±--------------------+
| 姓名 | 开始 | 时间 | 生日 | 聚会时间 |
±-------±-------±---------±-----------±--------------------+
| 张三 | 1990 | 08:30:25 | 2018-12-28 | 2015-12-24 20:32:12 |
| 张三 | 1990 | 00:00:08 | 2018-12-28 | 2015-12-24 20:32:10 |
±-------±-------±---------±-----------±--------------------+
时间函数
select year(now());获取系统当前年----select year(20181221)—获取2018;
select now(); 获取系统年月日。时分秒;
select date(now());获取系统当前年月日; ==select curdate();
select time(now());获取系统当前时分秒;===select curtime()
select day(now()); 获取系统当前几号;
select month(now());获取系统当前几月;
枚举类型
从给定值集合中选择单个值,enum(值1,值2.。。)
从给定值集合中选择单个或多个值,set(值1,值2.。)
create table db1.t6(name char(3),sex enum(“boy”,“girl”,“no”),likes
desc db1.t6
±------±--------------------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±--------------------------±-----±----±--------±------+
| name | char(3) | YES | | NULL | | NULL-----(空值)
| sex | enum(‘boy’,‘girl’,‘no’) | YES | | NULL | |
| likes | set(‘eat’,‘sleep’,‘game’) | YES | | NULL | |
±------±--------------------------±-----±----±--------±------+
set(“eat”,“sleep”,“game”));
insert into db1.t6 values(“tom”,“no”,“eat,sleep”);
±-----±-----±----------+
| name | sex | likes |
±-----±-----±----------+
| tom | no | eat,sleep |
±-----±-----±----------+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值