Python学习之Mysql数据库基础

数据库html

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。简而言之,数据库就是存储数据的仓库。mysql

 

数据的发展sql

  人工管理阶段 文件管理阶段 数据库管理阶段
时间 20世纪50年代中期之前  20世纪50年代后期至60年代中期  60年代后期 
领域 科学计算 科学计算、管理 大规模数据、分布数据的管理
硬件 无直接存储设备 磁鼓、磁盘 大容量磁盘、按需增容磁带机
特色 数据不保存,数据无共享,数据不具备独立性。 可长期保存、具备必定的独立性,文件的形式已经多样化。

采用复杂的结构化的数据模型,较高的数据独立性,最低的冗余度,数据控制功能。数据库

 

管理者 用户管理   文件系统管理     DBMS管理

 

数据库类型编程

  数据库一般分为层次式数据库网络式数据库关系式数据库三种。而不一样的数据库是按不一样的数据结构来联系和组织的。而在当今的互联网中,最多见的数据库模型主要是两种,即关系型数据库非关系型数据库。常见的关系型数据库常见的有:Oracle、DB二、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB 等。网络

 

数据库之Mysql

 

  MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。数据结构

MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不一样的表中,而不是将全部数据放在一个大仓库内,这样就增长了速度并提升了灵活性。编程语言

  • MySQL 是开源的,因此你不须要支付额外的费用。
  • MySQL 支持大型的数据库。能够处理拥有上千万条记录的大型数据库。
  • MySQL 使用标准的 SQL 数据语言形式。
  • MySQL 能够运行于多个系统上,而且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
  • MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
  • MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
  • MySQL 是能够定制的,采用了 GPL 协议,你能够修改源码来开发本身的 MySQL 系统。                       ______菜鸟教程

SQL学习函数

   SQL认识性能

   结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库;

   SQL 是用于访问和处理数据库的标准的计算机语言。

  SQL的功能包括查询(Query)、操纵(Manipulation)、定义(Definition)和控制(Control)四个方面。

  1. 数据查询语言(Data Query Language,DQL)称为数据检索语句。
  2. 数据操纵语言(Data Manipulation Language, DML)包括插入(Insert)、修改(Update)和删除(delete)。
  3. 数据控制语言(Data Control Language DCL)经过grant 或revoke语句得到许可,确认用户对数据库对象的访问权限。
  4. 数据定义语言(Data Definition Language ,DDL)包括alter、Create 和 Drop。在数据库中定义基本表、定义视图和定义索引,经常使用语句关键字主要包括create,drop,。

 

数据库操做(DDL)语句

 

  数据库操做

  1.建立数据库    create datebase <数据库名>
    create database [if not exists]<数据库名>[character set xxx] (带条件式建立)   2.修改数据库 alter database<数据库名>[character set xxx]  
  3.查看数据库     show databases; 查看全部数据库 show create database <数据库名>; 查看数据库的建立方式  4.删除数据库 drop database [if exists]<数据库名>;   5.链接数据库 切换数据库 use<数据库名>;

 

   数据库表操做

建立表Student
        create table tab_name(
            field1 type[完整性约束条件],
            field2 type,
            ...
            fieldn type
        )[character set xxx];
 
 
    建立一个学生表 create table student(     id TINYINT PRIMARY KEY auto_increment,#PRIMARY KEY为表主键,auto_increment设置自动编号。     name VARCHAR(25),     gender boolean,     age INT,     bumen VARCHAR(20),     salary DOUBLE(7,2) )

查看表信息
  查看表结构 
  desc tab_name /show columns from tab_name

mysql> desc student;
+----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+----------------+
| id | tinyint(4) | NO | PRI | NULL | auto_increment |
| name | varchar(25) | YES | | NULL | |
| gender | tinyint(1) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| bumen | varchar(20) | YES | | NULL | |
| salary | double(7,2) | YES | | NULL | |
| workdate | tinyint(1) | YES | | NULL | |
+----------+-------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)

 

    show tables 当前数据库中全部的表

mysql> show tables;
+---------------+
| Tables_in_wjh |
+---------------+
| student |
+---------------+
1 row in set (0.00 sec)

   show create table tab_name  查看当前数据库表建表语句 

修改表结构
    • 增长列(字段) alter table tab_name add [column] 列名 类型[完整性约束条件][first|after 字段名]; 
    • 修改一列类型 alter table tab_name modify 列名 类型 [完整性约束条件][first|after 字段名];
    • 修改列名 alter table tab_name change [column] 列名 新列名 类型 [完整性约束条件][first|after 字段名];
    • 删除一列 alter table tab_name drop [column] 列名; 
    • 修改表名 rename table 表名 to 新表名;
    • 修该表所用的字符集  alter table student character set utf8;
    • 删除表 drop table tab_name;
    • 添加主键,删除主键 alter table tab_name add primary key(字段名称,...) alter table users drop primary key;
    • 惟一索引 alter table tab_name add unique [index|key] [索引名称](字段名称,...) alter table users add unique(name)-- 索引值默认为字段名show create table users; alter table users add unique key user_name(name);-- 索引值为user_name
    • 添加联合索引 alter table users add unique index name_age(name,age);#show create table users;
    • 删除惟一索引 alter table tab_name drop {index|key} index_name

  主键设置:

  单一主键

  CREATE TABLE employee(

      id INT primary key, (id为该表的惟一主键)

      name varchar(20),

      age INT,

  )

  多主键(多个外键)

  CREATE TABLE employee(

      id INT,

      book_id INT,

      name varchar(20),

      age INT,

      primary kry(id,book_id) #id和book_id为该的主键。

  )

 

表记录操做(DML语句)之增、删除、改、查

  增长记录

增长一条记录 insert [into] table_name(field1,filed2 ******) values(value1,value2,*****); 增长多条记录 insert [into] table_name values(value1,value2,*****),(value10,value12,*****);  

 

  删除记录

delete from table_name [where ....]   #where 后面检索出要删除的数据。若是where条件为空,则是删除表中全部记录。 truncate table table_name;使用truncate删除表中记录。与delete删除方式不同,truncate 是直接销毁表,再建立一个新表。

  

  修改记录

update table_name set field1=value1,field2=value2,......[where 语句]            #set是要修改的操做,where是检索出要修改的记录。

 

   查询记录

基本查询 select * from table_name;查询表中全部字段和记录。 select (field1,field2,field13,...) from table_name where .......;   若是要查找表中全部记录,字段可用*代替;where查询条件select * from table_name;表示全部记录 select (field1,field2,field13,...) from table_name; 也能够用逗号隔开的字段来选择查询 select distinct field from table_name; 查询不重复的记录 ORDER BY 排序 在不少查询数据库记录需用到排序的用法。 desc和asc是排序关键字,desc是降序、asc是升序排列 ORDER BY 排序,默认是升序 select * from table_name order by (field);一个字段排序。 select * from table_name order by (field1,field2 .....) desc; 多个字段依次排序。 Limit 限制 限制可用到作分页的用法。 select * from table_name order by (field) limit (起始值),(行数); 若是没有设置初值则从第一条数据开始。、 Group by 分组   按分组条件分组后每一组只会显示第一条记录。 select * from table_name group by (field1) 按照字段1分组。 select * from table_name group by (2) 按照第二个字段分组。 聚合函数 sum(求和),count(*)(记录数),max(最大值),min(最小值) having是在分组后进行数据过滤。而where不能在group by后使用。 Regexp正则 select * from table_name where name regexp ‘^ppy’; select * from table_name where name regexp ‘hap$’; select * from table_name where name regexp ‘p{2}$;

 

  外键约束

外键操做

添加外键
alter table <表名> add constraint <外键名> foreign key<字段名> REFERENCES <外表表名><字段名>; 删除外键 alter table <表名> drop foreign key <外键名>; innodb四种用法 1.cascade。从父表中删除或更新对应的行,同时自动的删除或更新子表中匹配的行。   eg 外键的级联删除: FOREIGN KEY (<父表主键>) REFERENCES <子表><主键>ON DELETE CASCADE 2.set null。 从父表中删除或更新对应的行,同时将子表中的外键列设为空。 eg 删除   FOREIGN KEY(<父表主键>)REFERENCES<子表><主键>)     ON DELETE SET NULL 3.no cation: 拒绝删除或者更新父表。 4.Restrict方式 :拒绝对父表进行删除更新操做。

  

   多表查询

1.笛卡儿积查询
  SELECT
* FROM <数据表1>,<数据库表2>;

2.内链接

  select * from <数据表1>,<数据库表2> where <数据表1>.<主键> = <数据表2>.<主键>;
3.外链接

  左外链接
    select * from <数据库1> left join <数据库2> on <数据表1>.<主键> = <数据表2>.<主键>;
  右外链接
    select * from <数据库1> right join <数据库2> on <数据表1>.<主键> = <数据表2>.<主键>;

  全外链接
    select * from <数据库1> left join <数据库2> on <数据表1>.<主键> = <数据表2>.<主键>
  UNION
    select * from <数据库1> right join <数据库2> on <数据表1>.<主键> = <数据表2>.<主键>;

4.复合查询

    select * from <数据库1>,<数据库2> where <数据表1>.<主键> = <数据表2>.<主键> and <字段> + 条件;

5.子查询(嵌套查询)
  带有IN谓词的子查询
    
    eg: select sno,sn
       from student
       where sno IN
        (select son
         from SC
         where con IN
            ( select cno
              from Course

              where cn=‘数据结构’
                  )    
                )

 

 mysql索引认识

  什么是索引?

  索引(index)也叫作“键(key)”,它是是存储引擎用于快速查找记录的一种数据结构,经过合理的使用数据库索引能够大大提升系统的访问性能。简单来讲,索引就是至关于一本书的目录,方便读者找到想要的章节和页码。一张表能够存在多种和多个索引,能够加快查询效率,但建立索引和维护索引会耗费时间,随着数据量的增长而增长。

 

  索引类型

   1.常规索引

    常规索引,也叫普通索引(index或key)。一张数据表中能够有多个常规索引。 

ALTER TABLE <数据库名> ADD INDEX <索引名> (字段名);
  2.主键索引

  主键索引(Primary Key),也简称主键。提供惟一性约束,而且一张表只有一个主键。
ALTER TABLE <数据库名> ADD PRIMARY KEY <索引名> (字段名);
  3.惟一索引

  惟一索引(Unique Key),并提供惟一性约束。一张表中能够有多个惟一索引
ALTER TABLE <数据库名> ADD Unique <索引名> (字段名);
  4.外键索引

  外键索引(Foreign Key),简称外键。外键会自动和对应的其余表的主键关联。
ALTER TABLE <表名> ADD  CONSTRAINT <外键名> foreign key<字段名> REFERENCES <外表表名><字段名>;
  5.组合索引

  组合索引(Combination Key),是经过表中多个字段组合而成的索引。
ALTER TABLE <数据库名> ADD Index <索引名> (字段名,字段名.......);
 

     6.全文索引.

   全文索引(Full Text)提升全文搜索的查询效率.

 
ALTER TABLE <数据库名> ADD FULL TEXT <索引名> (字段名,字段名.......);
相关文章
相关标签/搜索