Python 数据持久化,MySQL应知必会

分布式数据库之MySLQ必知必会


**数据库管理系统提供许多功能,可以通过SQL(结构化查询语句)来定义和操作数据库;
维护数据库的完整性和安全性;**

SQL一共分三种:

数据定义语言(Data Definition Language,DDL)

CREATE、ALTER、DROP

数据操作语言(Data Manipulation Language,DML)

SELECT、UPDATE、INSERT、DELETE

数据控制语言(Data Control Language,DCL)

grant,deny,revoke等,默认状态下,只有sysadmin,dbcreator,db_owner或
db_securityadmin等人员才有权力执行DCL

DDL数据库与表的管理

所有mysql命令都需要有命令结束标识符,一般情况下是分号;
的数据库的查看命令:SHOW DATABASES;

建立数据库的命令是 CREATE DATABASE database_name;

删除数据库的命令是:DROP DATABASE database_name;

**数据库新建完成后,要告诉数据库我正在对哪个数据库进行操作的命令是:
USE database_name;**

其他命令
SHOW TABLESP; 查看数据库
DESC table_name 查看数据表结构
DROP table_name 删除数据表

新建完数据库后,就是新建数据表了,新建数据表的语法是:

CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 约束 ] [注释] , 
`字段名2` 列类型 [ 属性 ] [ 约束 ] [注释] , 
    … … 
`字段名n` 列类型 [ 属性 ] [ 约束 ] [注释]
) 
[ 表字符集 ] [注释] ;

注释语法

CREATE TABLE [ IF NOT EXISTS ] `test` ( 
`id` int (11) UNSIGNED COMMENT ‘编码号’ )
COMMENT=‘测试表’;

MySQL中的约束

约束的分类

  • 主键约束(PRIMARY KEY)
  • 唯一约束(UNIQUE)
  • 外键约束(FOREIGN KEY)
  • 自增长约束(AUTO_INCREMENT)

主键约束

CREATE TABLE `表名` (
`GradeID` INT(11) AUTO_INCREMENT PRIMARY KEY, 

#或 PRIMARY KEY(`GradeID`)

);

外键约束


CREATE TABLE `表名` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`user_id` int(11) NOT NULL, 
PRIMARY KEY (`id`),
CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`) )
ENGINE=InnoDB DEFAULT CHARSET=utf8;

为已添加好的数据表添加外键
>

alter table 表名 add constraint FK_ID foreign >>key(外键字段名)REFERENCES外表表名(对应的表的主键字段名);

示例

alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id) >>//FK_ID是外键的名称

唯一索引(UNIQUE)*
*作用: 避免同一个表中某数据列中的值重复
与主键索引的区别 主键索引只能有一个 唯一索引可有多个*
>

示例

CREATE TABLE `Grade` (
`GradeID` INT(11) AUTO_INCREMENT PRIMARY KEY,
`GradeName` VARCHAR(32) NOT NULL UNIQUE 

#或 UNIQUE KEY `Grade` (`GradeName`)

MySQL中的修改表

修改表(ALTER TABLE)

  • 修改表名
ALTER TABLE 旧表名 RENAME AS 新表名
  • 添加字段
ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ]
  • 修改字段类型
ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ]
  • 修改字段
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [ 属性 ]
  • 删除字段
ALTER TABLE 表名 DROP 字段名

DML:数据表中的数据管理 DML: data management in data tables

数据表的增、删、改

新增表数据的语法结构是:

INSERT INTO table_name [(field1,field2...fieldn)] VALUES (value1,value2...valuen);

这里要注意列名要和表中的个列一一对应,顺序名称类型一个都不能错,后面的数
据内容也是一样!

删除表记录的语法是:

DELETE FROM table_name WHERE CONDITION;

这里千万注意:删除语句一定要写删除条件,否则整张表删除!!!

TRUNCATE命令 用于完全清空表数据,但表结构、索引、约束等不变,语法如下:

TRUNCATE [TABLE] table_name

区别于DELETE命令
相同:
都能删除数据、不删除表结构,但TRUNCATE 速度更快
不同:
使用TRUNCATE TABLE重新设置AUTO_INCREMENT计数器
使用TRUNCATE TABLE不会对事务有影响

修改数据

UPDATE table_name SET field1=value1,field2=value2,...fieldn=valuen
WHERE CONDITION;

这里同样注意,field1,field2… 为要更改的数据列(字段名称)value是 所要修改成的数据,可以为变量、具体值、表达式或者嵌套的SELECT结果
CONDITION为筛选条件,如不指定则修改该表的所有列数据

数据表的单表查询

查询语句的语法是:

SELECT field1,field2, ... ,fieldn FROM table_name; 

只要将你想要查询的那些列名写出来就好了

使用DISTINCT关键字去掉重复数据,具体语法如下:

SELECT DISTINCT field1,field2, ... FROM table_name;

NULL
NULL代表“无值”
区别于零值0和空符串“”
只能出现在定义允许为NULL的字段
须使用 IS NULL 或 IS NOT NULL 比较操作符去比较

WHERE关键字用于检索数据表中符合条件的记录
搜索条件可由一个或多个逻辑表达式组成,结果 一般为真或假
搜索条件的组成 逻辑操作符 比较操作符

根据一个范围值来检索

SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x BETWEEN 值1 AND2

between and 等同于 >= 和 <= 联合使用
示例
#查询商品表中进价在110和120之间的所有记录

SELECT * FROM commodity WHERE c_inprice BETWEEN 100 AND 120; 

等同于:

SELECT * FROM commodity WHERE c_inprice>= 100 AND c_inprice<=120;

在WHERE子句中使用IN进行范围查询

SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x IN ( 值1,值2,值3…)

查询的字段x的值,至少与括号中的一个值相同
多个值之间用英文逗号隔开

示例

SELECT * FROM commodity where c_inprice = 100 OR c_inprice=110 OR c_inprice = 120; #普通处理方式

SELECT * FROM commodity where c_inprice IN ( 100, 110,120 );#使用IN进行查询 方式,更为简洁,效率更高

在WHERE子句中,使用LIKE关键字进行模糊查询
与“%”一起使用,表示匹配0或任意多个字符
与“_”一起使用,表示匹配单个字符
示例


#查询包含“游”的所有商品 

SELECT * FROM commodity WHERE c_name LIKE "%游%"; 

#查询所有商品为“文**”三个字的商品信息 

SELECT c_id,c_name FROM commodity WHERE c_name LIKE "文__";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值