RDBMS 关系型数据库管理系统
1.数据库创建、删除
2.创建表、删除表、修改表
3.索引的创建删除
4.用户和权限
5.数据增、删、查、改
DBMS:数据管理系统
数据管理独立性
有效的完成数据存取
数据的完整性和安全性
数据的集中管理 (降低冗余)
并发存储与故障恢复
减少应用程序开发时间
SELETE
MySQL:
Community Edtion 社区版本
Enterprise Edtion 企业版本
软件包格式:安装方式
1.软件包管理器特有的格式
rpm包,.exe文件包等
2.通用二进制格式
3.源程序
依赖包 depend on ,先进行卸载依赖包
大部分依赖包都是一些库文件,有动态库也有静态库,一个程序的依赖包如果没有安装,只安装了这个程序本身是不能使用;
你可以理解为似windows的库文件,譬如DLL;比如我要装某个软件,这个软件又依赖于某个开发包,这个开发包包含这个软件所要运行的环境文件,这就是依赖关系。
二进制程序:
mysql
-u username
-p passwd
-h mysql_server
-h 192.168.245.134
linux:socket
windows:memory
mysql客户端:
交互式模式
批处理模式
执行mysql脚本
交互式模式中的命令类别:
客户端命令
服务器端命令
都必须适用语句结束符,默认“;”
初始化过程
关系数据库对象:
库、表、索引、视图、约束、存储过程、存储函数
触发器:做主动数据库
表:
行,列
表:实体集
行:row
列:field,column 属性,字段
字段名称,字段类型,数据类型,类型修饰符(约束,限制功能),索引
字符
char(n)
varchar(n)可变长度,结束符 +1
binary(n)区分大小写的字符
varbinary(n)
text(n)
blob(n)
数值
精确数值
整型
TINYINT
SMALLINT
MEDIUMINT
BIGINT
修饰符:UNSIGNED,无符号
NOT NULL
十进制
DECIMAL
近似数值
浮点型
FLOAT
DOUBLE
日期
DATE
TIME
DATETIME
STAMP
布尔
内置:
DML:Data Manapulate Languare 数据操作语言,定义对数据库记录的操作
INSERT:插入
REPLACE:替换数据
UPDATE:修改 更新数据
DELETE:删除
修改表:ALTER table tb_name ADD cource VARCHAR(100)
MODIFY:改变类型
CHANGE :alter table tb_name change wen(旧) wenxueqi(新)
ADD:alter table tb_name ADD cource VARCHAR(100)
DROP:drop + 字段名称 drop 【COLUMN】db_name插入数据:
INSERT INTO tb_name
INSERT INTO student (Name,Gender) VALUE ('wenxueqi' , 'M'),('liuyumeng' , 'F');
增加数据(名称、性别)
更新数据:UPDATA
UPDATA tb_name SET Cource=
DDL:Data Definition Languare 数据定义语言,定义对数据库对象(库、表、列、索引)的操作
CREATE:创建
ALTER:修改索引
DROP:删除
RENAME:修改表名
第一种:RENAME database olddbname TO newdbname 丢失数据的危险
第二种:写脚本-----但是如果新表名后面加数据库名,就会将老数据库的表移动到新的数据库,所以,这种方法即安全,又快速。
#!/bin/bash # 假设将sakila数据库名改为new_sakila # MyISAM直接更改数据库目录下的文件即可 mysql -uroot -p123456 -e 'create database if not exists new_sakila' list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='sakila'") for table in $list_table do mysql -uroot -p123456 -e "rename table sakila.$table to new_sakila.$table" done
TRUNCATE:删除内容、释放空间但不删除定义,也就是数据表的结构还在
创建数据库
CREATE DATABASE DB_NAME;
CREATE DATABASE IF NOT EXISTX DB_NAME; 判断是否有DB_NAME数据库的存在并创建;
创建表
CREATE TABLE tb_name(1,2……);
查看库中的表:show tables from db_name;
查看标的结构:desc tb_name;
删除表:drop tb_name;
DCL:Data Control Languare 数据控制字语言,定义对数据库、表、字段、用户的访问权限和安全级别。
GRANT:增加权限
REMOKE:降低权限
Transaction Control:事务控制
COMMIT、ROLLBACK、SAVEPOINT等
在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。
SQL语句可单行或多行书写,以“;”结尾。
关键词不能跨多行或简写。
用空格和缩进来提高语句的可读性。
子句通常位于独立行,便于编辑,提高可读性。
SELECT * FROM tb_table
注释:
SQL标准:
/**/。多行注释
“--” 单行注释
MySql注释:
“#”
数据库操作:
SHOW DATABASES [LIKE wild]; //列出Mysql服务器上的数据库
如果使用LIKE wild不符,wild字符串可以是一个使用SQL的”%”和”_”通配符的字符串。
MySql自带数据库:
Information_schema:主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信息、字符集信息、分区信息等。(数据字典表)
Mysql:存储了系统的用户权限信息及帮助信息。
Test:系统自动创建的测试数据库,任何用户都可以使用。
CREATE DATABASE [IF NOT EXISTS]数据库名; //创建数据库
SHOW CREATE DATABASE <数据库名>; //查看创建的数据库
DROP DATABASE [IF EXISTS]数据库名; //删除数据库中得所有表和数据库
选用数据库:
USE 数据库名; //把指定数据库作为默认(当前)数据库使用,用于后续语句。
查看当前连接的数据库
SELECT DATABASE();
查看数据库版本
SELECT VERSION();
查看当前用户
SELECT USER();
查看所有用户
SELECT User,Host,Password FROM mysql.user;
执行Linux命令:
SYSTEM + <命令>
数据库对象的命名规则
必须以字母开头
可包括数字和三个特殊字符(# _ $)
不要使用MySQL的保留字
同一Schema下的对象不能同名 schema:数据库对象
表的操作:
CREATE TABLE tb_name; //创建表
表:行:row 每行是一条记录record
列:field/column字段 每列称为一个字段
表的操作:
SHOW TABLES[FROM 数据库名][LIKE wild]; //显示当前数据库中已有的数据表的信息
{DESCRIBE|DESC}表名[列名]; //查看数据表中各列的信息
SHOW CREATE TABLE 表名\G; //可以查看更全面的表定义信息
CREATE TABLE 表名(
列名 列类型,
……
); // 在当前数据库中创建一张表、列类型
DROP TABLE [IF EXISTS] 表名; //删除指定的表
修改表的结构:
修改列类型
ALTER TABLE 表名 MODIFY 列名 列类型;
增加列
ALTER TABLE 表名 ADD 列名 列类型;
删除列
ALTER TABLE 表名 DROP 列名;
列改名
ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
更改表名
ALTER TABLE 表名 RENAME 新表名;
RENAME TABLE 表名 TO 新表名;
复制表的结构:
第一种:create table 新表名 like 源表 --------------复制表结构
第二种:create table 新表名 select * from 源表 ----------------复制表的结构以及源表记录
表的约束
主键约束:
主键从功能上看相当于非空且唯一
一个表中只允许一个主键
主键是表中唯一确定一行数据的字段
主键字段可以是单字段或者是多字段的组合
当建立主键约束时,MySQL为主键创建对应的索引
主键约束名总为PRIMARY。
CREATE TABLE tb_student(
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(18)
); //创建表tb_stadent,并设置主键为id;auto_increment 定义这个字段为自动增长,即如果INSERT时不赋值,则自动加1
外键约束:
外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
外键确保了相关的两个字段的两个关系:
子(从)表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)。
当主表的记录被子表参照时,主表记录不允许被删除。
外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录。
FOREIGN KEY (外键列名)REFERENCES 主表(参照列)
CREATE TABLE tb_dept(
dept_id INT PRIMARY KEY,
NAME VARCHAR(18),
description VARCHAR(255)
);
CREATE TABLE tb_employee(
employee_id INT PRIMARY KEY,
NAME VARCHAR(18),
gender VARCHAR(10),
dept_id INT REFERENCES tb_dept(dept_id),
address VARCHAR(255)
);
删除定义的约束:
自动增长和默认值
表的操作---存储引擎
有关数据库的DDL操作:
SHOW DATABASES;
CREATE DATABASE 数据库名;
DROP DATABASE [IF EXISTS] 数据库名;
USE 数据库名;
有关数据表的DDL操作
SHOW TABLES ;
DESC 表名;
CREATE TABLE 表名(……);
DROP TABLE 表名;
ALTER TABLE 表名;
数据表的列类型
数值类型:INT、DOUBLE
日期类型:DATE、TIME
字符串类型:CHAR、VARCHAR、TEXT、BLOB
约束
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
方法1:create和grant结合
命令:CREATE USER <'用户名'@'地址'> IDENTIFIED BY ‘密码’;
查看用户权限:SHOW GRANTS;
命令:show grants for '用户名'@'地址';
授权: GRANT;
方法2:直接grant
收回权限:REVOKE
删除用户:DROP USER username;
生产环境授权用户建议:
1、博客,CMS等产品的数据库授权
select,insert,update,delete,create
库生成后收回create权限
2、生产环境主库用户授权
select,insert,update,delete
3、生产环境从库授权
select