基础知识,mysql中列属性

mysql列属性包含:NULL 、default、comment、primary key、unique key

--回顾

数据库技巧: SQL,关周密据库标准

MySQL 概述

一、NULL
概念方式:NULL(暗中认可)  NOT NULL

字段类型(列类型):数值型,时间日期型和字符串类型

瞩目: 境况编码:  cmd客商端是定点的gbk编码  而php网页中,是该网页文件的编码(现在主流都以utf8)。 mysql> set names gbk;

数据库?

空属性有2个值,mysql数据库暗许字段皆感觉null的,可是在实际支出进程中,尽恐怕保证具有的数码都不应当为null,空数据毫无意义,任何参预NULL运算的结果都以NULL。

数值型:整型和小数型(浮点型和定点型)

命令行运转截止数据库:net start/stop mysql

储存数据的库房

二、comment
列描述(comment卡塔尔,又有什么不可称作注释,实际未有怎么意义,是特意用来陈诉字段的,会依赖创制语句保存,用来给程序猿(恐怕数据库管理员卡塔尔(英语:State of Qatar)来进行打探的。首要用于查看创立表的语法上进展查看,可用show create table tb_name;语句查看

光阴日期型:datetime,date,time,timestamp,year

签到格局:mysql -hlocalhost -uroot -p -P端口号  -h服务器地址  -u登陆名 退出:quit或exit

作用?

  create table my_tab(

字符串类型:定长,变长,文本字符串(text和blob**),枚举和聚合**

显示数据库: show databases;

动态网址数据都存款和储蓄在数据库中

    str varchar(10卡塔尔(قطر‎ not null comment '描述音讯',

Mysql记录长度:65535 个字节,varchar达不到理论长度,null 占用二个字节,text文本不占用记录长度(可是本人占用十一个字节)

创制数据库:create database db1 charset utf8;

SQL 结构化查询语言

    num int unsigned not null comment '描述新闻'

字段属性:主键,唯意气风发键和自拉长。

数据库的备份:mysqldump -h服务器名 -u登入名 -p数据库名 > 文件名 数据库的过来:mysql -h服务器名 -u登陆名 -p数据库名 < 文件名      // 没有登入数据库系统 备份:mysqldump -hlocalhost -uroot -p nunu > c:/nunu.sql

DDL 数据定义语言  CREATE DROP ALTE奥迪Q5...

  );

字段的性质

功底语准则定  注释: 1、#讲明内容   2、-- 注释内容(--后有空格)   3、/*注解内容*/  语句行 :   暗中同意情形下,以多少个印度语印尼语分号作为一条语句的截至1   mysql 可以人为设定语句停止符   delimiter 新的了断符

DML 数据操作语言  INSERT UPDATE  DELETE...

三、default
用来安装默许值。某后生可畏种数据会常常的面世有个别具体值,能够在一发端钦定好,在急需实际数据的时候,顾客能够选取性地采取暗中同意值。

--主键:唯大器晚成键和自增进。

大小写:  mysql  本人不区分轻重缓急写  依据系统是不是区分朗朗上口写

DQL 数据查询语言  SELECT

  create table my_tab(

主键:primary key,首要的键,一张表中只可以有贰个字段可以利用相应的键,用来唯生龙活虎的牢笼该字段里面包车型客车多寡,无法重新,这种称为主键,一张表只好有最多四个主键

 

DCL 数据调控语言  GRANT ROLLBACK  REVOKE..

    str varchar(10) not null,

追加主键:

开创数据库: create database 数据库名 【charset  字符编码名称】 【collate 排序准绳】

创建表

    num int unsigned default 10;   #默许值为10

sql操作中有三种办法得以给表增加主键:分为三种方法

删除数据库:drop database 【if exists】数据库名; 在那之中:if exists是用于生龙活虎种安全运会行的思量,倘若数据库海市蜃楼不会报错。

Create table tb_name(

  );

方案1:在创制表的时候,直接在字段之后,跟primary key 关键字(主键私下认可不容许为空)

校勘数据库: alter database 数据库名  charset  新的编码  collate  新的排序名;

字段名称 字段类型 字段属性,

接收方法:

mysql> create table my_pri1(name varchar(20卡塔尔(قطر‎ not null comment '姓名',number char(10卡塔尔 primary key comment '学号:itcast 0000,不可能重复'卡塔尔(قطر‎ charset utf8;

体现字符编码:show charset; 呈现排序准绳:show collation; 展现三个数据库的创建语句:show create database 数据库名;

字段名称 字段类型 字段属性

  insert into my_tab (str) values ('abc');   #num会自动设为10
  insert into my_tab values ('abc', default); #用私下认可值插入num字段

图片 1

跻身数据库:use 数据库名;

卡塔尔(英语:State of Qatar)表类型  表字符集;

 

优点特别直白,劣势是一定要动用叁个字段作为主键

PHP使用MySQL函数: //sql_php

注意事项

四、primary key (主键)

方案2:在创设表的时,在装有的字段之后,使用primary key(主键字段列表)来创立主键(借使有四个字段作为主键,能够是复合主键)

$link=mysql_connect("数据库服务器地址","顾客名","密码"卡塔尔(قطر‎; //连接数据库 mysql_query("set names 网页编码名"卡塔尔国;    //设定“连接编码”;    //也可以那样做,mysql_set_charset("网页文件编码名"卡塔尔国;

一条命令能够分多行写

主键限定: 主键对应的字段中的数据差异意再一次,黄金时代旦重复,操作战败。

mysql> create table my_pri2(number char(10卡塔尔(英语:State of Qatar) comment '学号:itcast 0000',course char(10卡塔尔国 comment '课程代码:3901 0000',score tinyint unsigned default 60 comment '成绩',primary key(number,course卡塔尔国卡塔尔国 charset utf8;

mysql_query("use 数据库名"卡塔尔(قطر‎;     //选定要利用的数据库    // = mysql_select_db("数据库名"卡塔尔;

种种字段之间利用逗号隔开分离

  1. 主键特点

图片 2

$result = mysql_query("select / delect /updata /insert / desc /show tables /drop....");

最后二个字段 后 不加逗号

  ① 唯生龙活虎性,一张表只好有三个字段设为主键

方案3:当表已经创办好之后,额外扩展属性:能够透过改进表字段属性,也可直接增添

desc  呈现表的布局

字符集 utf8

  ② 主键不相同意为NULL

mysql> altar table [表名] add primary key(字段列表卡塔尔;

select * from tab_xiaoshu;

翻看创造表语句

  1. 充实主键情势,常用的有3种

mysql> create table my_pri3(course char(10卡塔尔(قطر‎ not null comment '课程编号:3901 000',name varchar(10卡塔尔 not null comment '课程名字'卡塔尔国; #开创无主键新表

多少的打字与印刷: $result = mysql_query("select * from tab_int2;"); while ($res = mysql_fetch_array($result)) { }

Show create table tb_name;

  ① 在开立表时,在字段前边跟关键字primary key设置

图片 3

$result = mysql_query("select * from tab_int2;"卡塔尔国; fatch函数的两种样式 mysql_fetch_assoc($result);  array('id'=>1,'name'=>'user1','age'=>18); mysql_fetch_row($result);  array('1'=>1,'2'=>'user1','3'=>18); mysql_fetch_array($result);  array('id'=>1,'name'=>'user1','age'=>18,'id'=>1,'name'=>'user1','age'=>18);

删除表

    create table my_tab(

mysql> alter table my_pri3 modify course char(10卡塔尔(قطر‎ primary key comment '课程编号:3901 000'; #办法1:追加主键

create table tab_temp1(id int,name varchar(10),age tinyint); insert into tab_temp1 values(1,'user1',18);

Drop table tb_name;

      id int primary key, #先是种方式

mysql> alter table my_pri3 add primary key(course卡塔尔(英语:State of Qatar); 方法2:增多主键

扩张php中操作mysql数据的多少个函数: $n1 = mysql_num_rows($result卡塔尔国; //得到该结果集的多少行数 $n2 = mysql_num_田野先生s($result卡塔尔(英语:State of Qatar); //获得该结果集的数目列数 $name = mysql_field_name($result,$i卡塔尔(英语:State of Qatar); //获得该结果集的第i个字段的名字 i从0起头算起

表里存款和储蓄数据

      name varchar(10)

图片 4

字段类型

Insert into tb_name(字段名称,字段名称..卡塔尔(英语:State of Qatar) values(1,’a’卡塔尔(قطر‎;

    )charset utf8;

情势2前提:表中字段对应的数目本人是独立的(不重复)

字符类型:

查询数据 DQL

  ② 在创建表时,在富有字段后选拔primary key(字段列表卡塔尔设置复合主键

1.1主键限定

重视有  varchar类型  理论值。65535;  char   定长字符串:   举个例子:手提式有线电话机号,中华夏族民共和国邮编  远远不足会补齐。

Select * from tb_name;  *意味着享有字段

    create table my_tab2(

主键对应的字段中的数据不一致敬再度,意气风发旦重复数据操作退步(增和改)

create table tab_char_varchar(  postcode char(6), /*邮编*/  name varchar(10) /*姓名*/ );

Select 字段名称,字段名称... From tb_name;

      id int,

向pri1表中插入数据

 enum类型   单选项字符串数据类型。他极其适合于储存表单分界面中的“单选项值”   enum("选项1","选项2",...卡塔尔国;   实际内部:这个选项值对应的是之类数字值  set类型   单选项字符串数据类型。他特别符合于积存表单分界面中的“多选项值”   set("选项1","选项2",...卡塔尔(英语:State of Qatar);   对应的数字是1,2,4,8,16

修改

      number int,

mysql> insert into my_pri1 values('古学星','itcast0001'),('蔡仁湾','itcast0002');

#演示enum,set的使用: create table enum_set(  id int auto_increment primary key,  sex enum('男','女'卡塔尔国,  fav set('篮球','足球','中中国足球球','斯诺克'卡塔尔(英语:State of Qatar) 卡塔尔(英语:State of Qatar);

Update tb_name set 字段名=新值,字段名=新值...  Where id = 4;

      name varchar(10),

mysql> insert into my_pri2 values('itcast0001','39010001',90),('itcast0001','39010002',85),('itcast0002','39010001',92);

#插如数据演示 insert into enum_set(id,sex,fav) values(null,'男','篮球'); insert into enum_set(id,sex,fav) values(null,1,1);

删除

      primary key(id, number, ...) #第两种方法,这种办法是切合主键,相比较特殊

图片 5

#多选项 insert into enum_set(id,sex,fav) values(null,'男','篮球,足球,台球'); insert into enum_set(id,sex,fav) values(null,'女',11);

Delete  from  表名tb_name  where id = 3;

    )charset utf8;

接下去实验下主键冲突(重复)

 text类型:     他成为“长文本”字符类型。常常,此中存款和储蓄的数额不占表格中的数据节制。   其最长存款和储蓄是65535字符。smalltext  longtext

清空表数据  auto_increment = 1

复合主键:

mysql> insert into my_pri1 values('刘辉','itcast0022'); #不得以,主键冲突

任何  binary 类型 定长二进制字符串  varbinary 类型 变长二进制字符串  blob 类型 二进制数据类型,然则用于存款和储蓄“图片”

Truncate tb_name

     在创建表的时候,在颇有的字段之后,使用primay key(主键字段列表卡塔尔来创建主键(能够有八个字段作为主键卡塔尔来创建复合主键。

mysql> insert into my_pri2 values('itcast0001','39010001',100); #不可以,冲突

 

My.ini

     语法:primary key(字段1,字段2......)

图片 6

时刻等级次序:  datetime类型:   时间日期

三行配置 改服务器端 顾客端  连接字符集  utf8

     例子:创立一张my_primark_key2的表,为其增多number字段(int类型卡塔尔和classname 字段(varchar类型卡塔尔(قطر‎,将那个2字段增加成复合主键。          

1.2翻新,删除主键

 date类型:   日期

[client]

        create table if not exists my_primary_key2(

一向不艺术更新主键,主键需先删除手艺扩充

 time类型:   时间

default-character-set=utf8

          number int not null,

alter table [表名] drop primary key;

 year类型:   年份    timestamp:   时间戳类型:相像js中的Get提姆e(卡塔尔,或php中的Time(卡塔尔国,他们都收获的是叁个“整数数字”。 在采纳中,时间日期类型,在大家温馨给定的多寡情况下,须要利用“单引号”引起来。

[mysqld]

          classname varchar(20) not null,

mysql> alter table my_pri3 drop primary key;

 

character-set-server=utf8

          primary key(number,classname) #符合主键

图片 7

################################################### #演示代码 create table tab_time(  dt datetime,  d2 date,  t2 time,  y year,  ts timestamp );

collation-server=utf8_general_ci

        )charset utf8;

1.3主键的归类

##安顿数据 insert into tab_time(dt,d2,t2,y)  values('2016/4/1 15:50:00','2016/4/1','15:50:00','2017');

重启mysql服务

插入数据:插入数据只有三个字段(number,name卡塔尔协同重新时才会插入战败,假如有1个字段重复,另叁个字段不另行,那么会插入成功。

再实际创造表的历程中,非常少使用真是业务操作数据作为主键字段(业务主键,如学号,课程号)超过八分之四的时候利用逻辑性的字段(字段未有事情含义,值一点意义都没有),常常将这种字段主键称为逻辑主键

insert into tab_time(dt,d2,t2,y)  values(now(),now(),now(),now());

黄金年代.数据表的定义:

 

mysql> create table my_student (id int primary key auto_increnment comment '逻辑主键:自拉长',number char(10卡塔尔国 not null comment '学号',name varchar(10卡塔尔国 not null卡塔尔(英语:State of Qatar);

 

数据表是数据库中的基本对象元素,以行和列组成,只怕记录和字段组成的二维布局用于俱数据,数据表由表结商谈表内容两有的组成,先创建表构造,然后本事输入数据,数据表结构设计主要富含字段名称、字段类型和字段属性的安装

③ 在已开立好的表中追加主键

机动增进:当对应的字段不给值,大概说给暗中认可值或许给null的时候,会自动的被系统触发,系统会从脚下字段中原来就有个别最大值再进行 1操作,获得贰个新的再差别的字段

中央语法情势: create table 【if not exists】 申明(字段名【,索引或约束列表】) 【表选项列表】; create table 【if not exists】 注脚(字段1,字段2,....字段名【,索引1,索引2,...】) 【表选项1,表选项2,...】;

常见状态下,同贰个数据库中能够有五个数据表,但表名必需是并世无双的,表中每一条记下描述了叁个连锁音信的集合,每叁个字段必得为唯意气风发的,种种字段都亟待钦命数据类型

   alter table my_tab3 modify id int primary key; #其二种方式

自增进日常是和主键搭配使用

字段设定情势: 字段名 类型 【字段属性1 字段属性2 ....】

数据表的多少列的品类

   alter table my_tab3 add primary key(id, ...);

自增加特点:auto_increment

primary key:用于设定该字段为主键,当时该字段的值就足以“唯大器晚成明确”生机勃勃行数据; unique key:设定该字段是“唯风流罗曼蒂克的”,也正是不可重复的 not null: 用于设定该字段不能够为空(null) 若无设定,则默许是足感觉空的 default xx值:用于设定该字段的暗中同意值。

表中列的数据类型:4种

  1. 主键更新与删除

1.4新增加自增进

#示范字段属性的运用 create table tab_shuxing(  id int auto_increment primary key,  user_name varchar(20卡塔尔(英语:State of Qatar) not null unique key,  password varchar(48卡塔尔 not null,  age tinyint default 18,  email varchar(50卡塔尔 comment '电子邮箱' 卡塔尔国;

1.数值类型 存款和储蓄范围分歧

  主键不可能创新,若想翻新主键,只好删除后再行增加!!!!

1.别样三个字段要做自增进必要前提是自个儿是三个目录(key 风华正茂栏有值)

#插入数据 insert into tab_shuxing (id ,user_name,password,age,email)values (1,'nunu1','123456',20,'nunu1@qq.com'); insert into tab_shuxing (id ,user_name,password,age,email)values (null,'nunu2',md5('123456'),null,'nunu2@qq.com'); insert into tab_shuxing (user_name,password,email)values ('nunu3',md5('654321'),'nunu3@qq.com');

tinyint  1

  alter table my_tab3 drop primary key;

mysql> create table my_auto(id int auto_increment comment '自增长',name varchar(10) not null) charset utf8;

select * from tab_shuxing;

smallint  2

 

图片 8

 

mediumint  3

五、auto_increment -- 自动拉长

2.自增进字段必须是数字,并且是整型,一张表最八只可以有自增进

目录:  钦定多少个表的某部或一些字段作为“索引数据字段”  方式为: 索引类型(要树立目录的字段名)  索引类型有: key(字段名卡塔尔国;  #普通索引    含义:正是叁个索引,只可以加快查找速度    unique key(字段名卡塔尔(قطر‎; #独一索引    含义:能够设定其字段的值不能够再度(唯意气风发性)    primary key(字段名卡塔尔国; #主键索引    含义:具备区分该表中的任何生机勃勃行数据的功效     唯大器晚成性可认为空 而主键索引不能为空    fulltext (字段名卡塔尔(英语:State of Qatar); #全文索引    foreign key (字段名卡塔尔(英语:State of Qatar) references别的表中的字段名; #外键索引

int  常用 4

  1. 活动拉长常常与主键搭配使用, 字段设置自动增进后,不给值,或给默许值或NULL的时候,会活动触发,倘诺给了值,则当前自增失效,从下三遍开首以当下最大值伊始自增。

mysql> create table my_auto(id varchar(1) primary key auto_increment comment '自增长',name varchar(10) not null) charset utf8;

 

bigint  8

设置为自增加的字段必需是二个目录,且必得是三个整型类型,一张表只可以有贰个字段被设为auto_increment !!!!

图片 9

#示范索引成立语法: create table tab_suoyin(  id int auto_increment,  user_name varchar(20) ,  email varchar(50),  //age int, /*并未有索引*/

unsigned 属性 无符号 

自增进的特点 :

3.一张表最多只好有多少个自增加

 key(email),  unique key(user_name),/*那就是举世无双索引*/  primary key(id)/*那就是主键索引*/ );

int(数字卡塔尔  默许数字未有其余意义

       a卡塔尔国、任何二个字段做自拉长前提:该字段必需是五个索引字段(key意气风发栏有值卡塔尔国。

mysql> create table my_auto(id int primary key auto_increment comment '自增长',name varchar(10) not null) charset utf8;

 

独有至极 0填充属性才有意义 (zerofill卡塔尔

      b卡塔尔、自拉长字段平时是整形。

图片 10

外键: create table banji(  id int auto_increment primary key,  banjihao varchar(10) unique key comment '班级号',  banzhuren varchar(10) comment '班主任',  open_date date comment '开班日期' 卡塔尔;

抢先数字 1234  唯有给的数值  小于这几个数字时 才会用0填充 至数字长度

      c卡塔尔(قطر‎、贰个表中只好有1个自拉长字段。

1.5自增加的使用

create table xuesheng(  stu_id int auto_increment primary key,  name varchar(10),  age tinyint,  banji_id int comment '班级id',  foreign key (banji_id) references banji(id) );

float

示例:
加多一张my_auto_increment的表,为其增添id字段和name字段,个中id字段设置成主键和自增加。

当自动增进被给定的值为null 可能暗许值的时候会触发自动增加。

 

double

  create table if not exists my_auto_increment(

mysql> inster into my_auto(name) values('邓立军');

 

float(3,1卡塔尔(英语:State of Qatar)  共3位 小数点后1位 23.4

   id int primary key auto_increment, #合营主键使用,自拉长

mysql> inster into my_auto(name) values(null,'龚森');

 

大器晚成经不加括号 暗中同意不可能用来标准查询 

   name varchar(10) not null

mysql> inster into my_auto(name) values(default,'张涛');

约束:

如若加小括号  给精度  能够用来查询条件

 )charset utf8;

图片 11

主键限制:primary key(字段名卡塔尔(英语:State of Qatar);

2.字串类型

插入值:       

自拉长假设对应的字段输入了值,那么自拉长失效;不过下三次仍然为能够够精确的自拉长(从最大值 1)

唯风度翩翩约束:unique  key(字段名卡塔尔(قطر‎;

char(n) 0--255 字节

  insert into my_auto_increment values(null,'张三'); #实用,赋予空值null的花样,这种样式极度有利
  
insert into my_auto_increment(name) values('李四'); #立见成效,不给值的情势,若是不给值,表名后必需钦赐哪些字段要给值

1.6点名数量

外键约束:foreign  key(字段名卡塔尔(قطر‎ references 其余表名;

varchar(n)  0--65535 字节  < 21845

黄金时代旦对应的自增加字段输入了值,那么自增加失效,不过下二回还能够准确的自增进(从最大值 1卡塔尔(قطر‎。

mysql> insert into my_auto values(6,'何思华');

反省限制:  create table tab1(   age tinyint,   check (age>=0 and age<100卡塔尔(قطر‎ /*那便是检查节制*/  );

char(n)

 insert into my_auto_increment values(10,'王五');

mysql> insert into my_auto values(null,'陈少炼');

 

恒定长度

再也插入数据的时候,自增进就能够从11方始:

图片 12

表选项列表

超过n 会截取

 insert into my_auto_increment values(null,'赵六');

何以分明后一次是怎样自增进呢?能够透过表查看创造语句

charset = 要运用的字符编码 engine = 存储引擎(表类型) auto_increment = 设定当前的自增加字段的初步值 comment = 该表的意气风发部分验证文字

< n 会采用空格补至n

自增进若是是关联到字段改动,必得先删除自拉长,后增加,一张表中只好有1个自拉长。

mysql> show create table my_auto;

 

varchar(n)

修改当前已存在自增进的值,改过只好比当前已有的自增加的最大值大,无法小(小则不奏效卡塔尔(قطر‎。

图片 13

create table tab_xuanxiang(  id int auto_increment primary key,  name varchar(10),  age tinyint ) charset = gbk, engine = MyIsam, auto_increment = 1000, comment = '说明、、' ;

可变长度

 update my_auto_increment set id = 20 where name = '赵六'; #将姓名字为赵六的id匡正成20,仅仅是改革数据,因而下三遍自拉长值是12

1.7校订自增进

insert into tab_xuanxiang(id,name,age) values(null,'nnn',18);

超过n 会截取

重复插入数据,自拉长就能够从12上马,并非从21,注意insert和update操作后效果的差别:

自增进假设是关乎到字段改换:必需先删除自增加,后扩张(一张表只好有二个自拉长)

 

< n 会缩至实际尺寸

insert into my_auto_increment values(null,'甜七');

修正当前自拉长已经存在的值:改进只可以比当前本来就有的自增进大,无法小(小会不见到成效) alter table [表名] auto_increment = 值;

修改表: 增添字段:alter table 表名 add [column] 新字段名 字段类型 [字段属性列表] 修改字段(并可改名):alter table 表名 change [column] 旧字段名 新字段名 新字段类型 [新字段属性列表] 删除字段:alter table 表名 drop [column] 字段名 增加普通索引:alter table 表名 add key [索引名] (字段名1,....) 增加独一索引(节制):alter table 表名 add unique key [索引名] (字段名1,....) 增添主键索引(约束):alter table 表名 add primary key [索引名] (字段名1,....) 校订表名:alter table 表名 rename [to] 新表名;

char和varchar的区别?

alter table my_tab4 auto_increment = 20; #仅校正单张表的开首值,下次插入数据自拉长从20最早

修正表选项的值

#实例 alter table tab_xuanxiang add column email varchar(50); alter table tab_xuanxiang add key (age); /*累计一个家常便饭索引*/

char比varchar效率高

删除自增增进:

mysql> alter table my_auto auto_increment = 4; #向下修正,不见到成效

删除表: drop table [if exists] 表名;

创制表时 (n卡塔尔(英语:State of Qatar) 是无法简单的

自增加是字段的叁本品质,能够由此modify属性来修改(字段未有自增进卡塔尔(英语:State of Qatar)。

图片 14

从原来就有表复制表布局:create table 【if not exists】新表名 like 原表名;

text 文本

语法:alter table 表名字 modify 字段名 数据类型

mysql> alter table my_auto auto_increment = 10; #演化更正

desc tab_int;

mediumtext 中长文本

例子:将my_auto_Increment表中 id字段的自增加去掉。

图片 15

创办视图: create view v1 as select id,age from tab_xuanxiang;

longtext 长文本

    alter table my_auto_increment modify id int;

思维:为何自拉长是从1起来?为啥历次是自增进1?

使用视图:充作一个表用就足以了

enum('nan','nv','baomi'卡塔尔国  radio 接纳中间一个值

自拉长为啥从1开首?又干什么历次都是自增1呢?

富有系统的呈现(如字符集,查对集)都以有种类里头的变量实行支配的

除去视图: drop view 【if exists】 视图名;

set('a','b','c','d'卡塔尔  checkbox  选拔在那之中二个多什值

 全种类统的显现(如字符集、核对集卡塔尔(قطر‎都以由系统的内部变量实行调节的。

翻开自拉长对应的变量;mysql> show variables like 'auto_increment%';

insert into user(love) values('a,b');

 查看自增进对应的变量的语法:show variables like 'auto_increment%';

图片 16

3.日期和岁月项目

mysql> show variables like '%auto_increment%';
-------------------------- -------
| Variable_name | Value |
-------------------------- -------
| auto_increment_increment | 1 | #步长
| auto_increment_offset | 1 | #起始值
-------------------------- -------

能够改良变量完毕不相同的效应;厘即是对一切数据库改正,并非单张表(改进是会话级)

选用int来积攒  再次来到的都以时间戳

能够校正变量实现分化的职能。若是对整个数据库修正(实际不是一张表卡塔尔,这种格局是校订时会话级(当前客商端,当此连接有效,关闭失效卡塔尔国。

1.8改动自增长幅度

4.NULL

 修正成一回自增为5。

mysql> set auto_increment_increment = 5; #改正步长为5

NULL意味着“没有值”或“未知值”

 set auto_increment_increment = 5; #意味着一遍自增5

图片 17

能够测量试验有些值是不是为NULL

 

查阅是或不是改进成功:mysql> show variables like 'auto_increment%';

不能对NULL值实行算术总结

  1. 应用方法,在字段后边跟auto_increment关键字

图片 18

对NULL值进行算术运算,其结果或许NULL

  create table my_tab4(

陈设记录:测验效果:自动使用自增加

0或NULL都代表假,其他值都代表真

   id int auto_increment, #自增进,这里没有配个主键使用

mysql> insert into my_auto values(null,'刘阳');

三.数据表的多少列的质量

   name varchar(10)

mysql> insert into my_auto values(null,'邓贤师');

unsigned  无符号  增大存款和储蓄范围

  )charset utf8;

1.9剔除自拉长

zerofill  0填充  配合int(3)

. 修正自拉长

自增进是字段的天性:能够通过modify来张开改换(有限支撑字段未有auto_increment即可

auto_increment 自动增加  必需借助于主键索 primary key引或独一索引unique

  alter table my_tab4 auto_increment = 值; #假使改的值比当下最大值小,则校勘无效

) alter table [表名] modify 字段类型;

null空和not null不为空

. 查看系统自增进变量

mysql> alter table my_auto modify id int primary key; #错误,主键理论是独立存在

default默认值

  show variables like '%auto_increment%';

图片 19

not null default 'a'

  能够改革系统变量的值, 但是没什么意思

mysql> alter table my_auto modify id; #有主键的时候不要再加主键

表类型(表引擎) engine=myisam

  set auto_increment_increment = 值; #校勘自增长幅度度

图片 20

myisam

  1. 删除自增加

--唯一键

innodb

  alter table my_tab1 modify id int; #修正字段,使其并未有auto_increment即可。

一张表往往有比超多字段须求具有唯大器晚成性,数据不能够重新,可是一张表中只好有三个主键

myisam 效率  高于innodb

 

:唯大器晚成键(unique key)就足以肃清表中有多少个字段必要唯意气风发性约束的题目。

myisam 更稳定

六、unique key 唯一键

唯大器晚成键的精气神儿和主键大概:唯黄金时代键默许的允许字段为空,並且能够三个为空(空字段不出席唯生龙活虎性相比)

myisam 不帮忙职业

一张表往往有超多字段须要有所唯生龙活虎性,数据无法再度(但可以为null,不像主键),那时候用唯风度翩翩键(unique卡塔尔就反映出其优势了,能够缓宁心中八个字段要求唯意气风发性限定的主题素材。

1.1扩展唯黄金时代键

innodb 援救职业

唯意气风发键的本色与主键的属性大约,唯大器晚成键默许的允许字段为空,何况能够八个字段为空(空字段不参预唯生龙活虎性相比卡塔尔(英语:State of Qatar)!!!!

主旨与主键大约:二种方案

myisam 表引擎 或 表类型  生成多个公文 .frm表构造  .MYD表数据  .MYI 表索引

特点:
1. 唯一键同意自动为NULL,且能够有八个。假使当前表中一直不主键,并有唯风流倜傥键设为NOT NULL时,会显得第二个NOT NULL的唯蓬蓬勃勃键为P凯雷德I,但她精气神儿是唯大器晚成键!!!
因而使用desc 表名 查看某字段显示为pri的字段不自然是主键,如若该字段是叁个不为空的唯蓬蓬勃勃键,也会显得为Pri,可透过show create table 查看真伪

方案1:更创造表的时候,字段之后从来跟unique / unique key

innodb 生成一个  表结构 .frm .ibd

  1. 追加唯大器晚成键:有3种情势

mysql> create table my_unique1(number char(10卡塔尔(قطر‎ unique comment '学号:唯黄金年代,然而允许为空',name varchar(20卡塔尔国 not null卡塔尔 charset utf8;

my.ini配置文件 三行 utf8

   语法: 字段名 数据类型 unique/unique key

图片 21

s  utf8

  ① 在创造时在字段后边跟关键字unique/unique key

方案2:在颇有的字段之后增添 unique key(字段列表卡塔尔国; #复合唯生机勃勃键

数据库字符集 utf8

    create table my_unique1(

mysql> create table my_unique2(number char(10) not null comment '学号:',name varchar(20) not null);

表暗中认可字符集

      id int unique, #唯一键

mysql> unique key (number) charset utf8;

defalut charset=utf8

      num int unique key, #唯一键

图片 22

表字段字符集

      name varchar(10)

方案3:在创设表之后扩展唯后生可畏键:

会世襲表的字符集

    )charset utf8;

mysql> create table my_unique3(id int primary key auto_increment,number char(10) not null,name varchar(20) not null) charset utf8;

编辑器  utf-8 无BOM

  ② 在创登时在富有字段前面扩张 unique key(字段列表卡塔尔(英语:State of Qatar) ,复合唯朝气蓬勃键MUL

2.2日增唯大器晚成键:

浏览器编码

    create table my_unique2(

mysql> alter table my_unique3 add unique key(number);

header('Content-type:text/html;charset=utf-8');

      id int,

图片 23

四.校勘表布局

      num int,

2.3唯大器晚成键的封锁

Alter table tab_name 操作

      name varchar(10)

插入数据

1.修正字段

      unique key(id, num) #唯风流罗曼蒂克键,雷同于主键,这种样式也称之为复合唯风华正茂键

mysql> insert into my_unique1 values(null,'曽光'),('itcast0001','晁松'),(null,'李帅');

Alter table tab_name change 旧字段名称 新字段名称 新字段类型 属性

    )charset utf8;

图片 24

Alter table tab_name modify 旧字段名称 新字段类型和属性

  ③ 在表创立之后追加唯大器晚成键

mysql> insert into my_unique1 values('itcast0001','周江');

modify和change的分别  change能改善字段名称  modify不可能

    alter table my_unique3 add unique key(字段列表卡塔尔国;  #unique key 或 unique 都可以

图片 25

2.增添字段

    alter table my_unique3 modify 字段名 数据类型 unique; #改正已经存在的字段为唯风流倜傥键

要是唯大器晚成键也不容许为空:那么主键限定的功效是均等的

Alter table tb_name add 字段名称 字段类型和质量

  1. 改正与删除唯意气风发键

--更新唯生机勃勃键和删除唯黄金时代键(唯生龙活虎键能够有几个,能够不删除)

3.刨除字段

    和主键同样,先删除后加多,因为唯风姿罗曼蒂克键能够有八个,所以不删除直接抬高也能够!!!!!

删去唯生龙活虎键

Alter table tb_name drop 字段名称

    alter table my_unique drop index 索引名; #唯风度翩翩键暗中认可使用字段名作为目录名字

alter table [表名] drop unique key; #唯风流倜傥键有多少个

4.改进表名称

 

alter table [表名] drop index [索引名]; #唯风度翩翩键私下认可使用字段名做索引名字

rename table 旧表名 to 新表名;

从以上可以预知唯意气风发键和主键都以索引!!!

mysql> alter table my_unique3 drop index number;

Alter table 表的旧名称 rename as 表的新名称;

七、索引

图片 26

五.数目表索引设置

  索引的效果与利益: 升高查询效能、限定数据的实惠

主键索引 primary key

  1. 主键索引   primary key

一个表里能够未有主键索引

  2. 唯豆蔻梢头键索引  unique key

一个表里只可以有贰个主键索引

  3. 全文索引   textfull index

丰盛主键索引

  4. 普通索引   index

create table tb_name(

 

id int unsigned not null auto_increment primary key

)engine=myisam default charset=utf8;

create table tb _name(

id int unsigned not null auto_increment,

primary key(id)

);

alter table tb_name add primary key(字段名称卡塔尔(قطر‎;

去除主键索引

alter table tb_name drop primary key;

设若字段有全自动拉长属性  则必需先去除 再删除主键索引

alter table tb_name modify id int unsigned not null;

alter table tb_name drop primary key;

独一索引 unique

其一字段 这一列的值不许再一次

二个表中能够有多少个独一索引

拉长独一索引

create table tb_name(

id int,

username varchar(20) unique

);

create table tb_name(

id int,

username varchar(20),

age tinyint unsigned,

unique(username)

);

去除独一索引

alter table tb_name drop index 索引名称

设若创立时尚未点名索引名称那么索引名为字段名称

平时(普通卡塔尔(英语:State of Qatar)索引 index  只好在表字段设计后增添

增速查询速度

缺点:

占空间

频率会下滑 select 查询速度  insert  update delete

create table tb_name(

id int,

username varchar(20),

age tinyint unsigned,

index [目录名称](username)

);

删去普通索引

alter table tb_name drop index 索引名称

查阅表中的目录

show indexes from tb_name;

六.MySQL顾客授权(明白卡塔尔国

格式:

grant 允许操作 on 库名.表名 to 账号@来源 identified by '密码';

grant all on *.* to zhu@192.168.107.80 identified by '123456';

grant SELECT on *.* to zhu@'%' identified by '123456';

刷新权限:

flush privileges;

查看钦定客户的权限音讯

show grants for 账号@来源;

移除一些权力

-- revoke:只删除了客户权限,但尚无去除那几个顾客

mysql> revoke insert,delete on *.* from admin@192.168.112.132 identified by'123';

revoke all on *.* from zhu@localhost;

删去了方方面面客商及其权限

drop user zhu@localhost;

本文由星彩网app下载发布于星彩彩票app下载,转载请注明出处:基础知识,mysql中列属性

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。