一.昨日内容回顾

  1、mysql的安装

  1).解压文件 添加环境变量bin

  2).初始化mysql生成数据data文件夹:

   mysqld --initialize-insecure

  3).mysqld 启动服务

4).mysql -u root -p 客户端连接

//将mysql服务制作成windows服务

    1)mysqld --install  

    2) mysqld --remove 

net start mysql # 启动服务

  net stop mysql # 停止服务

    2、 mysql的基本管理

      1) 查看当前用户

        select user();

      2)  设置密码(现在已不用这种方式)

        mysqladmin -u root -p'123' password "456"

      3) 忘记密码的登录方式

       (1) 以管理员身份运行终端,停止net stop mysql服务

          (2) 执行跳过授权命令 启动mysql服务

          mysqld --skip-grant-tables

       (3) 更改密码

         update mysql.user set authentication_string = password('') where User='root';

         (4) 刷新权限,执行命令

         flush privileges;

        (5) 退出mysql  exit

(6) 服务端kill  mysql进程

          tasklist|findstr mysql

taskkill /F /PID 进程号

(7) 启动服务进行mysql新密码登录即可。

   4) 统一字符编码    mysql> \s 查看编码信息  

          在C:\mysql-5.6.40-winx64文件下创建my.ini文件   
#mysql5.5以上:修改方式为
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

my.ini

二.今天内容总结

1、mysql库操作crud

    1) 增

      create database db1 charset utf8;

    2)  查

     show create database db1; # 查看数据库

show databases;  # 查看当前库

     select database(); # 查看所在的库。

    3)  改

     alter database db1 charset gbk

    4) 删

     drop database db1;

    5) 数据库的命名规则:     

可以由字母、数字、下划线、@、#、$
区分大小写
唯一性
不能使用关键字如 create select
不能单独使用数字
最长128位
# 基本上跟python或者js的命名规则一样

数据库的命名规则

    6) 了解DDL、DML、DCL    

SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER 2、DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT 3、DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

DDL、DML、DCL

2、mysql表操作

     1 ) 操作表

      # 增

use db1

        create table t1(id int,name char);

      # 查

        show create table t1; # 查看当前的这张t1表

show tables;   # 查看所有的表

        desc t1; # 查看表的详细信息

      # 改

       alter table t1 modify name char(6)  # 改name的数据类型显示宽度,更改字段属性

       alter table t1 change name Name char(7) # 改字段name为Name 后边也要加属性

       alter table t1 add 新列名 int

         alter table t1 drop 列名;

alter table t1 add i int after c;

         alter table t1 add i int first; # 插入在第一列处

       alter table t1 alter i set default 1000; # 设置默认值

       alter table t1 alter i drop default; # 删除列默认值

       alter table t1 rename to t2; # 修改表名

       alter table t7 add primary key(id);   # 修改主键

       alter table t7 change id id int auto_increment; # 增加auto_increment 属性

alter table user add constraint fk foreign key(idept_d) references dept(id) on delete cascade on update cascade;  # 增加外键、

       alter table user drop foreign key  fk;

       # 删

      drop table tb1  # 删除表tb1

     # 复制表

      方式一:create table b1 select * from db2.a1; # 复制结构和数据;

      方式二:create table b1 select * from db2.a1 where 1>2; # 仅复制表结构;

       方式三:create table b1 like db2.a1; # 仅复制表结构。

      2) 操作表内容

        # 增 插入内容

          insert into tb1 values(1,'kack'),(2,'merry');

        # 查

          select id,name from tb1;

          select * from db1.tb1;

        # 改

          update db1.t1 set name ='alex' where id =2;

        # 删

delete  from t1;

delete from t1 where id =2;

          

3、mysql数据类型

    1) 数值类型

整型:tinyinit  int  bigint
小数:
float :在位数比较短的情况下不精准
double :在位数比较长的情况下不精准
0.000001230123123123
存成:0.000001230000 decimal:(如果用小数,则用推荐使用decimal)
精准
内部原理是以字符串形式去存

数值型

   单精度:float(M,D) 255 30   四字节 32  1 8 23 7

   双精度:double(M,D) 255 30   八字节 64  1 11 52  16

      dec: DEC(M,D) 65,30

   2) 日期类型

#2. 字符串:
char(10):简单粗暴,浪费空间,存取速度快
    root存成root000000
varchar:精准,节省空间,存取速度慢 sql优化:创建表时,定长的类型往前放,变长的往后放
比如性别 比如地址或描述信息 >255个字符,超了就把文件路径存放到数据库中。
比如图片,视频等找一个文件服务器,数据库中只存路径或url。
语法:
YEAR
YYYY(1901/2155) DATE
YYYY-MM-DD(1000-01-01/9999-12-31) TIME
HH:MM:SS('-838:59:59'/'838:59:59') DATETIME YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59 Y) TIMESTAMP YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)

日期

    3) 字符类型

  length() 查字节长度、char_length() 查字符长度

  char 和varvhar的区别:

  char:

   字符长度范围:0-255(一个中文是一个字符,是utf8编码的3个字节)

    存储:定义多长个字符存多长字符,不足补空格,超出报错

    查询:默认去掉尾部空格,除非设置SQL模式:SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';  查询sql的默认模式:select @@sql_mode;

  varchar:

     字符长度范围:0-65535(如果大于21845会提示用其他类型 。mysql行最大限制为65535字节,字符编码为utf-8:https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html)

    存储:有多少字符存多少字符,空格也算

             查询:有多少查多少,空格也算。

    4) 枚举和集合类型

      enum 单选 只能在给定的范围内选一个值,如性别sex male/female

      set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2.。。。。)

      

mysql> create table consumer(
-> id int,
-> name varchar(50),
-> sex enum('male','female','other'),
-> level enum('vip1','vip2','vip3','vip4'),#在指定范围内,多选一
-> fav set('play','music','read','study') #在指定范围内,多选多
-> );
Query OK, 0 rows affected (0.03 sec) mysql> insert into consumer values
-> (1,'赵云','male','vip2','read,study'),
-> (2,'赵云2','other','vip4','play');
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from consumer;
+------+---------+-------+-------+------------+
| id | name | sex | level | fav |
+------+---------+-------+-------+------------+
| 1 | 赵云 | male | vip2 | read,study |
| 2 | 赵云2 | other | vip4 | play |
+------+---------+-------+-------+------------+
rows in set (0.00 sec)

4、mysql完整性约束

    用于保证数据的完整性和一致性。

    PRIMARY KEY # 标识改字段为该表的主键,可以唯一的标识记录

    FOREIGN KEY # 标识该字段为该表的外键

    NOT NULL #标识该字段不能为空

    UNIQUE KEY # 标识该字段值为唯一的

    AUTO_INCREMENT # 标识该字段的值自动增长(整数类型,而且为主键)

    DEFAULT  # 为该字段设置默认值

    UNSIGNED # 无符号

    ZEROFILL # 使用0填充

    1) not null与default

        not null 不能为空,但是设置了default后可以不设置。

    2) unique单列唯一和联合唯一

      create table t1(

        id int unique,

        name char(10) unique);

      create table t2(

        id int ,

        name char(10),

        unique(id),

        unique(name));    

mysql> create table services(
-> id int,
-> ip char(15),
-> port int,
-> unique(id),
-> unique(ip,port)
-> );

    3) primary key

     单列主键、多列主键。相当于 not null 和unique 

     4) auto_increment

      delete from t1; #如果有自增id,新增的数据,仍然是以删除前的最后一样作为起始。

      truncate table t1;数据量大,删除速度比上一条快,且直接从零开始。

    5)    foreign key

      

create table user(
id int primary key,
name char(10) not null,
dpt_id int not null,
constraint fk_dep foreign key(dpt_id) references dep(id)
on delete cascade
on update cascade
); create table dep(
id int primary key,
name char(10) not null);

关联外键

三.预习和扩展

python全栈开发day54-mysql库操作、表操作、数据类型、完整性约束的更多相关文章

  1. python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)

    昨日内容回顾 一.回顾 定义:mysql就是一个基于socket编写的C / S架构的软件 包含: ---服务端软件 - socket服务端 - 本地文件操作 - 解析指令(mysql语句) ---客 ...

  2. Python全栈开发之---mysql数据库

    1.数据库的安装和连接 #数据库安装 pip install PyMySQL #数据库操作 import pymysql db = pymysql.connect("数据库ip", ...

  3. Python全栈开发:Mysql(二)

    视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT *FROM (SELEC ...

  4. Python全栈开发:Mysql(一)

    一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...

  5. 巨蟒python全栈开发django6: FBV&CBV&&单表查询的其他方法

    练习CBV用法 截图中的action="/cbv/",应该是这样 上边红图,说明mysql有问题,需要重启一下 返回,输入的内容 @wrapper==>cbv=wrapper ...

  6. python 全栈开发,Day73(django多表添加,基于对象的跨表查询)

    昨日内容回顾 多表方案: 如何确定表关系呢? 表关系是在2张表之间建立的,没有超过2个表的情况. 那么相互之间有2条关系线,先来判断一对多的关系. 如果其中一张表的记录能够对应另外一张表的多条记录,那 ...

  7. Python 全栈开发【第0篇】:目录

    Python 全栈开发[第0篇]:目录   第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...

  8. Python全栈开发【模块】

    Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...

  9. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

  10. Win10构建Python全栈开发环境With WSL

    目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...

随机推荐

  1. git与eclipse集成之保存快照

    1.1. 保存快照 在个分支进行编码,然后需要紧急切换到另外一个分支进行快速修复一个问题,此时可以先将当前分支的修改进行保存快照. 在分支A进行编码,保存快照 切换到另外分支B进行修改 切换回A分支继 ...

  2. 最新sublime text 3 注册码license分享(亲测有效)

    —– BEGIN LICENSE —– TwitterInc 200 User License EA7E-890007 1D77F72E 390CDD93 4DCBA022 FAF60790 61AA ...

  3. HDU 1074 (DP + 状态压缩)

    题意: 给你N个课程, 每个课程有结束的时间 , 和完成这门课程需要的时间 超过课程结束ed时间,每一天就要花费 1点绩点: 然后要求你安排如何做课程使得花费的绩点最少 (看了博客后才发现状态压缩很⑥ ...

  4. JS知识点随笔

    1.为什么 0.1 + 0.2 != 0.3? 原因: 因为 JS 采用 IEEE 754 双精度版本(64位),并且只要采用 IEEE 754 的语言都有该问题. 我们都知道计算机是通过二进制来存储 ...

  5. 表单,table的css

    table{table_layout:fixed;border-collapse: collapse;border-spacing: 0}border-collapse: collapse 边框合并在 ...

  6. JsRender 前端渲染模板基础学习

    JsRender前端渲染模板 使用模板,可以预先自定义一些固定格式的HTML标签,在需要显示数据时,再传入真实数据组装并展示在Web页中:避免了在JS中通过“+”等手动分割.连接字符串的复杂过程:针对 ...

  7. wx.chooseImage

    <view>上传图片</view> <view> <view> <button bindtap="getImg">上传图 ...

  8. functions 示例

    示例1:  ","字符串截取 CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VA ...

  9. Confluence 6 Oracle 驱动输入你的数据库细节

    Confluence 的安装向导将会指导你一步一步的在 Confluence 中配置安装 Oracle 数据库. 使用 JDBC 连接(默认) JDBC 是推荐的连接你的 Confluence 到数据 ...

  10. Confluence 6 有关 AD 的一些特殊说明

    当应用程序对使用 Active Directory (AD) 的 LDAP 服务器进行同步的时候,同步的任务只对 LDAP 最近修改的数据进行同步而不是对整个数据库进行同步.因为是增量同步,在第一次完 ...