mysql学习笔记1

MySQL的学习笔记

目录

1:简介

基本语句

2.增删改查基本语句

创建表:

插入添加数据:insert语句

修改数据:update语句

删除数据:delete语句

查询数据:select语句

3.列类型与建表语句

MySQL三大列类型

建表和优化

4 修改表的语法

增加列:

删除列

修改列


1:简介

命令行窗口和MySQL服务器:C/S的关系,即客户端和服务器的关系。

基本语句

登录数据库:mysql -uroot -p  敲回车输入密码

数据库的增删用查语句:create database  数据库名; show databases; drop database 数据库名字;

                                        use 数据库名字。使用数据库

                                       没有重命名语句

数据表的增删改查语句:show tables;   drop table 表名;重命名: rename table  旧名字 to 新名字  (不常用)

一个简单的建表语句:create table stu(

                                    sid int,

                                    sname varchar(10)

                                    )engine myisam charset utf8;

插入数据:  insert into  stu values

                  (1,'zhangsan'),

                  (2,'lisi'),

                  (3,'wangwu');

清空表数据:truncate 表名;truncate  stu;

truncate 和delete的区别:truncate相当于先删除表再重建一张结构相同的新表。delete是从删除行的层面来操作的。、

乱码问题:命令行窗口使用的是gbk编码,要告诉服务器,客户端使用的是gbk编码

                   命令行输入:set names gbk;

1064表示语法错误。

\c  命令行退出

2.增删改查基本语句

创建表:

create table class(
id int primary key auto_increment,
sname varchar(10) not null default '',
gender char(1) not null default '',
company varchar(20) not null default '',
salary decimal(6,2) not null default 0.00,
fanbu  smallint not null default 0
)engine myisam charset utf8;

查看表的结构: desc class;

插入添加数据:insert语句

先set names gbk;

insert into class
(id,sname,gender,company,salary,fanbu)
values
(1,'张三','男','百度',8888.57,234);

插入部分列:

insert into class
(sname,gender,salary)
values
('赵六','男',8678.32);

注意:列与值必须一  一对应。

插入多行:

insert into class
(sname,gender,company,salary)
values
('刘备','男','皇室成员',8888.57),
('孙策','男','江东集团',8888.57),
('曹操','男','亳州',8888.57);

修改数据:update语句

update class
set
gender='女',
company='千度'
where id=1;

where后面加的是表达式,可以是任何过滤条件,不一定是id=。

删除数据:delete语句

删除都是删除一整行的数据,不能删除一行中的一列或几列。

delete from class  where salary>8800;

查询数据:select语句

select sname,company,salary
from class
where id=6;

select * from class;
select * from class where id>3;

后续知识:如何自己建表

如何修改表(添加或减少列)

多表联查

子查询

触发器

事务

存储过程

备份恢复

3.列类型与建表语句

建表:只要把表的第一行,表头建好,表就建好了。

建表过程就是声明字段的过程。

存储同样的数据,不同的列类型,所占的空间和效率是不同的。

MySQL三大列类型

数值型:n个字节,有8n位,表示范围

            整型

                      tinyint:      占据一个字节,存储范围是-128到127,或者0到255

                      smallint   2个字节  0-65535

                      mediuint  3个字节

                      int            4个字节

                      bigint        8个字节

声明整型时的参数:(M)     unsgined    zerofill.  默认是有符号的

无符号类型unsigned

 alter table class add score tinyint unsigned not null default 0;

(M) 和zerofill一起使用。m表示宽度,单独使用没有意义。

 alter table class add snum smallint(5) zerofill not null default 0;

浮点/定点型:

         浮点数在计算机里比较复杂。也可以设置unsgined.(M)和zerofill

         浮点   float(M,D);      M叫精度,代表总位数;D是标度,代表小数点后面的位数。能存10^38,10^(-38).如果M<=24,占4个字节,否则占8个字节。 float的精度有时会损失。

        定点   decimal(M,D):  把整数部分和小数部分 ,分开存储,比float精确。

create table salary (
    -> sname varchar(20) not null default '',
    -> salary float(6,2)
    -> ) engine myisam charset utf8;

字符串类型

char:  char(6),定长字符串类型。用空格补齐,会有存储空间的浪费,速度更快。如果数据原来右侧有空格,会丢失

varchar:  变长类型。  varchar(100)存储1-100个字符。不用空格补齐。但字段内容前面会有一或两个字节标识内容长度。

 

char(M),varchar(M)限制的是字符,不是字节。即char(2) charset utf8, 能存2个utf8字符.比如'中国',一个utf8字符3个字节。

 

text:大量的文本,搜索速度慢。存储文章内容,新闻内容。不用设置默认值

blob:二进制类型,用来存储图像、音频等信息。不用设置默认值。意义是防止由于字符集的问题导致数据丢失。

concat函数:用于连接字符串

select concat(ca,'!'),concat(vca,'!’) from test;

日期/时间类型

date:存储年-月-日      3个字节

birthday date not null default '0000-00-00'

time:存储   时时:分分:秒秒   3个字节

datetime:日期时间类型  年-月-日  时时:分分:秒秒  8个字节

year:     1个字节  范围1901-2155.也可以填0000,表示没有。

timestamp: 显示格式和datetime  一样。

建表和优化

把频繁用到的信息存储到一张表中,不常用的数据和占空间大的信息,优先考虑空间占用,存储到辅表。

建表就是声明列的过程。

create table 表名(
列名1  声明   列1参数,
列名2  声明   列2参数,
………………
列名n  声明   列n参数
)engine myisam/innodb/bdb  charset utf8/gbk/latin

4 修改表的语法

表创建完成之后,可以增加、修改、删除列。

增加列:

alter table 表名 add  列名 列类型 列参数; 


alter table 表名 add  列名 列类型 列参数 after 列名; 【把新的列添加到指定列的后面】 


把列添加成表的第一列
alter table 表名 add  列名 列类型 列参数  first; 

删除列

alter table 表名 drop 列名; 

修改列

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

列名也修改:

alter table 表名 change  旧列名 新列名 新类型 新参数; 

猜你喜欢

转载自blog.csdn.net/shanshuisheng/article/details/81456064