数据类型和创建,Mysql学习第壹天

数据类型:数据列,存储过程参数,表达式和局部变量的数据特征。

简介:

Mysql学习第二天,mysql第二天

DDL 数据库定义语言(库的操作)(看懂,工作时使用较少)
1.创建一个库
         create database 库名称 [character set 码表名称 collate
字符校对集名称]
         create database day15;
        1>看到Query OK, 1 row affected (0.00 sec) 表示执行成功.
        2>sql语句语法: 结尾应使用”;”号.
        3>字符校对集: 决定数据排序的。
2.显示mysql中都有哪些库了.
        show databases;
        +——————–+
        | Database |
        +——————–+
        | information_schema |
        | day13 |
        | mysql |
        | performance_schema |
        | test |
        +——————–+
       
可以看到除了自己创建的库之外,还有一些其他库。其他库(除了test)不要乱动。因为是保存mysql的配置信息,账户信息等等。
        test库 : 自动创建用于测试的。
3.删除一个数据
        drop database 数据库名称;
        drop database day15;
4.修改数据库码表和字符校对(不常用)
        alter database 数据库名称 character set 数据库码表 [collate
校对集名称];
        alter database day15 character set utf8 collate utf8_bin;
5.当前要使用的库(重要)
        use 库名
        use day15;
        出现Database changed,说明切换完成.
6.查看当前选择的数据库
        select database();
        +————+
        | database() |
        +————+
        | day15 |
        +————+
7.显示创建库的语句.
        show create database 数据库名称;
        show create database day15;
        | day15 | CREATE DATABASE `day15` /*!40100 DEFAULT CHARACTER
SET utf8 COLLATE
        utf8_bin */ |
//——————————————————————————————————————————————————-
数据库中的数据类型 (了解,知道在什么情况下应该使用什么类型的数据)
一。数字型
        整型
         TINYINT 1字节 byte
         SMALLINT 2字节 short
         MEDIUMINT 3字节
         (常用)INT 4字节 int
         BIGINT 8字节 long
        浮点型
         FLOAT 单精度4字节 float
         **DOUBLE 8字节 double

 

1、MysQl是一种开源关系型数据库管理系统

         *DECIMAL 没有精度损失

        DOUBLE 和 DECIMAL 区别?
         DOUBLE类型在运算时会有精度的缺失。
         DECIMAL 就是解决精度缺失问题的。(底层使用字符串来保存数字)
         单纯想表示小数属性时,使用double。

整形:

2、是有MysQl AB公司开发,目前Oracle旗下产品

         需要频繁参与运算的小数,使用decimal。

二。字符串类型
 注意: 字符串类型要使用单引号包裹.
        短字符串类型

tinyint:一个字节,-128到127;2的7次方

3、MySQL分为社区版和商业版

        CHAR/VARCHAR (最大长度255字节)

问题:char和varchar有什么区别?
         char定长字符串.varchar表示变长字符串.
         同时指定长度为10。当存储 abc
         char => ‘abc ‘
         varchar => ‘abc’
结论: 开发中varchar用的最多。 char只在表示固定长度的枚举中使用。例如

smallint:两个字节,-32768到32767;2的15次方

特点:

:性别(用01,02表示)

长字符串类型(流类型)
      *TEXT/CLOB 保存文本(字符流) –>
当要保存的内容超过255字节时使用. java中的writer 字符
      BLOB 保存字节(字节流) –> 开发中用不到 java中的stream 字节
   Character Large Object
   binary Large Object
 区别:
      text:只能存储字符数据.
      BLOB:可以存储字符和多媒体信息(图片 声音 图像)
三、日期和时间类型
        date 只记录日期 2015-01-14
        time 只记录时间 11:36:25
        year 只记录年 2015
        datatime 又记录日期 又记录 时间 2015-01-14 11:36:25
**timestamp 同上 2015-01-14 11:36:25
   问题: datatime 和 timestamp 区别?
         这两种类型记录的数据是一模一样.
         区别在于插入的时候,如果插入datatime类型时,没有
传值,那么该类型默认值就是null;
         如果插入timestamp类型时,没有
传值,那么该类型默认值就是当前时间;
//————————————————————————–;—————————————-
与创建表相关的语句(DDL) (记住,能够手写)
      CREATE TABLE table_name
      (
      field1 datatype 约束/主键约束 auto_increment,
      field2 datatype 约束,
      field3 datatype 约束
      )character set 字符集 collate 校对规则
1.创建表
      create table t_user(
      name varchar(10),
      password varchar(20),
      age int(3), — 数字类型在声明时,可以忽略长度.
      birthday datetime,
      hiredate timestamp
      );
varchar最好指定长度
整型一般不指定.
2.查看当前库中有哪些表
        show tables;
3.查看表的结构
        desc 表名;
        desc t_user;
4.删除表
        drop table 表名;
        drop table t_user;
5.添加一列
        alter table 表名 add 列名 类型;
        alter table t_user add photo blob;
6.修改列的类型
        alter table 表名 modify 列名 类型;
        alter table t_user modify photo varchar(20);
7.修改列的名称
        alter table 表名 change 旧列名 新列名 数据类型;
        将 photo这一列 改名为 image
        alter table t_user change photo image varchar(20);
8.删除某列
        alter table 表名 drop 列名;
        alter table t_user drop image;
9.修改表的名称
        rename table 旧表名 to 新名;
        rename table t_user to user;
10(用的极少)修改表的字符集.
(如果创建表时不指定,默认使用数据库的字符集)
        alter table 表名 character set 字符集 collate 校对集;
        alter table t_user character set utf8 collate utf8_bin;
//————————————————————————————————-
列的约束 (掌握)
保证数据的完整性的.
1.非空约束(not null) 指定非空约束的列, 在插入记录时 必须包含值.
2.唯一约束(unique) 该列的内容在表中. 值是唯一的.
3.主键约束(primary key)
当想要把某一列的值,作为该列的唯一标示符时,可以指定主键约束(包含
非空约束和唯一约束). 一个表中只能指定一个主键约束列.
主键约束 , 可以理解为 非空+唯一.
注意: 并且一张表中只能有一个主键约束.
约束体现数据库的完整性.
例如:创建带有约束的表
create table t_user2(
id int primary key auto_increament, — 员工编号
name varchar(10) not null, — 员工姓名
loginname varchar(10) not null unique, — 登陆名称
password varchar(20) not null, — 密码
age int(3) not null, — 年龄
birthday datetime not null, — 生日
hiredate timestamp not null — 入职日期
);
//—————————————————————————————————————————-
主键自动增长 (掌握)

注意:
1.前提某个表的主键是数字. 我们可以将该主键设置为自增.
2.使用主键自增可能会造成主键的断层。
3.mysql,sqlserver这两个数据库具有该功能.
4.主键自增只能给主键约束的列加。
自增就是 每次插入记录时不需要指定值. 该字段自己维护自己的值.
维护方式就是每次加1;
语法:
create table t_user(
id int primary key auto_increment,
password varchar(30) not null,
age int not null,
birthday datetime not null,
hiredate timestamp not null,
number int unique
);
//——————————–创建修改表练习—————————————————
CREATE TABLE employee (
id INT(10),
NAME VARCHAR(10),
gender VARCHAR(10),
birthday DATETIME,
entry_date TIMESTAMP,
job VARCHAR(5),
salary DOUBLE(5,3),
RESUME TEXT
);

1在上面员工表的基础上增加一个image列。

        alter table employee add image blob;

2修改job列,使其长度为60。

        alter table employee modify job varchar(60)’

3删除gender列。

        alter table employee drop gender;

4表名改为user。

        rename table employee to user;

5修改表的字符集为utf8
6列名name修改为username
        alter table employee change name username varchar(20);

//———————————-对表中数据的增删改(DML)——————————————————————-
create table t_user(
id int primary key auto_increment,
name varchar(20) not null,
email varchar(20) unique
)

DDL
数据库定义语言(库的操作)(看懂,工作时使用较少) 1.创建一个库 create
database 库名称 [character set 码表名称…

mediuint:三个字节,-8388608到8388607;2的23次方

1、体积小

int:四个字节,-2147483648到2147483647;2的31次方

2、速度快

bigint:八个字节,-9223372036854775808到9223372036854775807;2的63次方

3、成本低

浮点数:

4、免费开源

必发365 1

5、多语言支持

float和double也可以有(M,D)M表示位数,D表示小数点后的位数,decimal是精确值,另外两个是近似值。

6、可移植性好

日期时间型:

7、高效(支持多线程,充分利用cpu资源,运行速度非常快)

必发365 2

8、支持大量数据查询和存储

字符型:

9、操作简单易学习

除了可以存储字符串数据之外,还可以存储其他数据,比如图片和声音的二进制数据

密码: admin

必发365 3

show databases;  是查看你所有数据库的列表

存储“abc”,char(6),那么则为“abc  
”,为定长,varchar(6),则存储“abc”,不为定长。

use mysql;        查看mysql

汉字为一个字节。

use  选中指定数据库

 

****表的概念

创建和查看数据库表。

表头(header):每一列的名字

数据表:其实就是表格,有行和列。

列(row):具有相同数据类型的集合

创建表:

行(col):每一行用来描述某个人、事物具体信息

比如创建这个表必发365 4

键(key):用来识别某个特定的人,或者是物的方法,键的值在当前列中具有唯一性

基本语法必发365 5

值(value):行的具体信息,每个值必须与该列的数据类型相同

然后实例操作

****数据类型

必发365 6

1、日期和时间数据类型

 

date(日期)  格式:2017-08-08;

 用“show tables from
book”来显示这个数据库中的表,如果是当前数据库可以是‘show tables’

time(时间)  格式:10:28:30

必发365 7

datatime  日期时间  2017-08-08 10:28:30

那么 ,查看表的结构是“show columns from xx;”差不多是这样

timestamp  自动储存记录修改时间

必发365 8

year 年份

也可以用describe xx或desc xx来看

2、数值数据类型

必发365 9

2-1:整型

最后是显示数据表的创建语句“show create table xx;”

tinyint

必发365 10

smalint

 

mediumint

修改数据库表

int

添加列

bigint

alter table reader add email varchar(30) (after
tel/first);可以指定位置添加,否则在最后一行。

2-2浮点型

修改列名

float(m,d)  单精度浮点型    m总个数,d小数位

alter table reader change email email2 varchar(30);

double(m,d) 双精度浮点型    m总个数,d小数位

修改列的数据类型

decimal(m,d) 储存为字符串的浮点数

alter table reader modify email2 varchar(10);

3、字符串数据类型

修改列的排列位置

1.char(N)  固定长度  最多255个字符

alter table reader modify balance decimal(7,3) alter email;

varchar(n) 可变长度  最多65535个字符

alter table reader modify balance decimal(7,3) first;

####了解

删除列

tinytext  可变长度  最多255个

alter table reader drop email2;

text      可变长度  最多65535个

修改表名

mediumtext 可变长度  最多是2的24次方-1个字符

alter table reader rename to readerinfo;

longtext  可变长度  最多2的32次方-1个字符

 

难点:

1.char(n)和varchar(n)括号中的n代表字符的个数,并不是字节的个数

所以我们使用中文的时候(utf-8)就意味着可以插入n个中文,

但是实际占用n*3个字节

2.char和varchar最大区别  char不管实际value都会只有n个字符

varchar只会占用实际字符,占用的空间+1,并且实际空间+1必须 <=n

3.实际值的长度大于了n,超出的截取没有超出部分

4.char在储存的时候会截取尾部的空格,varchar就不会

*****

create database  数据库名

创建数据库

删除数据库  drop  database 数据库名

use +库名    ==> 使用数据库

show tables 查看当前选中的数据库里边的所以数据表

创建表

create table +数据表名名字 如(abc)

查看数据表的表结构

show columns from 数据表名:

desc 数据表名

删除数据表:

drop table 表名

*****数据    id name sex birth

添加数据    ==>  insert into 名字  values(‘小明’,’男’,’1995-09-21′);

添加多条数据  ==>

insert into 名字 
values(‘小明’,’男’,’1995-09-21′),(‘小红’,’男’,’1995-09-21′),(‘小绿’,’男’,’1995-09-21′);

查询所有数据:

select *必发365, from 表名:

查询单个:

select * from 表名 where id=:

查询单个字段:

select id from 表名 :查询条件(可选)

修改数据 :  update 表名 set 字段=(id或者name)新的值  where id=2;

删除数据:

delete from 表名 where 条件;

条件: id=2  ==>指定删除 id=2的数据;

id  ==》 删除包含id的所有数据

添加表结构(在最后面添加)

alter table 表名 add 列名(字段) 约束 (数据类型之类);

alter table abc add age varchar(3);

添加表结构(在最后前面添加)

alter table 表名 add 列名(字段) 约束 (数据类型之类) first;

alter table abc add age varchar(3) first;

添加表结构(在指定位置添加)

alter table 表名 add 列名(字段) 约束 (数据类型之类) after 指定类名;

alter table abc add age varchar(3) after id;

删除表结构:

alter table 表名 drop 列名

alter table abc drop name;

修改列的类型

alter table 表名 modify 列名 新类型 新参数;

alter table abc modify name varchar(3);

修改列名和列类型

alter table 表名 change 旧的类名  新的类名 新的类型  新的参数

alter table abc change bith bithday varchar(10);

修改表民:

rename table 原表名 to 新表名;

alter table 原表名 rename 新表名;

统计数据条数 ==》count()

select count(*) from 表名;

查询id 在某个区间: 如 查询id2-3的内容

select * from 表名 where id>=2 and id<4

查询 第2条后的3条数据:

select * from 表名 limit 2,3; 2开始位置 (不包含),3:截取数量

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website