数据表基本

1、创建表

create table 表名(   列名  类型  是否可以为空,   列名  类型  是否可以为空)ENGINE=InnoDB DEFAULT CHARSET=utf8

是否可以为空

是否可空,null表示空,非字符串        not null    - 不可空        null        - 可空

默认值

默认值,创建列时可以指定默认值,当插入数据时如果未主动设置,则自动添加默认值           create table tb1(               nid int not null defalut 2,               num int not null           )

自增

自增,如果为某列设置自增列,插入数据时无需设置此列,默认将自增(表中只能有一个自增列)           create table tb1(               nid int not null auto_increment primary key,               num int null           )           或           create table tb1(               nid int not null auto_increment,               num int null,               index(nid)           )           注意:1、对于自增列,必须是索引(含主键)。                2、对于自增可以设置步长和起始值                    show session variables like 'auto_inc%';                    set session auto_increment_increment=2;                    set session auto_increment_offset=10;

                    shwo global  variables like 'auto_inc%';                    set global auto_increment_increment=2;                    set global auto_increment_offset=10;

主键

主键,一种特殊的唯一索引,不允许有空值,如果主键使用单个列,则它的值必须唯一,如果是多列,则其组合必须唯一。           create table tb1(               nid int not null auto_increment primary key,               num int null           )           或           create table tb1(               nid int not null,               num int not null,               primary key(nid,num)           )

外键

外键,一个特殊的索引,只能是指定内容           creat table color(               nid int not null primary key,               name char(16) not null           )

           create table fruit(               nid int not null primary key,               smt char(32) null ,               color_id int not null,               constraint fk_cc foreign key (color_id) references color(nid)           )

2、删除表

drop table 表名

3、清空表

delete from 表名

truncate table 表名

4、修改表

添加列:alter table 表名 add 列名 类型删除列:alter table 表名 drop column 列名修改列:       alter table 表名 modify column 列名 类型;  -- 类型       alter table 表名 change 原列名 新列名 类型; -- 列名,类型 添加主键:       alter table 表名 add primary key(列名);删除主键:       alter table 表名 drop primary key;       alter table 表名  modify  列名 int, drop primary key; 添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);删除外键:alter table 表名 drop foreign key 外键名称 修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

5、基本数据类型

MySQL的数据类型大致分为:数值、时间和字符串

bit[(M)]           二进制位(101001),m表示二进制位的长度(1-64),默认m=1       tinyint[(m)] [unsigned] [zerofill]

           小整数,数据类型用于保存一些范围的整数数值范围:           有符号:               -128 ~ 127.           无符号:~ 255           特别的: MySQL中无布尔值,使用tinyint(1)构造。       int[(m)][unsigned][zerofill]           整数,数据类型用于保存一些范围的整数数值范围:               有符号:                   -2147483648 ~ 2147483647               无符号:~ 4294967295           特别的:整数类型中的m仅用于显示,对存储范围无限制。例如: int(5),当插入数据2时,select 时数据显示为: 00002       bigint[(m)][unsigned][zerofill]           大整数,数据类型用于保存一些范围的整数数值范围:               有符号:                   -9223372036854775808 ~ 9223372036854775807               无符号:~  18446744073709551615       decimal[(m[,d])] [unsigned] [zerofill]           准确的小数值,m是数字总个数(负号不算),d是小数点后个数。 m最大值为65,d最大值为30。

           特别的:对于精确数值计算时需要用此类型                  decaimal能够存储精确值的原因在于其内部按照字符串存储。       FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]           单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。               无符号:                   -3.402823466E+38 to -1.175494351E-38,                   1.175494351E-38 to 3.402823466E+38               有符号:                   1.175494351E-38 to 3.402823466E+38

           **** 数值越大,越不准确 ****       DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]           双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。               无符号:                   -1.7976931348623157E+308 to -2.2250738585072014E-308                   2.2250738585072014E-308 to 1.7976931348623157E+308               有符号:                   2.2250738585072014E-308 to 1.7976931348623157E+308           **** 数值越大,越不准确 ****

       char (m)           char数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中m代表字符串的长度。           PS: 即使数据小于m长度,也会占用m长度       varchar(m)           varchars数据类型用于变长的字符串,可以包含最多达255个字符。其中m代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。           注:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡

       text           text数据类型用于保存变长的大字符串,可以组多到65535 (2**16 − 1)个字符。

       mediumtext           A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.

       longtext           A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1) characters.

       enum           枚举类型,           An ENUM column can have a maximum of 65,535 distinct elements. (The practical limit is less than 3000.)           示例:               CREATE TABLE shirts (                   name VARCHAR(40),                   size ENUM('x-small', 'small', 'medium', 'large', 'x-large')               );               INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');

       set           集合类型           A SET column can have a maximum of 64 distinct members.           示例:               CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));               INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

       DATE           YYYY-MM-DD(1000-01-01/9999-12-31)

       TIME           HH:MM:SS('-838:59:59'/'838:59:59')

       YEAR           YYYY(1901/2155)

       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 年某时)

表内容操作

1、增

insert into 表 (列名,列名...) values (值,值,值...)insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...)insert into 表 (列名,列名...) select (列名,列名...) from 表

2、删

delete from 表delete from 表 where id=1 and name='zzz'

3、改

update 表 set name = 'zzz' where id>1

4、查

select * from 表select * from 表 where id > 1select nid,name,gender as gg from 表 where id > 1

5、其他

a、条件   select * from 表 where id > 1 and name != 'alexgat' and num = 12;

   select * from 表 where id between 5 and 16;

   select * from 表 where id in (11,22,33)   select * from 表 where id not in (11,22,33)   select * from 表 where id in (select nid from 表)

b、通配符   select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)   select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)

c、限制   select * from 表 limit 5;            - 前5行   select * from 表 limit 4,5;          - 从第4行开始的5行   select * from 表 limit 5 offset 4    - 从第4行开始的5行

d、排序   select * from 表 order by 列 asc              - 根据 “列” 从小到大排列   select * from 表 order by 列 desc             - 根据 “列” 从大到小排列   select * from 表 order by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序

e、分组   select num from 表 group by num   select num,nid from 表 group by num,nid   select num,nid from 表  where nid > 10 group by num,nid order nid desc   select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid

   select num from 表 group by num having max(id) > 10

   特别的:group by 必须在where之后,order by之前

f、连表   无对应关系则不显示   select A.num, A.name, B.name   from A,B   Where A.nid = B.nid

   无对应关系则不显示   select A.num, A.name, B.name   from A inner join B   on A.nid = B.nid

   A表所有显示,如果B中无对应关系,则值为null   select A.num, A.name, B.name   from A left join B   on A.nid = B.nid

   B表所有显示,如果B中无对应关系,则值为null   select A.num, A.name, B.name   from A right join B   on A.nid = B.nid

g、组合   组合,自动处理重合   select nickname   from A   union   select name   from B

   组合,不处理重合   select nickname   from A   union all   select name   from B

识别图中二维码,获取python全套视频资料

数据库之MySQL(二)的更多相关文章

  1. 数据库历险记(三) | 缓存框架的连环炮 数据库历险记(二) | Redis 和 Mecached 到底哪个好? 数据库历险记(一) | MySQL这么好,为什么还有人用Oracle? 面对海量请求,缓存设计还应该考虑哪些问题?

    数据库历险记(三) | 缓存框架的连环炮   文章首发于微信公众号「陈树义」,专注于 Java 技术分享的社区.点击链接扫描二维码,与500位小伙伴一起共同进步.微信公众号二维码 http://p3n ...

  2. 【码上开心】Windows环境mysql数据库使用(二)skip-grant-tables 与用户名密码修改

    skip-grant-tables #跳过数据库权限验证 我们安装MySql 设置my.ini配置文件的时候,常常会在my.ini中添加 skip-grant-tables ,这时接数据库可以使用任意 ...

  3. 【数据库】MySQL数据库(二)

    一.数据库文件的导出 1.在DOS命令行下导出数据库(带数据) mysqldump -u root -p 数据库名 > E:\wamp\www\lamp175\lamp175.sql 2.在DO ...

  4. mysql之基本数据库操作(二)

    环境信息 数据库:mysql-5.7.20 操作系统:Ubuntu-16.04.3 mysql的启动.退出.重启 # 启动 $ sudo service mysqld start # 停止 $ sud ...

  5. Mysql数据库知识-Mysql索引总结 mysql mysql数据库 mysql函数

    mysql数据库知识-Mysql索引总结: 索引(Index)是帮助MySQL高效获取数据的数据结构. 下边是自己整理的资料与自己的学习总结,,做一个汇总. 一.真的有必要使用索引吗? 不是每一个性能 ...

  6. python Mysql (二)

    Mysql (二) 一. 事务 a.数据库开启事务命令 1 2 3 4 #start transaction 开启事务 #Rollback 回滚事务,即撤销指定的sql语句(只能回退insert de ...

  7. 关于数据库管理系统DBMS--关系型数据库(MySQL/MariaDB)

    数据库的结构(3种):层次,网状,关系型(用的最多): DBMS的三层模型: 视图层:面向最终用户: 逻辑层:面向程序员或DBA: 物理层:面向系统管理员: 关系型数据库管理系统——RDBMS: 主要 ...

  8. MySQL二进预编译制安装

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL二进预编译制安装时间:2019年2月25日内容:MySQL二进制预编译安装重点:MySQL二进制预 ...

  9. 数据库之mysql篇(1)—— 数据库管理系统简介/mysql的安装、配置

    说mysql之前,还是先说说数据库. 什么是数据库: 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后 ...

  10. 数据库,mysql

    数据库(`database`): ### 关系型数据库及非关系型数据库1. 什么是关系型数据库? 关系型数据库是一种建立在关系模型上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据.现实世 ...

随机推荐

  1. ubuntu14.04 flash driver 安装

    直接将14.04镜像直接放到flash driver 中 然后在bios设置flash driver 优先启动 然后格出一块盘给ubuntu 安装使用 按操作要求一路点下去就可以,记得选windows ...

  2. Codeforces Round #244 (Div. 2)——Checkposts

    题目链接 题意: 给定n个点,每一个点有一个权值的有向图.如今须要选定一些点,使得这些点权值和最小.且满足:假设i能到达j且j能到达i,那么i.j能够仅仅选一个 分析: 强联通模板题 //使用时仅仅更 ...

  3. Atitit.java jna 调用c++ dll 的总结

    Atitit.java jna 调用c++ dll 的总结 1. JNA技术解密1 1.1. JNA工作原理1 2. JNA技术难点 Java—C和操作系统数据类型的对应表1 2.1. 1 2.2.  ...

  4. 在python中配置tornado服务

    import tornado.httpserver import tornado.options import tornado.web from tornado.options import defi ...

  5. web开发中经常使用的js

    将自己在web开发中经经常使用到的一些JS总结一下. 1.改动标签和表单的值 改动标签的值: var customer = document.getElementById("custm&qu ...

  6. Android.mk 输出日志 调试

    $(warning "the value of MY_FILES_PATH is $(MY_FILES_PATH)") #jni

  7. Java基础11 对象引用(转载)

    对象引用 我们沿用之前定义的Human类,并有一个Test类:  public class Test{    public static void main(String[] args){       ...

  8. Google Careers 程序员必修课

    quote from : https://www.google.com/about/careers/students/guide-to-technical-development.html Techn ...

  9. asp.net mvc FormsAuthentication一些问题

    form验证最简单的一句 FormsAuthentication.SetAuthCookie(”userName", false); web.config里加上    <machine ...

  10. Linq源代码阅读

    在 System.Core dotnet451\source\ndp\fx\src\core\system\linq\enumerable.cs Where 和 Select 内 ,把数组和List分 ...