数据库的一些术语解释:
1)关系:关系就是二维表。并满足如下性质:
表中的行、列次序并不重要
2)行row:表中的每一行,又称为一条记录
4)列column:表中的每一列,称为属性,字段
5)主键(Primary key):用于惟一确定一个记录的字段
6)域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值
7)属性:数据所具有的特征或性质
8)实体:客观存在并可以相互区分的客观事物或抽象事件称为实体
9)关联:表和表间的关系
10)约束:constraint,表中的数据要遵守的限制
11)惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个
12)外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
13)检查:字段值在一定范围内
14)范式:设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。
15)索引:将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储
选择:在表中挑选出符合条件的行
投影:在表中挑选出需要的字段
数据库要遵守的设计规则:
1NF:每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。除去同类型的字段,就是无重复的列
2NF:第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。通常为表加上一个列,以存储各个实例的唯一标识PK。非PK的字段需要与整个PK有直接相关性
3NF:满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系
数据库表要遵守的限制:
主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL,一个表只能存在一个
•惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个
•外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据
•检查:字段值在一定范围内
SQL语言的规范:
1)在数据库系统中,SQL语句不区分大小写(建议用大写)
2)但字符串常量区分大小写
3:)QL语句可单行或多行书写,以“;”结尾
4)关键词不能跨多行或简写
5)用空格和缩进来提高语句的可读性
6)子句通常位于独立行,便于编辑,提高可读性
7)注释:
SQL标准:
/*注释内容*/ 多行注释
--注释内容单行注释,注意有空格
MySQL注释:
#
数据库对象的命名规则
必须以字母开头
可包括数字和三个特殊字符(# _ $)
不要使用MySQL的保留字
同一Schema下的对象不能同名
linux中安装MySQL:
musql安装方式:
1、源代码:编译安装
2、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用
3、RPM安装
为快速学习MySQL,可以用RPM安装
1)检查系统深入自带安装MySQL
rpm -qa |grep mysql
2)如果系统有安装,可以选择卸载
rpm-e mysql // 普通删除模式
rpm-e--nodeps mysql // 强力删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其进行强力删除
3)安装MySQL
yum install mysql
yum install mysql-server
4)启动
service mysqld start
chkconfig mysqld on //设置开机启动
ss -ntl //查看MySQL端口3306是否打开
提高MySQL的安全性
SQL安装好后,可以匿名登录所以需要提高其中的安全性 ,我们可以用mysql_secure_installation 命令防止匿名登录
1)设置数据库管理员root口令
mysql -u root password "新的root口令"
2)禁止root远程登录mysql
3)删除anonymous用户帐号
4)删除test数据库
sql 语句分类:
SQL语句:
DDL: Data DefinationLanguage
CREATE, DROP, ALTER
DML: Data Manipulation Language
INSERT, DELETE, UPDATE
DCL:Data Control Language
GRANT, REVOKE
DQL:Data Query Language
SELECT
数据库操作:
1)创建数据库:
CREATE DATABASE|SCHEMA [IF NOT EXISTS] 'DB_NAME'
2)删除数据库:
DROP DATABASE|SCHEMA SCHEMA [IF EXISTS] 'DB_NAME';
3)查看数据库:
SHOW DATABASES;
4)查看支持所有排序规则:
SHOW COLLATION;
5)获取命令使用帮助:
mysql> HELP KEYWORD;
6)查看支持所有字符集:
SHOW CHARACTER SET
7)进入数据库:
use 数据库名
表操作:
CREATE TABLE [IF NOT EXISTS] ‘tbl_name’ (col1 type1 修饰符, col2 type2 修饰符, ...)
字段信息
•col type1 表的名字,类型
•PRIMARY KEY(col1,...) 主键,修饰符
•INDEX(col1, ...)
•UNIQUE KEY(col1, ...)
2)查看所有的引擎:
SHOW ENGINES;
3)查看表:
SHOW TABLES [FROM db_name];
4)查看表结构:
DESC [db_name.]tb_name;
5)删除表:
DROP TABLE [IF EXISTS] tb_name;
6)查看表创建命令:
SHOW CREATE TABLE tbl_name;
7)查看表状态:
SHOW TABLE STATUS LIKE 'tbl_name'\G
对表数据进行操作:
DML: INSERT, DELETE, UPDATE
INSERT(插入数据)
INSERT [INTO] tbl_name[(col_name,...)] {VALUES | VALUE} (val1,...),(...),...
tbl_name :表的名字
col_name :表头
val1 :数据,如果没有指定表头,就按照表头顺序填写
•UPDATE: ()
UPDATE tbl_nameSET col1=val1, col2=val2, ... [WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];
•DELETE:
DELETE FROM tbl_name[WHERE clause] [ORDER BY 'col_name' [DESC]] [LIMIT [m,]n];
可先排序再指定删除的行数
•TRUNCATE TABLE tbl_name; 清空表
用户账号:
1)用户账号:'user'@'host'
user: 用户名
host: 允许用户通过哪些主机远程连接mysqld服务
IP、网络地址、主机名、通配符(%和_)
2)创建用户:
CREATE USER 'username'@'host' [IDENTIFIED BY 'password'];
3)查看当前用户:
SELECT user();
4)查看用户:
SELECT User,Host,PasswordFROM user;
5)删除用户:DROP USER 'username'@'host';
示例:删除默认的空用户
DROP USER ''@'localhost';
6)更改口令:
* SET PASSWORD FOR 'user'@'host' = PASSWORD(‘password');
* UPDATE user SET password=PASSWORD('magedu') WHERE User='root' ;
注意:上面修改表的命令不会马上生效,需执行FLUSH PRIVILEGES生效
* /usr/local/mysql/bin/mysqladmin-u root –poldpasswordpassword 'newpassword‘