数据库基础知识
Posted lxiaoxuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库基础知识相关的知识,希望对你有一定的参考价值。
使用cmd访问mysql数据库
1、安装数据库
2、服务(我的电脑->右键->管理->服务->mysql)是否启动(如果没启动就右键启动)
3、a.在cmd中进入mysql安装目录的bin文件夹,直接使用mysql登录。
b.配置环境变量,直接在cmd的任何目录中使用mysql命令登录。
c.直接开始菜单-mysql-cmd窗口-直接输入密码
如果使用a,b 方式,则需要完整的登录命令:
mysql -h host_name -u user_name -p password:当连接MySQL服务器不在同台主机时,填写主机名或IP地址(u:登录MySQL的用户名,P:登录MySQL的密码)
注意:密码如果写在命令行的时候一定不能有空格。如果使用的系统为linux并且登录用户名字与MySQL的用户名相同即可不用输入用户名密码,linux默认root登陆,
windows默认用户是ODBC。
显示所有的数据库:
show databases;
创建数据库:
create database 数据库名;
删除数据库:
drop database 数据库名;
指定使用哪一个数据库:(切换数据库,之后的操作全是对此数据库进行的操作)
use 数据库名;
显示默认数据库中的所有表:
show tables;(显示当前库的所有表,使用之前先必须指定哪一个数据库)
创建表:(varchar表示字符串,1个长度表示1个字符即1个汉字)
create table 表名(
列名1 类型 ,
列名2 类型
//示例
id int PRIMARY KEY auto_increment,
name varchar(4),
sex int,
age int,
stuNum varchar(10)
)
添加表数据:(数据库中的字符串用单引号括起来)
insert into t_students(表名) values(‘jbl‘,1,20,‘123‘);
-- 选择插入某些字段
-- 在表名后添加小括号,在小括号里面填入要插入的字段名
-- 如果表名后不指定要插入字段,则默认要把所有字段内容赋值
INSERT INTO t_class0225(id,`name`,age,`address`) VALUES(NULL,‘小李‘,18,‘延龙‘)
INSERT INTO t_class0225(id,age,`address`) VALUES(NULL,18,‘延龙‘)
显示表(查询)某一个表的数据:(*:表示通配符,通配所有字段)
select * from t_students(表名);//表示所有字段全部显示
select name,age(字段名) t_students(表名);//只显示姓名和年龄字段
修改表数据:(带条件,否则会把整个表的都改了)
where:指定修改某一行的位置
and:表示并且,用来指定多个条件(一个条件已经不足以确定一行)
update 表名 set `字段名`=修改后的内容 where 字段名=表中某数据;
删除表数据:(一定要带条件where,否则会把整个表的数据都删了)
or:表示或者,多个条件可以使用()小括号,用法和java一样
delete from 表名 where 字段名=表中某数据;
查询本机IP:
com中输入ipconfig
主键:PRIMARY KEY
数据库每一行的唯一标识,不能重复。
SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)
数据类型:
数值类型:
int,smallint,float,double
货币数据类型:
DECIMAL(M,D) 表示数小数
M:整数位数+小数位数的总和
D:小数位数
整数位数不能超过M-D
字符串类型:
char(M):定长的字符串 M:长度
varchar(M):可变长的字符串
text:小文本字符串
时间类型:
Date: YYYY-MM-DD
time: hh:mm:ss
DateTime: YYYY-MM-DD hh:mm:ss
布尔类型:
bit
AUTO_INCREMENT:
自动标识列,在需要产生唯一标志符号或者顺序值时候,可用此属性。值一般从1开始,每行增加1,在插入NULL到一个AUTO_INCREMENT列时,
MySQL会插入一个比该列中当前最大值大1 的值,一个表中最多能有一个有此属性的列。对于想使用此属性的列应该定义为NOT NULL,并定义为
PRIMARY KEY 或者定义为UNIQUE键。(只能用在int类型上,每一张表中只能有一个自动递增字段。)
UNSIGNED:
无符号,此属性禁用负值,将数值的取值范围从零开始。
NULL和NOT NULL
默认为NULL,即插入值时没有在此字段插入值时自动填NULL,如果指定了NOT NULL,则必须在插入值时在此字段添入值,不允许插入NULL值。
DEFAULT
可以通过此属性来指定一个缺省值,即如果没有在此列添加值,那么默认添加DEFAULT后指定值。
ZEROFILL
前导零填充数值类型值以达到列的显示宽度。
DEFAULT cur_timestamp
创建新记录时默认保存当前时间(仅适用timestamp数据列)
ON UPDATE cur_timestamp
修改记录时默认保存当前时间(仅适用timestamp数据列)
数据表类型:
MyISAM:成熟、稳定和易于管理
InnoDB:加入事物、数据行级锁定机制、外键约束条件、崩溃恢复等新功能
HEAP:只存在于内存中,可做临时表
1、确定主外键关系,两个表,在外键表中引用主键表的id
2、指定外键所对应的主键表,主键字段名
外键:foreign key(外键字段) references 表名(引用表中的某字段)
(自动检查外键是否匹配,仅适用InnoDB)
create table score(
cid int not null auto_increment primary key,
score int,
sid int,
foreign key(sid) references t_student(id)
);
主表和从表 :
1、当主表中没有对应的记录时,不能将记录添加到子表
——成绩表中不能出现在学员信息表中不存在的学号;
2、不能更改主表中的值而导致子表中的记录孤立
——把学员信息表中的学号改变了,学员成绩表中的学号也应当随之改变;
3、子表存在与主表对应的记录,不能从主表中删除该行
——不能把有成绩的学员删除了
4、删除主表前,先删子表
——先删学员成绩表、后删除学员信息表
比较运算符:
= : 相等(两个数不能为空)
!= 或者 <> : 不等于
<=> 和=一样,只是多了比较null
例子:SELECT 1=NULL
SELECT 1<=>NULL
BETWEEN运算符:用于检验一个值(或者一个求值表达式)是否存在一个指定的范围内:
IN运算符:用于检验一个值(或者一个求值表达式)是否包含在一个指定的值集合中。
LIKE运算符:它通过在表达式中允许使用专门的通配字符,可以找出与指定搜索字符串全部或部分匹配的记录。
“%” (百分号) 代表任意长度(长度可以为0)的字符串
举例:
a%b表示以a开头,以b结尾的任意长度的字符串。如acb,addgb,ab 等都满足该匹配串
“_ ”(下横线) 代表任意单个字符
举例:
a_b表示以a开头,以b结尾的长度为3的任意字符串。如acb,afb等都满足该匹配串
以上是关于数据库基础知识的主要内容,如果未能解决你的问题,请参考以下文章