MySQL---库表操作

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

猜你喜欢

转载自blog.csdn.net/Wxq960906/article/details/81542089