数据表基本

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. C#实现的根据日期得到今天是星期几

    算法如下:   基姆拉尔森计算公式: W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7  在公式中d表示日期中的日数,m表示月份数,y表示年数.注意:在公式中有 ...

  2. ucos-ii变量名称表

  3. Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net

    Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net 1. Base64编码,1 1.1. 子模式 urlsafe Or  url u ...

  4. atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p

    atitit.极光消息推送服务器端开发实现推送  jpush v3. 总结o7p 1. 推送所设计到底功能1 1.1. 内容压缩1 1.2. 多引擎1 2. reg  ,设置appkey and pw ...

  5. swoole-1.7.18 版本已发布,支持 PHP7

    swoole-1.7.18 版本已发布,支持 PHP7 matyhtf 发布于: 2015年07月23日 (22评) 分享到:    收藏 +16 3月19日,深圳源创会火热报名中,go>> ...

  6. Google glog error LNK2001: unresolved external symbol "__declspec(dllimport) int fLI::FLAGS_XXXX 错误的解决。

    想在 windows 下使用 glog,使用类似 FLAGS_max_log_size 来设置参数,结果编译报错. 解决办法是在 项目属性 -> C/C++ -> Preprocessor ...

  7. java代码中fastjson生成字符串和解析字符串的方法和javascript文件中字符串和json数组之间的转换方法

    1.java代码中fastjson生成字符串和解析字符串的方法 List<TemplateFull> templateFulls = new ArrayList<TemplateFu ...

  8. Tree UVA - 548 已知中序遍历和后序遍历,求这颗二叉树。

    You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...

  9. ORA-00349: failure obtaining block size for &#39;+fra_grp01_d

    有一次恢复库以后,open时报错ORA-00349,例如以下.最后通过删除这个log group解决.   SQL> alter database open resetlogs; alter d ...

  10. 基于JS实现回到页面顶部的五种写法(从实现到增强)

    这篇文章主要介绍了基于JS实现回到页面顶部的五种写法(从实现到增强)的相关资料,本文介绍的非常详细,实用性也非常高,非常具有参考借鉴价值,需要的朋友可以参考下   写法 [1]锚点 使用锚点链接是一种 ...