1

数据库

博客摘自于 http://www.cnblogs.com/haiyan123/p/7476269.html  海燕.

1.数据库的基本操作

 一、数据库的增删改查.
 增: create database db1 ; 
 删: droup database db1;
 改: alter database db1  charset uft8;
 查: show database ;
 设置默认的utf9, 在配置文件中写上 character_set_server =utf8
 
 use db2 ;#代表鼠标切换到目录 ,使用此db2 
 select database() # 查看你当前在哪个文件夹
 

使用存储引擎 方法1 :建表的时候指定 create table t1(id int) engine=innodb 会出现两个文件 create table t2(id int ) engine=myisam 会出现三个文件,速度比上面的快,但是我们还是要用innoDB create table t3(id int ) engine =memory 只有表结构,没有表数据,是创建到内存中的 方法2 :在配置文件中指定默认的存储引擎. /etc/my.cnf [mysqld] default-storage-engine =INNODB innodb_file_per_table =1

2.数据库之表操作

表的增删改查.
曾 create table t1(id ,name ) values(1,"x")
删 drop table t1 
改
插入数据 insert into test(id ,name) value (1,"x")


查 
show tables ; #查看所有表
show create table t1; #查看指定的表 
select* from t1 ; #查看表数据
select id ,name from t1 # 查看表数据
engine =InnoDB
表的存储引擎是InnoDB

 

 3. 操作文件的行内容

三、操作文件的行内容;
增: insert into db1.t1 values(1,"haiyan"),(2,"haiyang2“),(3,"haiyang2“)
删:delete from t1 where id =2 ;
    delete from t1;
    truncate t1;# 当数据量比较大的情况下,使用这种方式,删除的速度比较快.
改:update t1 set name ="sb" where id =3 ; 
    update t1 set name ="sb" where name ="xiaoxiao"
    alter table t7 modify id int primary key auto_increment;修改id主键并自增
查:select * from t1 #查看t1里的所有数据
    select name from t1 ; #查看t1 里所有的name
    select id,name from t1 ;#查看t1 里所有的id,name 
    
四、自增id的方法
    create table t5(id int primary key auto_increment,name char(10));
    create table t4(id int not null unique auto_increment,name char(10)); (不空且是唯一的) 这里和上面是一回事.
    insert into xx(name) values ("haiyan1"),
                                ("haiyan2"),
                                ("haiyan3");
                                
                                

五、拷贝表结构

create table t7(id int,name char(10));
create table t8 select *from t7; #拷贝表结构(如果有数据就把数据一起拷贝)
create table t8 select * from t5 where 1=2 #拷贝表结构,不拷贝表数据
alter table t7 modify id int primary key auto_increment; 修改id为主键并自增.
insert into t7(name) values ("egon1"),
                            ("egon2"),
                            ("egon4"),
                            ("egon5");


删除记录
delete from t7 where id =1  #删除记录
update t7 set name =""

 

4. 数据库的数据类型

首先补充点了解的小知识;

select * from mysql.user  #显示出来乱了
select * from mysql.user\G  #加了\G后一行一行显示了

一、数据类型:分不同种类去存不同类型的数据

存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的

1、数字(默认是有符号的)

数字又分为:

  整型:tinyint(小整型):一个字节

     int(整型):四个字节。注意:int的 宽度指的是显示的宽度,与存储无关

     bigint(大整形):八个字节

复制代码
========================================
        tinyint[(m)] [unsigned] [zerofill]

            小整数,数据类型用于保存一些范围的整数数值范围:
            有符号: -128 ~ 127
            无符号:0~ 255

            PS: MySQL中无布尔值,使用tinyint(1)构造。
 [unsigned]参数和[zerofill]参数的应用
3.将有符号的修改为无符号的:alter table t1 modify unsigned;(注意,如果里面有值了,
                                  得把里面的值清空了再修改)
4.alter table t2 modify id int(10) zerofill; 如果显示不够,就用zerofill填充




======================================== int[(m)][unsigned][zerofill] 整数,数据类型用于保存一些范围的整数数值范围: 有符号: -2147483648 ~ 2147483647 无符号:0~ 4294967295 ======================================== bigint[(m)][unsigned][zerofill] 大整数,数据类型用于保存一些范围的整数数值范围: 有符号:-9223372036854775808 ~ 9223372036854775807 无符号: 0~ 18446744073709551615
复制代码

 

  小数:

     float:在位数比较短的情况下不精准(**** 数值越大,越不准确 ****)

     double:在位数比较长的情况下不精准(**** 数值越大,越不准确 ****)

     decimal:如果是小数,则推荐使用decimal

           因为精准,内部原理是以字符串的形式去存

  

 验证数字  

最后:整形类型,其实没有必要指定显示宽度,使用默认的就ok

2、字符、

char:简单粗暴,不够就用空格凑够固定长度存放起来,浪费空间,但是存储速度快
(牺牲空间,提高速度)
varchar(你有几个就存几个):精准,计算出待存放数据的长度,节省空间,存取速度慢
(牺牲速度,提高效率)
复制代码

  1.-----------------

  create table t6(name char(4));
  insert into t6 values('alexsb');
  insert into t6 values('欧德博爱');
  insert into abc values('艾利克斯a');


2.-------------
create table t7(x char(5),y varchar(5)); insert into t7 values('sff','aaaaa'); select char_length(x),char_length(y) from t7; 查看字符长度 set sql_mode='pad_char_to_full_length'; #打回原形 insert into t7 values('你好啊','好好好!');#utf-8里面一个汉字代表三个字节,那'你好啊'就代表九个,
                          #加上两个空格就是11个字节 select length(x),length(y) from t7; 查看字节长度
复制代码

  查看字符的长度

 

查看字节的长度

3、日期

作用:存储用户注册时间,文章发布时间,员工入职时间,出生时间,过期时间等

有下面几种类型:

datatime:2017-09-06 10:30:22
data:2017-09-06
time:10:30:22
year:2017
timeatamp:和datatime是一样的,就是支持的范围datatime的大

复制代码
---------------验证4:日期类型-------
create table stu(
id int,
name char(5),
born_data date,
born_year year,
reg_time datetime,
class_time time
);

insert into stu values(1,'ao',now(),now(),now(),now());
insert into stu values(1,'xiao','2017-09-06','2017','2017-09-06 10:39:00','08:30:00');

#了解
insert into stu values(1,'alex','2017-09-06',2017,'2017-09-06 10:39:00','08:30:00');
insert into stu values(1,'alex','2017/09/06',2017,'2017-09-06 10:39:00','08:30:00'); 没有-的可以不用加引号
insert into stu values(1,'alex','20170906',2017,'20170906103900','083000'); 也可以吧符号取了连写



============注意啦,注意啦,注意啦===========
1. 单独插入时间时,需要以字符串的形式,按照对应的格式插入
2. 插入年份时,尽量使用4位值
3. 插入两位年份时,<=69,以20开头,比如50,  结果2050      
                >=70,以19开头,比如71,结果1971
MariaDB [db1]> create table t12(y year);
MariaDB [db1]> insert into t12 values  
    -> (50),
    -> (71);
MariaDB [db1]> select * from t12;
+------+
| y    |
+------+
| 2050 |
| 1971 |
+------+
复制代码
 datdatime 和 timestamp的区别

4、枚举与集合

字段的值只能在给定范围中选择,如单选框,多选框

enum枚举:规定一个范围:这个范围可以有多个,但是为该字段传值时,只能取规定范围内的其中一个
set集合:规定一个范围:这个范围可以有多个,但是为该字段传值时,可以取规定范围内的一个或多个
enum如果你不传值,默认是第一个值,或者为NUll

复制代码
----------枚举和集合-----------
create table stu1(
id int primary key auto_increment,
name char(5),
sex enum('male','female'), #enum 代表枚举类型
hobbies set('eat','play','study','coding') #set 代表集合类型
);
insert into stu1(name,sex,hobbies) values('haiyan','none','dsfdg');
select * from stu1;  #如果设置了sex是枚举类型,就的从设定的里面选其中的一个存
insert into stu1(name,sex,hobbies) values('haiyan','female','play,study');
select * from stu1;  #如果设置了hobbies是集合类型,就得从设定的里面选其中一个或者多个值来存
复制代码

没有按照枚举或集合规定的传值的结果

按照枚举或集合的规定传值的结果

 

 

posted @ 2018-12-10 17:03  萌哥-爱学习  阅读(244)  评论(0编辑  收藏  举报